Commit 3768c7ae authored by Staś Kycia's avatar Staś Kycia
Browse files

full permission managment

parent 7033263e
Loading
Loading
Loading
Loading
+8 −3
Changes for elections/admin.py: 8 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -29,9 +29,10 @@ class ElectionContributorInline(admin.TabularInline):
                return
            elif form.instance.user_id == request.user.id:
                for field_name in form.fields:
                    print(field_name)
                    form.fields[field_name].disabled = True
            # else:
            # form.fields["can_manage_permissions"].disabled = True
            else:
                form.fields["can_manage_permissions"].disabled = True

        formset.form.__init__ = new_init
        return formset
@@ -139,7 +140,11 @@ class ElectionAdmin(admin.ModelAdmin):
        return request.user.is_superuser or request.user == obj.owner

    def has_module_permission(self, request):
        return ElectionContributor.objects.filter(user_id=request.user.id).exists()
        return request.user.is_authenticated and (
            request.user.is_superuser
            or Election.objects.filter(owner=request.user).exists()
            or ElectionContributor.objects.filter(user_id=request.user.id).exists()
        )


# Register your models here.
+10 −0
Changes for mails/admin.py: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
from django.contrib import admin, messages
from django.core.exceptions import PermissionDenied
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.urls import path, reverse
@@ -33,6 +34,10 @@ class MailAdmin(admin.ModelAdmin):
        return custom_urls + urls

    def retry_failed_view(self, request):
        if not request.user.is_superuser and not request.user.has_perm(
            "mails.can_manage_mails"
        ):
            raise PermissionDenied
        if request.POST.get("post") == "yes":
            send_mail_batch_task.enqueue(base_status=MailStatus.ERROR)
            messages.info(
@@ -58,5 +63,10 @@ class MailAdmin(admin.ModelAdmin):
    def has_change_permission(self, request, obj=None):
        return False

    def has_view_permission(self, request, obj=None):
        return request.user.is_superuser or request.user.has_perm(
            "mails.can_manage_mails"
        )


admin.site.register(Mail, MailAdmin)
+24 −0
Changes for mails/migrations/0003_alter_mail_options.py: 24 added lines, 0 removed lines.
Original line number Diff line number Diff line
# Generated by Django 6.0.3 on 2026-06-09 15:56

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("mails", "0002_alter_mail_options"),
    ]

    operations = [
        migrations.AlterModelOptions(
            name="mail",
            options={
                "default_permissions": "view",
                "permissions": [
                    ("can_send_mails", "Może wysyłać maile"),
                    ("can_retry_mails", "Może ponawiać wysyłanie maili"),
                ],
                "verbose_name": "mail",
                "verbose_name_plural": "maile",
            },
        ),
    ]
+24 −0
Changes for mails/migrations/0004_alter_mail_options.py: 24 added lines, 0 removed lines.
Original line number Diff line number Diff line
# Generated by Django 6.0.3 on 2026-06-09 15:56

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("mails", "0003_alter_mail_options"),
    ]

    operations = [
        migrations.AlterModelOptions(
            name="mail",
            options={
                "default_permissions": ["view"],
                "permissions": [
                    ("can_send_mails", "Może wysyłać maile"),
                    ("can_retry_mails", "Może ponawiać wysyłanie maili"),
                ],
                "verbose_name": "mail",
                "verbose_name_plural": "maile",
            },
        ),
    ]
+21 −0
Changes for mails/migrations/0005_alter_mail_options.py: 21 added lines, 0 removed lines.
Original line number Diff line number Diff line
# Generated by Django 6.0.3 on 2026-06-09 16:07

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("mails", "0004_alter_mail_options"),
    ]

    operations = [
        migrations.AlterModelOptions(
            name="mail",
            options={
                "default_permissions": (),
                "permissions": [("can_send_mails", "Może zarządzać wysyłaniem maili")],
                "verbose_name": "mail",
                "verbose_name_plural": "maile",
            },
        ),
    ]
Loading