Data shredder optimizations (#3429)

Co-authored-by: Martin Gross <gross@rami.io>
This commit is contained in:
Raphael Michel
2023-06-23 16:56:19 +02:00
committed by GitHub
parent 84dbd93d9e
commit b415393ccf
8 changed files with 343 additions and 77 deletions

View File

@@ -470,6 +470,8 @@
<div class="progress-bar progress-bar-success">
</div>
</div>
<div class="steps">
</div>
</div>
</div>
</div>

View File

@@ -8,7 +8,7 @@
{% trans "Data shredder" %}
</h1>
<form action="{% url "control:event.shredder.shred" event=request.event.slug organizer=request.organizer.slug %}"
method="post" class="form-horizontal" data-asynctask>
method="post" class="form-horizontal" data-asynctask data-asynctask-long>
{% csrf_token %}
<fieldset>
{% if download_on_shred %}
@@ -55,6 +55,12 @@
</fieldset>
{% endif %}
<input type="hidden" name="file" value="{{ file.pk }}">
<div class="alert alert-info">
{% blocktrans trimmed %}
Depending on the amount of data in your event, the following step may take a while to complete.
We will inform you via email once it has been completed.
{% endblocktrans %}
</div>
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save">
{% trans "Continue" %}

View File

@@ -37,10 +37,11 @@ import logging
from collections import OrderedDict
from zipfile import ZipFile
from django.shortcuts import get_object_or_404
from django.contrib import messages
from django.shortcuts import get_object_or_404, redirect
from django.urls import reverse
from django.utils.functional import cached_property
from django.utils.translation import gettext_lazy as _
from django.utils.translation import get_language, gettext_lazy as _
from django.views import View
from django.views.generic import TemplateView
@@ -62,6 +63,16 @@ class ShredderMixin:
sorted(self.request.event.get_data_shredders().items(), key=lambda s: s[1].verbose_name)
)
def dispatch(self, request, *args, **kwargs):
try:
return super().dispatch(request, *args, **kwargs)
except ShredError as e:
messages.error(request, str(e))
return redirect(reverse('control:event.shredder.start', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug
}))
class StartShredView(RecentAuthenticationRequiredMixin, EventPermissionRequiredMixin, ShredderMixin, TemplateView):
permission = 'can_change_orders'
@@ -167,4 +178,5 @@ class ShredDoView(RecentAuthenticationRequiredMixin, EventPermissionRequiredMixi
if request.event.slug != request.POST.get("slug"):
return self.error(ShredError(_("The slug you entered was not correct.")))
return self.do(self.request.event.id, request.POST.get("file"), request.POST.get("confirm_code"))
return self.do(self.request.event.id, request.POST.get("file"), request.POST.get("confirm_code"),
self.request.user.pk, get_language())