Commits

Panayiotis Lipiridis  committed 36c82a9

Lazy is in da house

  • Participants
  • Parent commits 1255b29

Comments (0)

Files changed (5)

File main/admin.py

   twitter_consumer_secret = wtf.StringField('Twitter Consumer Secret', filters=[util.strip_filter])
 
 
-@app.route('/_s/admin/config/', endpoint='admin_config_update_service')
-@app.route('/admin/config/', methods=['GET', 'POST'])
 @auth.admin_required
 def admin_config_update():
   config_db = model.Config.get_master_db()

File main/auth.py

 ###############################################################################
 # Sign in stuff
 ###############################################################################
-@app.route('/login/')
-@app.route('/signin/')
 def signin():
   next_url = util.get_next_url()
   if flask.url_for('signin') in next_url:
     )
 
 
-@app.route('/signout/')
 def signout():
   login.logout_user()
   flask.flash(u'You have been signed out.', category='success')
 ###############################################################################
 # Google
 ###############################################################################
-@app.route('/signin/google/')
 def signin_google():
   google_url = users.create_login_url(
       flask.url_for('google_authorized', next=util.get_next_url())
   return flask.redirect(google_url)
 
 
-@app.route('/_s/callback/google/authorized/')
 def google_authorized():
   google_user = users.get_current_user()
   if google_user is None:
   )
 
 
-@app.route('/_s/callback/twitter/oauth-authorized/')
 @twitter.authorized_handler
 def twitter_authorized(resp):
   if resp is None:
   return flask.session.get('oauth_token')
 
 
-@app.route('/signin/twitter/')
 def signin_twitter():
   flask.session.pop('oauth_token', None)
   try:
   )
 
 
-@app.route('/_s/callback/facebook/oauth-authorized/')
 @facebook.authorized_handler
 def facebook_authorized(resp):
   if resp is None:
   return flask.session.get('oauth_token')
 
 
-@app.route('/signin/facebook/')
 def signin_facebook():
   return facebook.authorize(callback=flask.url_for('facebook_authorized',
       next=util.get_next_url(),

File main/main.py

 app.jinja_env.globals.update(update_query_argument=util.update_query_argument)
 
 
-import admin
 import auth
-import user
+import urls
 
 
 if config.DEVELOPMENT:
 ###############################################################################
 # Main page
 ###############################################################################
-@app.route('/')
 def welcome():
   return flask.render_template('welcome.html', html_class='welcome')
 
 ###############################################################################
 # Sitemap stuff
 ###############################################################################
-@app.route('/sitemap.xml')
 def sitemap():
   response = flask.make_response(flask.render_template(
       'sitemap.xml',
     )
 
 
-@app.route('/_s/profile/', endpoint='profile_service')
-@app.route('/profile/', methods=['GET', 'POST'])
 @auth.login_required
 def profile():
   user_db = auth.current_user_db()
     )
 
 
-@app.route('/feedback/', methods=['GET', 'POST'])
 def feedback():
   if not config.CONFIG_DB.feedback_email:
     return flask.abort(418)

File main/urls.py

+# -*- coding: utf-8 -*-
+
+import werkzeug
+
+from main import app
+
+
+##############################################################################
+# Helpers
+##############################################################################
+class LazyView(object):
+  def __init__(self, import_name):
+    self.__module__, self.__name__ = import_name.rsplit('.', 1)
+    self.import_name = import_name
+
+  @werkzeug.cached_property
+  def view(self):
+    return werkzeug.import_string(self.import_name)
+
+  def __call__(self, *args, **kwargs):
+    return self.view(*args, **kwargs)
+
+
+def url(rule, import_name, **options):
+  app.add_url_rule(rule, view_func=LazyView(import_name), **options)
+
+
+##############################################################################
+# Da Rules!
+##############################################################################
+url('/', 'main.welcome')
+
+url('/sitemap.xml', 'main.sitemap')
+
+url('/profile/', 'main.profile', methods=['GET', 'POST'])
+url('/_s/profile/', 'main.profile', endpoint='profile_service')
+
+url('/feedback/', 'main.feedback', methods=['GET', 'POST'])
+
+##############################################################################
+# Auth
+##############################################################################
+url('/signin/', 'auth.signin')
+url('/signout/', 'auth.signout')
+
+url('/signin/google/', 'auth.signin_google')
+url('/_s/callback/google/authorized/', 'auth.google_authorized')
+
+url('/signin/twitter/', 'auth.signin_twitter')
+url('/_s/callback/twitter/oauth-authorized/', 'auth.twitter_authorized')
+
+url('/signin/facebook/', 'auth.signin_facebook')
+url('/_s/callback/facebook/oauth-authorized/', 'auth.facebook_authorized')
+
+##############################################################################
+# Admin
+##############################################################################
+url('/admin/config/', 'admin.admin_config_update', methods=['GET', 'POST'], )
+url('/_s/admin/config/', 'admin.admin_config_update', endpoint='admin_config_update_service')
+
+##############################################################################
+# User
+##############################################################################
+url('/user/', 'user.user_list')
+url('/_s/user/', 'user.user_list', endpoint='user_list_service')
+url('/user/<int:user_id>/update/', 'user.user_update', methods=['GET', 'POST'])
+url('/_s/user/delete/', 'user.user_delete_service', methods=['DELETE'])
+url('/user/merge/', 'user.user_merge', methods=['GET', 'POST'])
+url('/_s/user/merge/', 'user.user_merge', endpoint='user_merge_service')

File main/user.py

 import model
 import util
 
-from main import app
-
 
 ###############################################################################
 # User List
 ###############################################################################
-@app.route('/_s/user/', endpoint='user_list_service')
-@app.route('/user/')
 @auth.admin_required
 def user_list():
   user_dbs, more_cursor = util.retrieve_dbs(
     UserUpdateForm._permission_choices.add(permission)
 
 
-@app.route('/user/<int:user_id>/update/', methods=['GET', 'POST'])
 @auth.admin_required
 def user_update(user_id):
   user_db = model.User.get_by_id(user_id)
 ###############################################################################
 # User Delete
 ###############################################################################
-@app.route('/_s/user/delete/', methods=['DELETE'])
 @auth.admin_required
 def user_delete_service():
   user_keys = util.param('user_keys', list)
     )
 
 
-@app.route('/_s/user/merge/')
-@app.route('/user/merge/', methods=['GET', 'POST'])
 @auth.admin_required
 def user_merge():
   user_keys = util.param('user_keys', list)