Loading elections/admin.py +8 −3 Changes for elections/admin.py: 8 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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. Loading mails/admin.py +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 Loading Loading @@ -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( Loading @@ -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) mails/migrations/0003_alter_mail_options.py 0 → 100644 +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", }, ), ] mails/migrations/0004_alter_mail_options.py 0 → 100644 +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", }, ), ] mails/migrations/0005_alter_mail_options.py 0 → 100644 +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
elections/admin.py +8 −3 Changes for elections/admin.py: 8 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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. Loading
mails/admin.py +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 Loading Loading @@ -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( Loading @@ -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)
mails/migrations/0003_alter_mail_options.py 0 → 100644 +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", }, ), ]
mails/migrations/0004_alter_mail_options.py 0 → 100644 +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", }, ), ]
mails/migrations/0005_alter_mail_options.py 0 → 100644 +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", }, ), ]