Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detect Decorator in Python

In python, is it possible to detect if there is a decorator on another function?

Specifically, I'm trying (in django) to write some middleware that will detect if the view being processed has been wrapped in the @login_required decorator.

class SomeMiddleware(object):

    def process_view(self, request, view_func, view_args, view_kwargs):
        if has_decorator(view_func):
            print "this view was decorated"

What I'm trying to fill in is the "has_decorator" portion....

Is this possible?

like image 620
Brant Avatar asked Dec 06 '25 02:12

Brant


1 Answers

Just some quick fooling around in the shell shows that the func_closure attribute on a function is empty on undecorated functions, but contains data in decorated functions. Not 100% sure this is true all the time, but maybe this works out for you.

like image 165
ojii Avatar answered Dec 08 '25 14:12

ojii