Hello,

I want to share this little snippet :

# MODEL

# Statistics of utilisation
db.define_table('usage_statistics',
    Field('time_stamp','datetime', default=request.now),
    Field('client_ip','string', default=request.client),
    Field('user_id', 'reference auth_user', default=auth.user and 
auth.user.id),
    Field('request_controller','string', default=request.controller),
    Field('request_function','string', default=request.function),
    Field('request_extension','string', default=request.extension),
    Field('request_ajax','string', default=request.ajax),
    Field('request_args','string', default=request.args),
    Field('request_vars','string', default=request.vars),
    Field('request_view','string', default=request.view),
    Field('request_http_user_agent','string', 
default=request.env.http_user_agent),
    Field('request_language','string', 
default=request.env.http_accept_language),
    Field('description', 'text'),
    migrate=False,
    )

# CONTROLLER

def select():
    """
    Display log event into usage_statistics table.
    """
    db.usage_statistics.id.readable = False
    table = SQLFORM.grid(db.usage_statistics, 
orderby=~db.usage_statistics.time_stamp, ui='jquery-ui', formstyle = 
'divs',)
    return dict(table=table)

# VIEWS

# Just put these two lines in ALL your views or only the views you want to 
log and you can log what your users do!!

{{db.usage_statistics.insert()}}
{{db.commit()}}

*Only thing I didn't figured out yet is what the best way to log delete 
event... I thought about that :*

# Not tested and pseudo code
def myeventlogcall(form)
    if form.delete:
        db.usage_statistics.insert()
        db.commit()

def update_functions():
...
     form.process(ondelete=myeventlogcall)
...

But, it makes things complicated if case there is already ondelete in an 
update_function...

Any suggestion is welcome.

Thanks

Richard

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to