Thanks Fred! I tried to look through your code and understand what's going
on -- but I'm still at a loss. I'm guessing I need to look at the Django
source to see what should be returned when you hit a URL and what is passed.
The wrapper is confusing me and I've seen that in Django code as well. I'm
going to go out on a limb and say it's probably not as easy as I hoped,
haha.

On Tue, Oct 11, 2011 at 4:42 PM, Sells, Fred
<fred.se...@adventistcare.org>wrote:

> I'm no expert but this is what I built to log all user actions -- warts
> and all
>
> def decorate(func):
>    ##################print 'Decorating %s...' % func.__name__
>    def wrapped( *args, **kwargs):
>        request = args[0]
>        if len(args)>1: command=str(args[1])
>        else: command = ''
>        ipaddr = request.META['REMOTE_ADDR']
>        user = request.session.get('user', None)
>        if user: userid = user.userid
>        else: userid = '?'
>        qs =  extract_querystring_from_request(request)
>        parameters = Parameters(**qs)
>        resid = parameters.pop('resid', '')
>        assessmentid = parameters.pop('id', 0)
>        facility = parameters.pop('facility','')
>        modified = func.__name__ in ("setvalues", "setraw", "create",
> 'editcaas')
> ###        print func.__name__, 'zzzzzzzzzzzzzzzzzzzzz', modified, qs
>        modified = modified or (func.__name__=='command' and
> command!='print')
>        fieldnames = parameters.values().keys()
>        for signature in SIGNATURE_FIELDS:
>            if signature in fieldnames: command='signit'
>        if (not facility) and resid:
>            facility = resid[:2]
>        option = str(parameters)[:110]
>        action = '%s:%s' % (func.__name__, command)
> ###        print  "\n\n\n\ncalled wrapped function with ", (action,
> option, str(parameters))
>        record = models.HipaaLog.objects.create(Version=K.VERSION,
> userid=userid,
>                                                Action=action,
> Options=option,
>                                                #StartTime =
> datetime.datetime.now(),
>
> AssessmentId=assessmentid, ResidentId=resid,
>                                                Modified = modified,
>                                                IpAddress = ipaddr,
> Facility=facility)
>        #print record.Modified, record.Action, 'record'
>        results = func( *args, **kwargs)
>        #record.StopTime = datetime.datetime.now()
>        #record.save()
>        return results
>    ############################print 'done'
>    return wrapped
>
> --------------------------------
> @decorate
> def command(request, *args, **kwargs):
>        ...
>
> -----Original Message-----
> From: django-users@googlegroups.com
> [mailto:django-users@googlegroups.com] On Behalf Of Kurtis
> Sent: Tuesday, October 11, 2011 12:03 PM
> To: Django users
> Subject: Sample Custom Decorator
>
> Hey Guys,
>
> Would anyone be willing to show me an example of a very simple and
> dumb decorator for views? I've been trying to read the existing
> decorators and play with a couple of snippets but I'm having a lot of
> trouble with two aspects -- grabbing the User Instance and Redirecting
> somewhere besides Login (without making it look like a hack).
>
> Here's some ugly pseudo-code for what I'm trying to accomplish...
>
> # Custom Decorator
> def my_decorator(function = None)
>
>    # Grab Data
>    request = how_do_i_get_this?
>    user = request.user
>
>    # Perform Logic, Redirect or Continue Normally
>    if user.foo():
>        redirect to '/foo' URL
>    else
>        display requested view?
>
>
> # Decorated TemplateView
> url(r'^$', my_decorator(TemplateView.as_view(template_name =
> 'bar.html'))),
>
> Thanks!
>
> --
> You received this message because you are subscribed to the Google
> Groups "Django users" group.
> To post to this group, send email to django-users@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-users@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to