Commit c4a3ee59 authored by Staś Kycia's avatar Staś Kycia
Browse files

added card printing, fixed election permissions and regenerated all migrations

parent a83d8afe
Loading
Loading
Loading
Loading
+23 −18
Changes for archive/migrations/0001_initial.py: 23 added lines, 18 removed lines.
Original line number Diff line number Diff line
# Generated by Django 6.0.3 on 2026-04-15 17:35
# Generated by Django 6.0.3 on 2026-06-14 21:48

from django.db import migrations


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ("voters", "0001_initial"),
        ('voters', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name="ArchivedGroup",
            fields=[],
            name='ArchivedGroup',
            fields=[
            ],
            options={
                "verbose_name": "zarchiwizowana klasa",
                "verbose_name_plural": "zarchiwizowane klasy",
                "proxy": True,
                "indexes": [],
                "constraints": [],
                'verbose_name': 'zarchiwizowana klasa',
                'verbose_name_plural': 'zarchiwizowane klasy',
                'proxy': True,
                'default_permissions': ('view',),
                'indexes': [],
                'constraints': [],
            },
            bases=("voters.group",),
            bases=('voters.group',),
        ),
        migrations.CreateModel(
            name="ArchivedVoter",
            fields=[],
            name='ArchivedVoter',
            fields=[
            ],
            options={
                "verbose_name": "zarchiwizowany wyborca",
                "verbose_name_plural": "zarchiwizowani wyborcy",
                "proxy": True,
                "indexes": [],
                "constraints": [],
                'verbose_name': 'zarchiwizowany wyborca',
                'verbose_name_plural': 'zarchiwizowani wyborcy',
                'proxy': True,
                'default_permissions': ('view',),
                'indexes': [],
                'constraints': [],
            },
            bases=("voters.voter",),
            bases=('voters.voter',),
        ),
    ]
+0 −20
Changes for archive/migrations/0002_alter_archivedgroup_options.py: 0 added lines, 20 removed lines.
Original line number Diff line number Diff line
# Generated by Django 6.0.3 on 2026-06-08 15:50

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("archive", "0001_initial"),
    ]

    operations = [
        migrations.AlterModelOptions(
            name="archivedgroup",
            options={
                "default_permissions": (),
                "verbose_name": "zarchiwizowana klasa",
                "verbose_name_plural": "zarchiwizowane klasy",
            },
        ),
    ]
+0 −28
Changes for archive/migrations/0003_alter_archivedgroup_options_and_more.py: 0 added lines, 28 removed lines.
Original line number Diff line number Diff line
# Generated by Django 6.0.3 on 2026-06-08 16:03

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("archive", "0002_alter_archivedgroup_options"),
    ]

    operations = [
        migrations.AlterModelOptions(
            name="archivedgroup",
            options={
                "default_permissions": "view",
                "verbose_name": "zarchiwizowana klasa",
                "verbose_name_plural": "zarchiwizowane klasy",
            },
        ),
        migrations.AlterModelOptions(
            name="archivedvoter",
            options={
                "default_permissions": "view",
                "verbose_name": "zarchiwizowany wyborca",
                "verbose_name_plural": "zarchiwizowani wyborcy",
            },
        ),
    ]
+0 −28
Changes for archive/migrations/0004_alter_archivedgroup_options_and_more.py: 0 added lines, 28 removed lines.
Original line number Diff line number Diff line
# Generated by Django 6.0.3 on 2026-06-08 16:23

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("archive", "0003_alter_archivedgroup_options_and_more"),
    ]

    operations = [
        migrations.AlterModelOptions(
            name="archivedgroup",
            options={
                "default_permissions": ("view",),
                "verbose_name": "zarchiwizowana klasa",
                "verbose_name_plural": "zarchiwizowane klasy",
            },
        ),
        migrations.AlterModelOptions(
            name="archivedvoter",
            options={
                "default_permissions": ("view",),
                "verbose_name": "zarchiwizowany wyborca",
                "verbose_name_plural": "zarchiwizowani wyborcy",
            },
        ),
    ]
+17 −2
Changes for elections/admin.py: 17 added lines, 2 removed lines.
Original line number Diff line number Diff line
from django.contrib import admin
from django.db.models import Q
from django_admin_action_forms import action_with_form, AdminActionFormsMixin
from django_no_queryset_admin_actions import optional_queryset_action, NoQuerySetAdminActionsMixin
from django.shortcuts import render, get_object_or_404
from django.urls import reverse

from .models import Election, ElectionContributor, Option


class OptionInline(admin.TabularInline):
    model = Option
    exclude = ["votes"]
@@ -67,8 +70,9 @@ class ElectionContributorInline(admin.TabularInline):
    def has_view_permission(self, request, obj=None):
        return True

from .forms import CardPrintoutActionForm

class ElectionAdmin(admin.ModelAdmin):
class ElectionAdmin(NoQuerySetAdminActionsMixin, AdminActionFormsMixin):
    list_display = ["name", "start_date", "end_date", "is_active_status"]
    ordering = ["-created_at", "-updated_at"]

@@ -93,6 +97,14 @@ class ElectionAdmin(admin.ModelAdmin):
    def is_active_status(self, obj):
        return obj.is_active
    
    @action_with_form(CardPrintoutActionForm, description="Wydrukuj karty papierowe", permissions=["print_cards"])
    @optional_queryset_action()
    def card_printout(self, request, queryset, data):
        election = get_object_or_404(Election, pk=data["election"].id)
        return render(request, "printouts/card.html", context={"election":election, "iterateover":range(data["number_of_cards"]), "go_back_url":reverse("admin:elections_election_changelist")})
    
    actions = ["card_printout"]

    def save_model(self, request, obj, form, change):
        if not change:
            obj.owner = request.user
@@ -144,8 +156,11 @@ class ElectionAdmin(admin.ModelAdmin):
            request.user.is_superuser
            or Election.objects.filter(owner=request.user).exists()
            or ElectionContributor.objects.filter(user_id=request.user.id).exists()
            or self.has_add_permission(request)
        )

    def has_print_cards_permission(self, request):
        return request.user.has_perm("elections.can_print_cards")

# Register your models here.
admin.site.register(Election, ElectionAdmin)
Loading