Commit 24c58c6f authored by Staś Kycia's avatar Staś Kycia
Browse files

Added rq_worker admin for development and confirmation pages for token actions

parent 3e2ccac2
Loading
Loading
Loading
Loading
+22 −4
Changes for voters/admin.py: 22 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ from django.contrib import admin
from django.urls import reverse
from django.utils.html import format_html
from django.contrib import messages
from django.shortcuts import render

from .models import Group, Voter
from .tasks import generate_voter_tokens_task
@@ -47,18 +48,35 @@ class VoterAdmin(admin.ModelAdmin):
    
    @admin.action(description="Unieważnij tokeny")
    def invalidate_tokens(modeladmin, request, queryset):   
        if request.POST.get('post') == 'yes':
            queryset.update(token=None)
            return None
        
    # @admin.action(description='Wygeneruj tokeny')
    # def generate_tokens(modeladmin, request, queryset):
    #     for voter in queryset:
    #         voter.generate_token()
        context = admin.site.each_context(request)
        
        context.update({
            'queryset' : queryset, 
            'action_checkbox_name': admin.helpers.ACTION_CHECKBOX_NAME
        })
        
        return render(request, 'admin/invalidate_tokens_confirmation.html', context)
    
    @admin.action(description='Wygeneruj tokeny')
    def generate_tokens(modeladmin, request, queryset):        
        if request.POST.get('post') == 'yes':
            voter_ids = list(queryset.values_list('id', flat=True))
            generate_voter_tokens_task.enqueue(voter_ids)      
            messages.info(request, 'Generowanie tokenów w toku...')
            return None
        
        context = admin.site.each_context(request)
        
        context.update({
            'queryset' : queryset, 
            'action_checkbox_name': admin.helpers.ACTION_CHECKBOX_NAME
        })
        
        return render(request, 'admin/generate_tokens_confirmation.html', context)
        
    actions = [invalidate_tokens, generate_tokens]

+25 −0
Changes for voters/templates/admin/generate_tokens_confirmation.html: 25 added lines, 0 removed lines.
Original line number Diff line number Diff line
{% extends 'admin/base_site.html' %}

{% block content %}
    <div class="delete-confirmation delete-selected-confirmation">
    <h1>Wygenerowanie tokenów</h1>

    <p>Czy na pewno chcesz wygenerować tokeny wszystkim wybranym wyborcom ({{ queryset.count }}). Jeśli któraś z zaznaczonych osób ma wygenerowany token, zostanie on nadpisany i dotychczasowy link straci ważność. Tej operacji nie można cofnąć.</p>

    <form method="post">
        {% csrf_token %}
        <div>

            {% for obj in queryset %}
                <input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk }}">
            {% endfor %}

            <input type="hidden" name="action" value="generate_tokens">
            <input type="hidden" name="post" value="yes">
            <input type="submit" value="Tak, na pewno">
            <a role="button" onclick="window.history.back()" class="button cancel-link">Nie, zabierz mnie stąd</a>
        </div>
    </form>
    <br class="clear">
    </div>
{% endblock %}
 No newline at end of file
+25 −0
Changes for voters/templates/admin/invalidate_tokens_confirmation.html: 25 added lines, 0 removed lines.
Original line number Diff line number Diff line
{% extends 'admin/base_site.html' %}

{% block content %}
    <div class="delete-confirmation delete-selected-confirmation">
    <h1>Unieważnienie tokenów</h1>

    <p>Czy na pewno chcesz unieważnić tokeny wszystkim wybranym wyborcom ({{ queryset.count }}). Ich dotychczasowe linki stracą ważność. Tej operacji nie można cofnąć.</p>

    <form method="post">
        {% csrf_token %}
        <div>

            {% for obj in queryset %}
                <input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk }}">
            {% endfor %}

            <input type="hidden" name="action" value="invalidate_tokens">
            <input type="hidden" name="post" value="yes">
            <input type="submit" value="Tak, na pewno">
            <a role="button" onclick="window.history.back()" class="button cancel-link">Nie, zabierz mnie stąd</a>
        </div>
    </form>
    <br class="clear">
    </div>
{% endblock %}
 No newline at end of file
+1 −0
Changes for wybory/settings.py: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ RQ_QUEUES = {
        "DB": 0,
    }
}
RQ_SHOW_ADMIN_LINK = True

# Application definition

+1 −0
Changes for wybory/urls.py: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -21,4 +21,5 @@ urlpatterns = [
    path('', include('vote.urls')),
    path('', include('stats.urls')),
    path('admin/', admin.site.urls),
    path('django-rq/', include('django_rq.urls'))
]