selectors.py
branchtls-sprint
changeset 752 c0506c4a1e6c
parent 737 2494e85319fe
child 759 e044f28372bd
equal deleted inserted replaced
751:ec16f43107d3 752:c0506c4a1e6c
    65 def lltrace(selector):
    65 def lltrace(selector):
    66     # don't wrap selectors if not in development mode
    66     # don't wrap selectors if not in development mode
    67     if CubicWebConfiguration.mode == 'installed':
    67     if CubicWebConfiguration.mode == 'installed':
    68         return selector
    68         return selector
    69     def traced(cls, *args, **kwargs):
    69     def traced(cls, *args, **kwargs):
    70         selname = cls.__class__.__name__
    70         # /!\ lltrace decorates pure function or __call__ method, this
    71         oid = args[0].id
    71         #     means argument order may be different
       
    72         if isinstance(cls, Selector):
       
    73             selname = cls.__class__.__name__
       
    74             vobj = args[0]
       
    75         else:
       
    76             selname = selector.__name__
       
    77             vobj = cls
       
    78         oid = vobj.id
    72         ret = selector(cls, *args, **kwargs)
    79         ret = selector(cls, *args, **kwargs)
    73         if TRACED_OIDS == 'all' or oid in TRACED_OIDS:
    80         if TRACED_OIDS == 'all' or oid in TRACED_OIDS:
    74             #SELECTOR_LOGGER.warning('selector %s returned %s for %s', selname, ret, cls)
    81             #SELECTOR_LOGGER.warning('selector %s returned %s for %s', selname, ret, cls)
    75             print 'selector %s returned %s for %s' % (selname, ret, args[0])
    82             print 'selector %s returned %s for %s' % (selname, ret, vobj)
    76         return ret
    83         return ret
    77     traced.__name__ = selector.__name__
    84     traced.__name__ = selector.__name__
    78     return traced
    85     return traced
    79 
    86 
    80 class traced_selection(object):
    87 class traced_selection(object):