Test suite runs and passes!
[zzz-floof.git] / floof / config / routing.py
index 603afd0..7a0227a 100644 (file)
@@ -22,8 +22,8 @@ def make_map():
     require_POST = dict(conditions={'method': ['POST']})
 
     # get rid of trailing slashes
     require_POST = dict(conditions={'method': ['POST']})
 
     # get rid of trailing slashes
-    map.redirect('/*(url)/', '/{url}',
-                 _redirect_code='301 Moved Permanently')
+    map.redirect('/*(url)/', '/{url}',
+                 _redirect_code='301 Moved Permanently')
 
 
     # The ErrorController route (handles 404/500 error pages); it should
 
 
     # The ErrorController route (handles 404/500 error pages); it should
@@ -42,29 +42,42 @@ def make_map():
         sub.connect('register',         '/account/register',        action='register')
         sub.connect('register_finish',  '/account/register_finish', action='register_finish', **require_POST)
 
         sub.connect('register',         '/account/register',        action='register')
         sub.connect('register_finish',  '/account/register_finish', action='register_finish', **require_POST)
 
-    # with map.submapper()
-    map.connect('/users', controller='users', action='list')
-    map.connect('user_page', '/users/{name}', controller='users', action='view')
+    # Specific user stuff
+    with map.submapper(controller='users') as sub:
+        sub.connect(                '/users',               action='list')
+        sub.connect('user_page',    '/users/{name}',        action='view')
+    with map.submapper(controller='user_settings') as sub:
+        sub.connect(                '/users/{name}/settings/relationships/toggle',
+                                                            action='rel_toggle', **require_POST)
 
     # Comments
     with map.submapper(controller='comments') as sub:
         sub.connect('/*owner_url/comments', action='thread')
 
     # Comments
     with map.submapper(controller='comments') as sub:
         sub.connect('/*owner_url/comments', action='thread')
-        sub.connect('/*owner_url/comments/{id}', action='thread')
         sub.connect('/*owner_url/comments/reply', action='reply')
         sub.connect('/*owner_url/comments/reply', action='reply')
-        sub.connect('/*owner_url/comments/{id}/reply', action='reply')
         sub.connect('/*owner_url/comments/reply_done', action='reply_done', **require_POST)
         sub.connect('/*owner_url/comments/reply_done', action='reply_done', **require_POST)
+        sub.connect('/*owner_url/comments/{id}', action='thread')
+        sub.connect('/*owner_url/comments/{id}/reply', action='reply')
         sub.connect('/*owner_url/comments/{id}/reply_done', action='reply_done', **require_POST)
 
         sub.connect('/*owner_url/comments/{id}/reply_done', action='reply_done', **require_POST)
 
+    # Art
     with map.submapper(controller="art") as sub:
         sub.connect('new_art',      '/art/new',         action="new")
         sub.connect('create_art',   '/art/create',      action="create")
         sub.connect('rate_art',     '/art/{id}/rate',   action="rate")
         sub.connect('show_art',     '/art/{id}',        action="show")
 
     with map.submapper(controller="art") as sub:
         sub.connect('new_art',      '/art/new',         action="new")
         sub.connect('create_art',   '/art/create',      action="create")
         sub.connect('rate_art',     '/art/{id}/rate',   action="rate")
         sub.connect('show_art',     '/art/{id}',        action="show")
 
+    # Some art pages pertain to a specific user, but still belong in the art
+    # controller
+    map.connect('/users/{name}/watchstream', controller='art', action='watchstream')
+
     with map.submapper(controller='tag') as sub:
         sub.connect('delete_tag', '/art/{art_id}/tag/{id}')
         sub.connect('create_tag', '/art/{art_id}/tag')
 
     with map.submapper(controller='tag') as sub:
         sub.connect('delete_tag', '/art/{art_id}/tag/{id}')
         sub.connect('create_tag', '/art/{art_id}/tag')
 
+    with map.submapper(controller='relation') as sub:
+        sub.connect('create_relation', '/art/{art_id}/relations/{kind}/create', action="create")
+        # TODO: conditions: kind = by|for|of|character?
+
     map.resource('tag','tags', controller="tag",
         parent_resource=dict(member_name='art', collection_name='art'))
         # Yeah, parent resources are specified kinda dumb-ly.  Would be better if you could pass in the
     map.resource('tag','tags', controller="tag",
         parent_resource=dict(member_name='art', collection_name='art'))
         # Yeah, parent resources are specified kinda dumb-ly.  Would be better if you could pass in the