def test_from_function(self): self.assertEqual(route_from_function(lambda: None), '') self.assertEqual(route_from_function(lambda self: None), '') self.assertEqual(route_from_function(lambda self, request: None), '') self.assertEqual(route_from_function(lambda foo: None), '^/(?P<foo>[^/]+)') self.assertEqual(route_from_function(lambda request, foo: None), '^/(?P<foo>[^/]+)') self.assertEqual(route_from_function(lambda self, request, foo: None), '^/(?P<foo>[^/]+)') self.assertEqual(route_from_function(lambda foo, bar: None), '^/(?P<foo>[^/]+)/(?P<bar>[^/]+)') self.assertEqual(route_from_function(lambda request, foo, bar: None), '^/(?P<foo>[^/]+)/(?P<bar>[^/]+)') self.assertEqual(route_from_function(lambda self, request, foo, bar: None), '^/(?P<foo>[^/]+)/(?P<bar>[^/]+)')
def dec(fn): if url is not None: realurl = routes.route_from_string(url) else: realurl = routes.route_from_function(fn) fn._commis_api = { 'name': fn.__name__, 'url': realurl, 'method': method, 'admin': admin, } return fn
def dec(fn): # Return modified function wrapping fn and possibly doing work before # it runs. @wraps(fn) def inner(*args, **kwargs): if validator is not None: validator(*args, **kwargs) return fn(*args, **kwargs) # Decorate returned function with API metadata if url is not None: realurl = routes.route_from_string(url) else: realurl = routes.route_from_function(fn) inner._commis_api = { 'name': fn.__name__, 'url': realurl, 'method': method, 'admin': admin, } return inner