def APIURLSpec(url, *args, **kwargs): l = [] template = string.Template(url) for version in API_VERSIONS: l.append(template.substitute(apiver=version)) l = sorted(list(set(l))) if len(l) == 1: return URLSpec(l[0], *args, **kwargs) return [URLSpec(x, *args, **kwargs) for x in l]
def test__get_tuple_from_route(): """Test shissen.api_doc_gen._get_tuple_from_route""" pattern = r"/$" handler_class = object expected_output = (pattern, handler_class) # Test 2-tuple assert _get_tuple_from_route((pattern, handler_class)) == expected_output # Test 3-tuple (with the extra arg as kwarg(s) assert _get_tuple_from_route( (pattern, handler_class, None)) == expected_output # Test URLSpec assert _get_tuple_from_route(URLSpec(pattern, handler_class)) == expected_output # Test invalid type with pytest.raises(TypeError): _get_tuple_from_route([]) # Test malformed tuple (i.e., smaller length than 2) with pytest.raises(AssertionError): _get_tuple_from_route(("foobar", ))
def test_reverse(self): spec = URLSpec("/page", None) self.assertEqual(spec.reverse(), "/page") self.assertRaises( URLReverseError, lambda: spec.reverse(42) ) self.assertEqual( spec.reverse(name="val ue"), "/page?name=val+ue") self.assertEqual( spec.reverse(name="value", val2=42), "/page?name=value&val2=42") spec = URLSpec("/page/(d+)", None) self.assertRaises( URLReverseError, lambda: spec.reverse() ) self.assertEqual(spec.reverse(1), "/page/1") self.assertEqual( spec.reverse(15, name="test"), "/page/15?name=test") spec = URLSpec("/page/(d+)/(/d+)/(/d+)", None) self.assertRaises( URLReverseError, lambda: spec.reverse() ) self.assertRaises( URLReverseError, lambda: spec.reverse(1) ) self.assertRaises( URLReverseError, lambda: spec.reverse(1, 2) ) self.assertEqual(spec.reverse(11, 22, 33), "/page/11/22/33") self.assertEqual( spec.reverse(11, 22, 33, hello="world"), "/page/11/22/33?hello=world")
from cyclone.web import URLSpec from cyclone_server import views from cyclone_server import api def munge_route_list(rl): new_l = [] for item in rl: if isinstance(item, list): new_l.extend(munge_route_list(item)) else: new_l.append(item) return new_l routes = munge_route_list([ URLSpec(r'/', views.IndexHandler), URLSpec(r'/api/latest/tweets', api.TweetHandler) ])
from cyclone.web import StaticFileHandler def munge_route_list(rl): new_l = [] for item in rl: if isinstance(item, list): new_l.extend(munge_route_list(item)) else: new_l.append(item) return new_l routes = munge_route_list([ #VIEWS URLSpec(r'/', views.IndexHandler, name='home'), URLSpec(r'/main', views.DeadlinesHandler, name='main'), URLSpec(r'/ta_create_assignment', views.newAssignmentHandler), URLSpec(r'/statistics/([0-9]+)', views.taStats), URLSpec(r'/mainta', views.DeadlinesTAHandler, name='mainta'), URLSpec(r'/assignment', views.AssignmentHandler, name='assignment'), URLSpec(r'/assignment/([0-9]+)', views.AssignmentHandler, name='assignment'), URLSpec(r'/evaluateAssignment/([0-9]+)', views.EvaluateHandler), URLSpec(r'/logout', views.LogoutHandler), #APIs URLSpec(r'/login', api.LoginHandler), URLSpec(r'/courses', api.CoursesHandler), URLSpec(r'/deadlines', api.DeadlinesHandler),
from cyclone.web import URLSpec from cyclone_server import views from cyclone_server import api def munge_route_list(rl): new_l = [] for item in rl: if isinstance(item, list): new_l.extend(munge_route_list(item)) else: new_l.append(item) return new_l routes = munge_route_list([ URLSpec(r'/', views.IndexHandler), URLSpec(r'/home', views.HomeViewHandler), URLSpec(r'/document/([0-9]+)', views.DocumentViewHandler), URLSpec(r'/search/(.*)', views.SearchViewHandler), URLSpec(r'/api/latest/sample', api.SampleHandler) ])
from cyclone.web import URLSpec from cyclone_server import views from cyclone_server import api def munge_route_list(rl): new_l = [] for item in rl: if isinstance(item, list): new_l.extend(munge_route_list(item)) else: new_l.append(item) return new_l routes = munge_route_list([ URLSpec(r'/', views.IndexHandler, name='home'), URLSpec(r'/stats_home', views.StatsHomeHandler, name='stats_home'), URLSpec(r'/stats/(.*)', views.StatsHandler, name="stats"), URLSpec(r'/api/latest/path/(.*)', api.PathHandler), URLSpec(r'/api/latest/getlayout/(.*)', api.LayoutHandler), URLSpec(r'/api/latest/genlayout/(.*)', api.LayoutGenerator), URLSpec(r'/api/latest/rmlayout', api.LayoutKiller), ])
for version in API_VERSIONS: l.append(template.substitute(apiver=version)) l = sorted(list(set(l))) if len(l) == 1: return URLSpec(l[0], *args, **kwargs) return [URLSpec(x, *args, **kwargs) for x in l] def munge_route_list(rl): new_l = [] for item in rl: if isinstance(item, list): new_l.extend(munge_route_list(item)) else: new_l.append(item) return new_l routes = munge_route_list([ URLSpec(r'/', views.IndexHandler, name='home'), #Pan recognition URLSpec(r'/cam', views.SampleWebcamHandler, name="sample_cam"), APIURLSpec(r'/api/$apiver/camupload', api.CamUploadHandler), #scheme URLSpec(r'/add_scheme', views.Scheme, name='add_scheme'), URLSpec(r'/update_scheme/([0-9]+)', views.Scheme, name='update_scheme'), APIURLSpec(r'/api/add_scheme', api.UploadScheme), #Search APIURLSpec(r'/api/$apiver/search', api.SearchHandler) ])