コード例 #1
0
    class ChangeSubscriptionForm(Form):
        choices = Field.radio(
            choices=[subscribed, unsubscribed],
            initial=unsubscribed if subscription is None else subscribed,
            display_name='')
        passive = Field.boolean(
            display_name='Show only when unread',
            initial=subscription
            and subscription.subscription_type == 'passive')
        identifier = Field.hidden(initial=identifier_)

        class Meta:
            title = 'Change subscription'

            def actions__submit__post_handler(form, **_):
                subscription_type = 'passive' if form.fields.passive.value else 'active'
                if form.fields.choices.value == subscribed:
                    if subscription is None:
                        Subscription.objects.create(
                            user=request.user,
                            identifier=identifier_,
                            subscription_type=subscription_type,
                        )
                    else:
                        subscription.subscription_type = subscription_type
                        subscription.save()
                else:
                    if subscription:
                        subscription.delete()
                    else:
                        pass  # already unsubscribed
コード例 #2
0
def create_issue(request, project_name):
    project = Project.objects.get(name=project_name)

    def post_handler(form, **kwargs):
        result = create_object__post_handler(form=form, **kwargs)
        if form.is_valid():
            form.instance.comments = Room.objects.create(
                name=f'Issue comments {project}/{form.instance}',
                custom_data=f'issues/{project.pk}/{form.instance.pk}')
            form.instance.save()
        return result

    return Form.create(
        auto__model=Issue,
        auto__exclude=['time_created', 'last_changed_time', 'comments'],
        fields__project=Field.hidden(editable=False, initial=project),
        fields__last_changed_by=Field.hidden(editable=False,
                                             initial=request.user),
        actions__submit__post_handler=post_handler,
    )
コード例 #3
0
ファイル: views.py プロジェクト: boxed/forum
    class LoginForm(Form):
        username = Field()
        password = Field.password()
        next = Field.hidden(initial=request.GET.get('next', '/'))

        class Meta:
            title = 'Login'

            def actions__submit__post_handler(form, **_):
                if 'user' in form.extra:
                    login(request, form.extra.user)
                    return HttpResponseRedirect(form.fields['next'].value
                                                or '/')

        def is_valid(self):
            if not super(LoginForm, self).is_valid():
                return False

            username = self.fields['username'].value
            password = self.fields['password'].value

            if username and password:
                try:
                    user = User.objects.get(username=username)
                except User.DoesNotExist:
                    return False
                self.extra.user = user
                if authenticate(request=request,
                                username=username,
                                password=password):
                    return True

                try:
                    username = User.objects.get(username=username)
                    if b64encode(sha1(password.encode()).digest()).decode(
                    ) == user.password:
                        user.set_password(password)  # upgrade password
                        user.save()
                    authenticate(request=request,
                                 username=username,
                                 password=password)
                except User.DoesNotExist:
                    pass

            return False