Skip to content
Snippets Groups Projects
forms.py 2.9 KiB
Newer Older
from django import forms
from django.contrib.auth.models import Group, User
from django.utils.translation import gettext as _

from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Layout, Fieldset, ButtonHolder, Submit


class UserForm(forms.ModelForm):
    group = forms.ModelChoiceField(queryset=Group.objects.all(), label=_("Grupa"))

    class Meta:
        model = User
        fields = [
            'first_name',
            'last_name',
            'username',
            'email',
            'group',
            'is_active',
        ]

    def __init__(self, *args, instance, **kwargs):
        super().__init__(*args, instance=instance, **kwargs)
        self.helper = FormHelper()
        self.helper.layout = Layout(
            Fieldset('', 'first_name', 'last_name', 'username', 'email', 'group', 'is_active'),
            ButtonHolder(
                Submit('submit', _('Zapisz'), css_class='btn btn-sm btn-success'),
                HTML('''<a class="btn btn-sm btn-light" href="{% url 'users:user_list' %}">''' + _('Wróć') + '</a>'),
            ),
        )
        for field in ['first_name', 'last_name', 'email']:
            self.fields[field].required = True
        if instance.pk:
            self.initial['group'] = instance.groups.first()

    def save(self, commit=True):
        instance = super().save(commit=commit)
        instance.groups.set([self.cleaned_data['group']])
        return instance


class UserProfileForm(forms.ModelForm):
    class Meta:
        model = User
        fields = [
            'first_name',
            'last_name',
            'email',
        ]

    def __init__(self, *args, instance, **kwargs):
        super().__init__(*args, instance=instance, **kwargs)
        self.helper = FormHelper()
        self.helper.layout = Layout(
            Fieldset('', 'first_name', 'last_name', 'email'),
            ButtonHolder(
                Submit('submit', _('Zapisz'), css_class='btn btn-sm btn-success'),
                HTML('''<a class="btn btn-sm btn-light" href="{% url 'dash' %}">''' + _('Wróć') + '</a>'),
            ),
        )
        for field in ['first_name', 'last_name', 'email']:
            self.fields[field].required = True


login_form_helper = FormHelper()
login_form_helper.layout = Layout(
    Fieldset('', 'username', 'password'),
    ButtonHolder(
        Submit('submit', _('Zaloguj się'), css_class='btn btn-sm btn-success'),
        HTML(
            '''<a class="btn btn-sm btn-light" href="{% url 'users:password_reset' %}">'''
            f"{_('Nie pamiętam hasła')}"
            '</a>'
        ),
    ),
)

password_reset_form_helper = FormHelper()
password_reset_form_helper.layout = Layout(
    Fieldset('', 'email'),
    ButtonHolder(
        Submit('submit', _('Zresetuj hasło'), css_class='btn btn-sm btn-success'),
        HTML('''<a class="btn btn-sm btn-light" href="{% url 'users:login' %}">''' f"{_('Wróć')}" '</a>'),
    )
)