コード例 #1
0
ファイル: app.py プロジェクト: meawoppl/h
    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)
コード例 #2
0
    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()
            },
        }
コード例 #3
0
ファイル: app.py プロジェクト: gergely-ujvari/h
    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)
コード例 #4
0
ファイル: schemas.py プロジェクト: martinq/h
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())