Skip to content
Snippets Groups Projects
Verified Commit 60b52a14 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Move data check to own (optional) celery task

parent 07106d1b
No related branches found
No related tags found
1 merge request!92Resolve "Add task for checking plausibility of data"
Pipeline #3778 passed
......@@ -7,6 +7,8 @@ from django.utils.translation import gettext as _
import reversion
from calendarweek import CalendarWeek
from aleksis.core.util.core_helpers import celery_optional
class SolveOption:
name: str = "default"
......@@ -90,6 +92,7 @@ DATA_CHECKS_BY_NAME = {check.name: check for check in DATA_CHECKS}
DATA_CHECKS_CHOICES = [(check.name, check.verbose_name) for check in DATA_CHECKS]
@celery_optional
def check_data():
for check in DATA_CHECKS:
logging.info(f"Run check: {check.verbose_name}")
......
......@@ -10,7 +10,7 @@
{% block page_title %}{% blocktrans %}Data checks{% endblocktrans %}{% endblock %}
{% block content %}
<a class="btn green waves-effect waves-light" href="#">
<a class="btn green waves-effect waves-light" href="{% url "data_check_run" %}">
<i class="material-icons left">refresh</i>
{% trans "Check data again" %}
</a>
......
......@@ -69,6 +69,7 @@ urlpatterns = [
name="delete_excuse_type",
),
path("data_check/", views.DataCheckView.as_view(), name="check_data",),
path("data_check/run/", views.run_data_checks, name="data_check_run",),
path(
"data_check/<int:id_>/<str:solve_option>/",
views.solve_data_check_view,
......
......@@ -23,7 +23,11 @@ from aleksis.apps.chronos.util.date import get_weeks_for_year, week_weekday_to_d
from aleksis.core.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView
from aleksis.core.models import Group, Person, SchoolTerm
from aleksis.core.util import messages
from aleksis.core.util.core_helpers import get_site_preferences, objectgetter_optional
from aleksis.core.util.core_helpers import (
get_site_preferences,
is_celery_enabled,
objectgetter_optional,
)
from .forms import (
ExcuseTypeForm,
......@@ -765,15 +769,25 @@ class DataCheckView(ListView):
template_name = "alsijil/data_check/list.html"
context_object_name = "results"
def get_context_data(self, **kwargs: Any) -> Dict[str, Any]:
context = super().get_context_data(**kwargs)
check_data()
return context
def get_queryset(self) -> QuerySet:
return DataCheckResult.objects.filter(solved=False).order_by("check")
def run_data_checks(request: HttpRequest) -> HttpResponse:
check_data()
if is_celery_enabled():
messages.success(
request,
_(
"The data check has been started. Please note that it may take "
"a while before you are able to fetch the data on this page."
),
)
else:
messages.success(request, _("The data check has been finished."))
return redirect("check_data")
def solve_data_check_view(
request: HttpRequest, id_: int, solve_option: str = "default"
):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment