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

search voters by name and surname together + minior fixes

parent 8405edec
Loading
Loading
Loading
Loading
+9 −0
Changes for hybrid/admin.py: 9 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ from django.contrib import admin
from django.utils.html import format_html
from django.urls import path
from django.db.models import Value, CharField
from django.db.models.functions import Concat
from django.shortcuts import render
from django.utils.decorators import method_decorator

@@ -44,6 +45,14 @@ class HybridElectionVoterAdmin(admin.ModelAdmin):
        
        return super().changelist_view(request, extra_context)
    
    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.display(description='Karta do głosowania')
    def issue_card(self, obj):
        if obj.election_id == '':
+17 −0
Changes for hybrid/migrations/0003_alter_hybridelectionvoter_options.py: 17 added lines, 0 removed lines.
Original line number Diff line number Diff line
# Generated by Django 6.0.3 on 2026-03-22 13:31

from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('hybrid', '0002_alter_hybridelectionvoter_options'),
    ]

    operations = [
        migrations.AlterModelOptions(
            name='hybridelectionvoter',
            options={'verbose_name': 'Wydaj karty', 'verbose_name_plural': 'Wydawanie kart'},
        ),
    ]
+1 −1
Changes for mails/templates/mails/voting_link_mail.html: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -17,5 +17,5 @@
</p>

<p style="font-size: 0.9em; color: #888;">
    Niniejsza wiadomość została wysłana do {{ voter.first_name }} {{voter.last_name}}({{ voter_username }}).
    Niniejsza wiadomość została wysłana do {{ voter.first_name }} {{voter.last_name}} ({{ voter.username }}).
</p>
 No newline at end of file
+1 −1
Changes for mails/templates/mails/voting_link_mail.txt: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -4,4 +4,4 @@ Aby zagłosować w wyborach, wklej poniższy adres do przeglądarki:

Uwaga! Link ten jest tajny. Nie udostępniaj go nikomu ani nie pokazuj, aby nikt nie zagłosował za Ciebie.

Niniejsza wiadomość została wysłana do {{ voter.first_name }} {{voter.last_name}}({{ voter_username }}).
 No newline at end of file
Niniejsza wiadomość została wysłana do {{ voter.first_name }} {{voter.last_name}} ({{ voter.username }}).
 No newline at end of file
+10 −1
Changes for voters/admin.py: 10 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -3,7 +3,8 @@ from django.urls import reverse
from django.utils.html import format_html
from django.contrib import messages
from django.shortcuts import render
from django.db.models import F
from django.db.models import F, Value
from django.db.models.functions import Concat

from .models import Group, Voter
from .tasks import generate_voter_tokens_task
@@ -56,6 +57,14 @@ class VoterAdmin(admin.ModelAdmin):
    search_fields = ['first_name', 'last_name', 'username']
    list_filter = ['group', TokenStatusFilter, MailStatusFilter]
    
    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.display(description='Token wygenerowany', boolean=True)
    def get_token_status(self, obj):
        return obj.token_generated