diff --git a/member/forms.py b/member/forms.py index 3330178..813961a 100644 --- a/member/forms.py +++ b/member/forms.py @@ -13,12 +13,19 @@ class PersonForm(forms.ModelForm): class AccountForm(forms.ModelForm): - password=forms.CharField(widget=forms.PasswordInput()) - confirm_password=forms.CharField(widget=forms.PasswordInput()) + password=forms.CharField(widget=forms.PasswordInput(), required=False) + confirm_password=forms.CharField(widget=forms.PasswordInput(), required=False) class Meta: model = UserAccount - fields = ['username', 'password'] + fields = ['username', 'password', 'role'] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + if self.instance.pk is None: + self.fields['password'].required=True + self.fields['confirm_password'].required=True def clean(self): cleaned_data = super(AccountForm, self).clean() @@ -27,4 +34,14 @@ class AccountForm(forms.ModelForm): if passwordStr != confirm_passwordStr: raise forms.ValidateError("password and confirm_password does not match") + + def save(self, commit=True): + user = super().save(commit=False) + pw = self.cleaned_data.get("password") + if pw: + user.set_password(pw) + if commit: + user.save() + return user + diff --git a/member/migrations/0003_alter_useraccount_role.py b/member/migrations/0003_alter_useraccount_role.py new file mode 100644 index 0000000..a4378ba --- /dev/null +++ b/member/migrations/0003_alter_useraccount_role.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.1 on 2025-07-18 15:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('member', '0002_alter_useraccount_options_alter_useraccount_managers_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='useraccount', + name='role', + field=models.CharField(choices=[('mitglied', 'Mitglied'), ('geraetewart', 'Gerätewart'), ('kommandant', 'Kommandant'), ('admin', 'Administrator'), ('superadmin', 'Superadministrator')], default='mitglied', max_length=50), + ), + ] diff --git a/member/models/UserAccount.py b/member/models/UserAccount.py index 15e5778..2db8534 100644 --- a/member/models/UserAccount.py +++ b/member/models/UserAccount.py @@ -11,7 +11,9 @@ class UserAccount(AbstractUser): ('geraetewart', 'Gerätewart'), ('kommandant', 'Kommandant'), ('admin', 'Administrator'), - ]) + ('superadmin', 'Superadministrator'), + ], default='mitglied') + def __str__(self): return f"{self.benutzername} ({self.rolle})" diff --git a/member/templates/account_form.html b/member/templates/account_form.html index 442f49f..1026de5 100644 --- a/member/templates/account_form.html +++ b/member/templates/account_form.html @@ -16,6 +16,10 @@ {{form.confirm_password}} +
+ + {{form.role}} +
Abbrechen