def reset(self): request = self.request schema = schemas.ActivationCodeSchema().bind(request=self.request) form = deform.Form(schema, buttons=('Log in',)) form.formid = 'reset' form.use_ajax = True form.ajax_options = self.ajax_options appstruct = None if request.POST.get('__formid__', '') == 'reset': controls = request.POST.items() print controls try: appstruct = form.validate(controls) except deform.ValidationFailure as e: result = {'form': e.render()} else: code = appstruct['code'] activation = self.Activation.get_by_code(request, code) if activation: user = self.User.get_by_activation(request, activation) if user: user.set_password(appstruct['Password']) self.db.add(user) self.db.delete(activation) return authenticated(request, user.pk) form.error = colander.Invalid( form.schema, _('This activation code is not valid.') ) lm = request.layout_manager lm.layout.add_form(form) if appstruct: result = {'form': form.render(appstruct)} else: result = {'form': form.render()} return dict(reset=result)
def activate(self): request = self.request form = self.activate_form appstruct = None try: appstruct = form.validate(request.POST.items()) except deform.ValidationFailure as e: return { 'status': 'failure', 'reason': messages.INVALID_FORM, 'form': { 'activate': e.render() }, } else: code = appstruct['code'] activation = self.Activation.get_by_code(request, code) if activation: user = self.User.get_by_activation(request, activation) if user: user.set_password(appstruct['Password']) self.db.add(user) self.db.delete(activation) else: form.error = colander.Invalid( form.schema, _('This activation code is not valid.') ) return { 'status': 'failure', 'reason': messages.INVALID_FORM, 'form': { 'activate': form.render(appstruct) }, } return { 'status': 'okay', 'form': { 'activate': form.render() }, }
def reset(self): request = self.request schema = schemas.ActivationCodeSchema().bind(request=self.request) form = deform.Form(schema, buttons=("Log in",)) form.formid = "reset" form.use_ajax = True form.ajax_options = self.ajax_options appstruct = None if request.POST.get("__formid__", "") == "reset": controls = request.POST.items() print controls try: appstruct = form.validate(controls) except deform.ValidationFailure as e: result = {"form": e.render()} else: code = appstruct["code"] activation = self.Activation.get_by_code(request, code) if activation: user = self.User.get_by_activation(request, activation) if user: user.set_password(appstruct["Password"]) self.db.add(user) self.db.delete(activation) return authenticated(request, user.pk) form.error = colander.Invalid(form.schema, _("This activation code is not valid.")) lm = request.layout_manager lm.layout.add_form(form) if appstruct: result = {"form": form.render(appstruct)} else: result = {"form": form.render()} return dict(reset=result)
class ActivateSchema(CSRFSchema): code = colander.SchemaNode(colander.String(), title="Security Code") password = colander.SchemaNode(colander.String(), title=_('New Password'), validator=colander.Length(min=2), widget=deform.widget.PasswordWidget())