def signup(request): FORM_TITLE = _('Signup') localizer = get_localizer(request) main = get_renderer(BASE_TEMPLATE).implementation() publisher = request.rel_db_session.query(models.Publisher.name_slug, models.Publisher.name).all() signup_form = SignupForm.get_form(localizer,publisher) if request.method == 'POST': controls = request.POST.items() try: appstruct = signup_form.validate(controls) except deform.ValidationFailure, e: return {'content':e.render(), 'main':main, 'form_stuff':{'form_title':FORM_TITLE}, 'user':get_logged_user(request), } del(appstruct['__LOCALE__']) appstruct['publisher'] = request.rel_db_session.query(models.Publisher).filter_by(name_slug=appstruct['publisher']).one() #FIXME! so bizarre! try: group = request.rel_db_session.query(users.Group).filter_by(name=appstruct['group']).one() except NoResultFound: group = users.Group(name=appstruct['group']) request.rel_db_session.add(group) request.rel_db_session.commit() finally: group_name = appstruct['group'] del(appstruct['group']) if group_name == 'editor': user = models.Editor(group=group,**appstruct) elif group_name == 'admin': del(appstruct['publisher']) user = models.Admin(group=group,**appstruct) registration_profile = users.RegistrationProfile(user) RegistrationProfileManager.clean_expired(request) request.rel_db_session.add(user) request.rel_db_session.add(registration_profile) try: request.rel_db_session.commit() except IntegrityError: request.rel_db_session.rollback() request.session.flash(_('This username already exists.')) return {'content':signup_form.render(appstruct), 'main':main, 'form_stuff':{'form_title':FORM_TITLE}, 'user':get_logged_user(request), } else: RegistrationProfileManager.send_activation_mail(user, request) request.session.flash(_('Successfully added.')) return HTTPFound(location=request.route_url('staff.panel'))
def signup(request): FORM_TITLE = _('Signup') localizer = get_localizer(request) main = get_renderer(BASE_TEMPLATE).implementation() publisher = request.rel_db_session.query(models.Publisher.name_slug, models.Publisher.name).all() signup_form = SignupForm.get_form(localizer,publisher) if request.method == 'POST': if 'btn_cancel' in request.POST: return HTTPFound(location=request.route_path('users.list')) controls = request.POST.items() try: appstruct = signup_form.validate(controls) except deform.ValidationFailure, e: return {'content':e.render(), 'main':main, 'general_stuff':{'form_title':FORM_TITLE, 'breadcrumb': [ (_('Dashboard'), request.route_path('staff.panel')), (_('Manage Users'), request.route_path('users.list')), (_('New User'), None), ] }, 'user':get_logged_user(request), } del(appstruct['__LOCALE__']) appstruct['publisher'] = request.rel_db_session.query(models.Publisher).filter_by(name_slug=appstruct['publisher']).one() #FIXME! so bizarre! try: group = request.rel_db_session.query(users.Group).filter_by(name=appstruct['group']).one() except NoResultFound: group = users.Group(name=appstruct['group']) request.rel_db_session.add(group) request.rel_db_session.commit() finally: group_name = appstruct['group'] del(appstruct['group']) if group_name == 'editor': user = models.Editor(group=group,**appstruct) elif group_name == 'admin': del(appstruct['publisher']) user = models.Admin(group=group,**appstruct) registration_profile = users.RegistrationProfile(user) RegistrationProfileManager.clean_expired(request) request.rel_db_session.add(user) request.rel_db_session.add(registration_profile) try: request.rel_db_session.commit() except IntegrityError: request.rel_db_session.rollback() request.session.flash(_('This username already exists.')) return {'content':signup_form.render(appstruct), 'main':main, 'general_stuff':{'form_title':FORM_TITLE, 'breadcrumb': [ (_('Dashboard'), request.route_path('staff.panel')), (_('Manage Users'), request.route_path('users.list')), (_('New User'), None), ] }, 'user':get_logged_user(request), } else: RegistrationProfileManager.send_activation_mail(user, request) request.session.flash(_('Successfully added.')) return HTTPFound(location=request.route_path('staff.panel'))