Commit 449ed23b authored by Staś Kycia's avatar Staś Kycia
Browse files

mail task fix and restricting unverified voters from voting

parent 6b77fb50
Loading
Loading
Loading
Loading
+7 −5
Changes for mails/admin.py: 7 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -5,13 +5,18 @@ from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.urls import reverse

from .models import Mail
from .models import Mail, MailStatus
from .tasks import send_mail_batch_task

class MailAdmin(admin.ModelAdmin):
    change_list_template = 'admin/change_list_mail.html'
    list_display = ['voter', 'status', 'error_message', 'created_at', 'last_try_date']
    ordering = ['-created_at']
    actions = ['mark_as_failed'] 

    @admin.action(description="Oznacz jako nieudane")
    def mark_as_failed(self, request, queryset):
        queryset.update(status=MailStatus.ERROR)
    
    list_filter = ['status']
    
@@ -30,7 +35,7 @@ class MailAdmin(admin.ModelAdmin):
    
    def retry_failed_view(self, request):
        if request.POST.get('post') == 'yes':
            send_mail_batch_task.enqueue(base_status='ERROR')
            send_mail_batch_task.enqueue(base_status=MailStatus.ERROR)
            messages.info(request, 'Rozpoczęto wysyłanie ponowne wysyłanie niedostarczonych wiadomości.')
            return HttpResponseRedirect(reverse('admin:mails_mail_changelist'))
        
@@ -49,7 +54,4 @@ class MailAdmin(admin.ModelAdmin):
    def has_change_permission(self, request, obj=None):
        return False

    def has_add_permission(self, request):
        return False

admin.site.register(Mail, MailAdmin)
 No newline at end of file
+6 −0
Changes for mails/tasks.py: 6 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -69,6 +69,12 @@ def send_mail_batch_task(base_status=MailStatus.PENDING):
            queued_email.save()
            continue
        
        if queued_email.voter.is_verified == False:
            queued_email.status = MailStatus.ERROR
            queued_email.error_message = 'Wyborca nie jest zweryfikowany'
            queued_email.save()
            continue
          
        try:
            sending_status = email.send(fail_silently=False)
            if sending_status:
+4 −0
Changes for vote/views.py: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ def votings(request, token):
        return HttpResponse('Zly token')
    if voter is None:
        return HttpResponse('Zly token')
    if not voter.is_verified:
        return HttpResponse('Twoje konto nie jest zweryfikowane!')
    
    now = timezone.now()
        
@@ -37,6 +39,8 @@ def vote(request, alias, token):
        return HttpResponse('Zly token')
    if voter is None:
        return HttpResponse('Zly token')
    if not voter.is_verified:
        return HttpResponse('Twoje konto nie jest zweryfikowane!')

    if Participation.objects.filter(voter=voter, election=election).exists():
        messages.error(request, 'Już oddałeś głos w tym głosowaniu')
+2 −2
Changes for voters/admin.py: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -52,10 +52,10 @@ class VoterInline(admin.TabularInline):
    exclude = ['token', 'token_generation_date', 'last_email_date', 'is_archived']

class VoterAdmin(admin.ModelAdmin):
    list_display = ['name', 'email', 'group', 'get_token_status', 'get_last_token_mail_status', 'vote_as']
    list_display = ['name', 'email', 'group', 'get_token_status', 'get_last_token_mail_status', 'is_verified', 'vote_as']
    exclude = ['token', 'token_generation_date', 'last_email_date', 'is_archived']
    search_fields = ['name', 'email']
    list_filter = ['group', TokenStatusFilter, MailStatusFilter]
    list_filter = ['group', TokenStatusFilter, MailStatusFilter, 'is_verified']
    
    def get_search_results(self, request, queryset, search_term):
        queryset, use_distinct = super().get_search_results(request, queryset, search_term)