Skip to content

Instantly share code, notes, and snippets.

@batok
Created December 26, 2008 19:55
Show Gist options
  • Save batok/40116 to your computer and use it in GitHub Desktop.
Save batok/40116 to your computer and use it in GitHub Desktop.
"""Main Controller"""
from dic23.lib.base import BaseController
from tg import expose, flash, require
from pylons.i18n import ugettext as _
#from tg import redirect, validate
from dic23.model import DBSession, metadata
from catwalk.tg2 import Catwalk
from repoze.what import predicates
from dic23.controllers.secc import Secc
from sprox.formbase import AddRecordForm
from formencode import Schema
from formencode.validators import FieldsMatch
from tw.forms import PasswordField, TextField
from dic23.model import User
from pylons import c
form_validator = Schema(chained_validators=(FieldsMatch('password', 'verify_password', messages={'invalidNoMatch': 'Passwords do not match'}),))
class RegistrationForm(AddRecordForm):
__model__ = User
__require_fields__ = ['password', 'user_name', 'email_address']
__omit_fields__ = ['_password', 'groups', 'created', 'user_id']
__field_order__ = ['user_name', 'email_address', 'display_name', 'password', 'verify_password']
__base_validator__ = form_validator
email_address = TextField
display_name = TextField
verify_password = PasswordField('verify_password')
registration_form = RegistrationForm(DBSession)
class SecuredCatwalk(Catwalk):
allow_only = predicates.has_permission('manage',
msg=_('Only for people with the "manage" permission'))
class RootController(BaseController):
admin = SecuredCatwalk(DBSession, metadata)
secc = Secc()
@expose('dic23.templates.index')
def index(self):
return dict(page='index')
@expose('dic23.templates.about')
def about(self):
return dict(page='about')
@expose('dic23.templates.authentication')
def auth(self):
return dict(page='auth')
@expose('dic23.templates.index')
@require(predicates.has_permission('manage', msg=_('Only for managers')))
def manage_permission_only(self, **kw):
return dict(page='managers stuff')
@expose('dic23.templates.index')
@require(predicates.is_user('editor', msg=_('Only for the editor')))
def editor_user_only(self, **kw):
return dict(page='editor stuff')
@expose('dic23.templates.login')
def login(self, **kw):
came_from = kw.get('came_from', '/')
return dict(page='login', header=lambda *arg: None,
footer=lambda *arg: None, came_from=came_from)
@expose('dic23.templates.adduser')
@require(predicates.has_permission('manage', msg=_('Only for managers')))
def adduser(self, **kw):
c.foo = registration_form
return dict(page='managers stuff')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment