diff --git a/claims/forms.py b/claims/forms.py index 1d9cab2..087f4c9 100644 --- a/claims/forms.py +++ b/claims/forms.py @@ -117,6 +117,16 @@ class UserManagementForm(forms.Form): is_staff = forms.BooleanField(required=False, initial=True, label=_("Administratör (staff)")) grant_view = forms.BooleanField(required=False, initial=True, label=_("Ge behörighet att se utlägg")) grant_change = forms.BooleanField(required=False, initial=True, label=_("Ge behörighet att besluta utlägg")) + grant_edit = forms.BooleanField( + required=False, + initial=False, + label=_("Ge behörighet att redigera utläggsdetaljer"), + ) + grant_pay = forms.BooleanField( + required=False, + initial=False, + label=_("Ge behörighet att markera betalningar"), + ) def clean_username(self): username = self.cleaned_data["username"] @@ -148,6 +158,8 @@ class UserPermissionForm(forms.Form): is_staff = forms.BooleanField(required=False, label=_("Admin/staff")) grant_view = forms.BooleanField(required=False, label=_("Får se utlägg")) grant_change = forms.BooleanField(required=False, label=_("Får besluta utlägg")) + grant_edit = forms.BooleanField(required=False, label=_("Får redigera utlägg")) + grant_pay = forms.BooleanField(required=False, label=_("Får markera betalningar")) class DeleteUserForm(forms.Form): diff --git a/claims/migrations/0008_alter_claim_options_alter_claimlog_action.py b/claims/migrations/0008_alter_claim_options_alter_claimlog_action.py new file mode 100644 index 0000000..dccb400 --- /dev/null +++ b/claims/migrations/0008_alter_claim_options_alter_claimlog_action.py @@ -0,0 +1,22 @@ +# Generated by Django 5.2.8 on 2025-11-11 19:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('claims', '0007_delete_systemsetting_alter_claim_receipt'), + ] + + operations = [ + migrations.AlterModelOptions( + name='claim', + options={'ordering': ['-created_at'], 'permissions': [('mark_claim_paid', 'Can mark claims as paid'), ('edit_claim_details', 'Can edit claim details')]}, + ), + migrations.AlterField( + model_name='claimlog', + name='action', + field=models.CharField(choices=[('created', 'Submitted'), ('status_changed', 'Status changed'), ('marked_paid', 'Marked as paid'), ('project_changed', 'Project changed'), ('details_edited', 'Details edited')], max_length=32), + ), + ] diff --git a/claims/models.py b/claims/models.py index 373a113..b25ece0 100644 --- a/claims/models.py +++ b/claims/models.py @@ -81,6 +81,10 @@ class Claim(models.Model): class Meta: ordering = ["-created_at"] + permissions = [ + ("mark_claim_paid", _("Can mark claims as paid")), + ("edit_claim_details", _("Can edit claim details")), + ] def __str__(self): project = f" [{self.project}]" if self.project else "" diff --git a/claims/templates/claims/dashboard.html b/claims/templates/claims/dashboard.html index f412496..5c56aa8 100644 --- a/claims/templates/claims/dashboard.html +++ b/claims/templates/claims/dashboard.html @@ -135,7 +135,7 @@ {% trans "Ej markerad som betald" %} {% endif %} {% endif %} - {% if can_change and claim.status == 'pending' %} + {% if can_edit_claim and claim.status == 'pending' %} - -

{% trans "Dubbelkolla belopp och kontonummer i panelen innan du bekräftar." %}

+ {% if can_mark_paid %} +
+ {% csrf_token %} + + + +
+

{% trans "Dubbelkolla belopp och kontonummer i panelen innan du bekräftar." %}

+ {% else %} +

+ {% trans "Du saknar behörighet att markera betalningar. Kontakta en administratör." %} +

+ {% endif %} {% elif not payments_enabled %}
@@ -486,7 +492,7 @@ {% block modals %} {{ block.super }} - {% if can_change %} + {% if can_edit_claim %} {% for claim in claims %} {% if claim.status == 'pending' %}