Skip to content
Snippets Groups Projects
forms.py 4.02 KiB
Newer Older
from django import forms
from django.contrib.auth.models import Group, User
from django.urls import reverse_lazy
from django.utils.text import format_lazy
from django.utils.translation import gettext_lazy as _

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

dcz2's avatar
dcz2 committed
from users.models import Note


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(format_lazy('<a class="btn btn-sm btn-light" href="{}">{}</a>', reverse_lazy('users:user_list'), _('Wróć'))),
            ),
        )
        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(format_lazy('<a class="btn btn-sm btn-light" href="{}">{}</a>', reverse_lazy('users:password_change'), _('Zmień swoje hasło'))),
                HTML(format_lazy('<a class="btn btn-sm btn-light" href="{}">{}</a>', reverse_lazy('dash'), _('Wróć'))),
            ),
        )
        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(format_lazy('<a class="btn btn-sm btn-light" href="{}">{}</a>', reverse_lazy('users:password_reset'), _('Nie pamiętam hasł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(format_lazy('<a class="btn btn-sm btn-light" href="{}">{}</a>', reverse_lazy('users:login'), _('Wróć'))),
    )
)

password_change_form_helper = FormHelper()
password_change_form_helper.layout = Layout(
    Fieldset('', 'old_password', 'new_password1', 'new_password2'),
    ButtonHolder(
        Submit('submit', _('Zmień hasło'), css_class='btn btn-sm btn-success'),
        HTML(format_lazy('<a class="btn btn-sm btn-light" href="{}">{}</a>', reverse_lazy('users:user_profile'), _("Wróć"))),
    )
)

password_reset_set_password_form_helper = FormHelper()
password_reset_set_password_form_helper.layout = Layout(
    Fieldset('', 'new_password1', 'new_password2'),
    ButtonHolder(
        Submit('submit', _('Ustaw hasło'), css_class='btn btn-sm btn-success'),
        HTML(format_lazy('<a class="btn btn-sm btn-light" href="{}">{}</a>', reverse_lazy('dash'), _("Wróć"))),
dcz2's avatar
dcz2 committed


class NoteForm(forms.ModelForm):
    class Meta:
        model = Note
        fields = ["note"]