shaped up routing: enabled explicit mode, and created some named routes
[zzz-floof.git] / floof / config / routing.py
index 3ff8e54..6ec64e4 100644 (file)
@@ -10,16 +10,48 @@ from routes import Mapper
 def make_map():
     """Create, configure and return the routes Mapper"""
     map = Mapper(directory=config['pylons.paths']['controllers'],
-                 always_scan=config['debug'])
+                 always_scan=config['debug'], explicit=True)
     map.minimization = False
+    # explicit = True disables a broken feature called "route memory",
+    # where it adds everything matched in the current request as default variables
+    # for the next one.  This is wrong because it doesn't invalidate things lower down in
+    # the hierarchy when higher up things change.  Rails port failure.
+    # NOTE: this also disables actions defaulting to index, sorry.
+
+    require_POST = dict(conditions={'method': ['POST']})
 
     # The ErrorController route (handles 404/500 error pages); it should
     # likely stay at the top, ensuring it can always be resolved
     map.connect('/error/{action}', controller='error')
     map.connect('/error/{action}/{id}', controller='error')
 
-    # CUSTOM ROUTES HERE
+    map.connect('/', controller='main', action='index')
+
+    # User stuff
+    map.connect('/account/login', controller='account', action='login')
+    map.connect('/account/login_begin', controller='account', action='login_begin', **require_POST)
+    map.connect('/account/login_finish', controller='account', action='login_finish')
+    map.connect('/account/logout', controller='account', action='logout', **require_POST)
+    map.connect('/account/register', controller='account', action='register')
+    map.connect('/account/register_finish', controller='account', action='register_finish', **require_POST)
+
+    map.connect('/users', controller='users', action='list')
+    map.connect('/users/{name}', controller='users', action='view')
+
+    # Art stuff
+    map.connect('/art/new', controller='art', action='new')
+    map.connect('/art/upload', controller='art', action='upload')
+    map.connect('show_art', '/art/{id}', controller='art', action='show')
+    map.connect('/art/{id}/tag', controller='art', action='tag')
+
+    map.connect('/tag/{id}/delete', controller='tag', action='delete')
+
+    map.connect('search', '/search', controller='search', action='index')
+    map.connect('/search/list', controller='search', action='list')
+
 
+    # default routing is back so we can test stuff.
+    # please don't take it away until we have some more core features in.
     map.connect('/{controller}/{action}')
     map.connect('/{controller}/{action}/{id}')