Commit 76a01e53 authored by Staś Kycia's avatar Staś Kycia
Browse files

voters and groups archive

parent 67eb9903
Loading
Loading
Loading
Loading

archive/__init__.py

0 → 100644
+0 −0

Empty file added.

archive/admin.py

0 → 100644
+84 −0
Changes for archive/admin.py: 84 added lines, 0 removed lines.
Original line number Diff line number Diff line
from django.contrib import admin
from django.db.models import F, Value
from django.db.models.functions import Concat
from django.contrib import messages
from django.shortcuts import render

from .models import ArchivedVoter, ArchivedGroup

class ArchivedVoterAdmin(admin.ModelAdmin):
    list_display = ['first_name', 'last_name', 'username', 'group']
    exclude = ['token', 'token_generation_date', 'last_email_date', 'is_archived']
    search_fields = ['first_name', 'last_name', 'username']
    list_filter = ['group']
    
    def get_search_results(self, request, queryset, search_term):
        queryset, use_distinct = super().get_search_results(request, queryset, search_term)
        
        if search_term:
            queryset = queryset.annotate(full_name=Concat('first_name', Value(' '), 'last_name')).filter(full_name__icontains=search_term) | queryset
            
        return queryset, use_distinct
    
    @admin.action(description='Przywróć')
    def restore(modeladmin, request, queryset):
        if request.POST.get('post') == 'yes':
            queryset.update(is_archived=False)
            messages.success(request, 'Wyborcy przywróceni')
            return None
        
        context = admin.site.each_context(request)
        
        context.update({
            'queryset' : queryset, 
            'action_checkbox_name': admin.helpers.ACTION_CHECKBOX_NAME,
            'opts' : modeladmin.model._meta,
            'title' : 'Przywracanie wyborców'
        })
        
        return render(request, 'admin/restore_voters_confirmation.html', context)
    
    actions = [restore]
    
    def has_add_permission(self, request):
        return False
    
    def has_change_permission(self, request, obj = None):
        return False

class ArchivedGroupAdmin(admin.ModelAdmin):
    list_display = ['name', 'get_class_name']
    exclude = ['is_archived']
    
    @admin.display(description='klasa')
    def get_class_name(self, obj):
        return obj.class_name
    
    @admin.action(description='Przywróć')
    def restore(modeladmin, request, queryset):
        if request.POST.get('post') == 'yes':
            queryset.update(is_archived=False)
            messages.success(request, 'Klasy przywrócone')
            return None
        
        context = admin.site.each_context(request)
        
        context.update({
            'queryset' : queryset, 
            'action_checkbox_name': admin.helpers.ACTION_CHECKBOX_NAME,
            'opts' : modeladmin.model._meta,
            'title' : 'Przywracanie klas'
        })
        
        return render(request, 'admin/restore_groups_confirmation.html', context)
    
    actions = [restore]
    
    def has_add_permission(self, request):
        return False
    
    def has_change_permission(self, request, obj = None):
        return False

admin.site.register(ArchivedVoter, ArchivedVoterAdmin)
admin.site.register(ArchivedGroup, ArchivedGroupAdmin)
 No newline at end of file

archive/apps.py

0 → 100644
+6 −0
Changes for archive/apps.py: 6 added lines, 0 removed lines.
Original line number Diff line number Diff line
from django.apps import AppConfig


class ArchiveConfig(AppConfig):
    name = 'archive'
    verbose_name = 'archiwum'
 No newline at end of file
+27 −0
Changes for archive/migrations/0001_initial.py: 27 added lines, 0 removed lines.
Original line number Diff line number Diff line
# Generated by Django 6.0.3 on 2026-03-25 23:36

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('voters', '0006_group_is_archived_voter_is_archived'),
    ]

    operations = [
        migrations.CreateModel(
            name='ArchivedVoter',
            fields=[
                ('voter_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='voters.voter')),
            ],
            options={
                'verbose_name': 'Zarchiwizowany wyborca',
                'verbose_name_plural': 'Zarchiwizowani wyborcy',
            },
            bases=('voters.voter',),
        ),
    ]
+30 −0
Changes for archive/migrations/0002_delete_archivedvoter_archivedvoter.py: 30 added lines, 0 removed lines.
Original line number Diff line number Diff line
# Generated by Django 6.0.3 on 2026-03-25 23:40

from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('archive', '0001_initial'),
        ('voters', '0006_group_is_archived_voter_is_archived'),
    ]

    operations = [
        migrations.DeleteModel(
            name='ArchivedVoter',
        ),
        migrations.CreateModel(
            name='ArchivedVoter',
            fields=[
            ],
            options={
                'verbose_name': 'Zarchiwizowany wyborca',
                'verbose_name_plural': 'Zarchiwizowani wyborcy',
                'proxy': True,
                'indexes': [],
                'constraints': [],
            },
            bases=('voters.voter',),
        ),
    ]
Loading