+from pkg_resources import resource_filename
+
from pylons import c, session
from spline.lib.plugin import PluginBase
+from spline.lib.plugin import PluginBase, PluginLink, Priority
import spline.model as model
import spline.model.meta as meta
-import controllers.accounts
-import model as user_model
+import spline.plugins.users.controllers.accounts
+import spline.plugins.users.controllers.users
+import spline.plugins.users.model
+
+def add_routes_hook(map, *args, **kwargs):
+ """Hook to inject some of our behavior into the routes configuration."""
+ # Login, logout
+ map.connect('/accounts/login', controller='accounts', action='login')
+ map.connect('/accounts/login_begin', controller='accounts', action='login_begin')
+ map.connect('/accounts/login_finish', controller='accounts', action='login_finish')
+ map.connect('/accounts/logout', controller='accounts', action='logout')
+
+ # Self-admin
+ map.connect('/users/{id};{name}/edit', controller='users', action='profile_edit')
+
+ # Public per-user pages
+ map.connect('/users/{id};{name}', controller='users', action='profile')
+ map.connect('/users/{id}', controller='users', action='profile')
def check_userid_hook(action, **params):
"""Hook to see if a user is logged in and, if so, stick a user object in
c.
"""
+ c.user = None
+
if not 'user_id' in session:
return
class UsersPlugin(PluginBase):
def controllers(self):
return dict(
- accounts = controllers.accounts.AccountsController,
+ accounts = spline.plugins.users.controllers.accounts.AccountsController,
+ users = spline.plugins.users.controllers.users.UsersController,
)
def model(self):
- return [user_model.User, user_model.OpenID]
+ return [
+ spline.plugins.users.model.User,
+ spline.plugins.users.model.OpenID,
+ ]
+
+ def template_dirs(self):
+ return [
+ (resource_filename(__name__, 'templates'), Priority.NORMAL)
+ ]
def hooks(self):
return [
- ('before_controller', 1, check_userid_hook),
+ ('routes_mapping', Priority.NORMAL, add_routes_hook),
+ ('before_controller', Priority.VERY_FIRST, check_userid_hook),
+ ]
+
+ def widgets(self):
+ return [
+ ('page_header', Priority.NORMAL, 'widgets/user_state.mako'),
]