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 _ ...@@ -7,6 +7,8 @@ from django.utils.translation import gettext as _
import reversion import reversion
from calendarweek import CalendarWeek from calendarweek import CalendarWeek
from aleksis.core.util.core_helpers import celery_optional
class SolveOption: class SolveOption:
name: str = "default" name: str = "default"
...@@ -90,6 +92,7 @@ DATA_CHECKS_BY_NAME = {check.name: check for check in DATA_CHECKS} ...@@ -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] DATA_CHECKS_CHOICES = [(check.name, check.verbose_name) for check in DATA_CHECKS]
@celery_optional
def check_data(): def check_data():
for check in DATA_CHECKS: for check in DATA_CHECKS:
logging.info(f"Run check: {check.verbose_name}") logging.info(f"Run check: {check.verbose_name}")
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
{% block page_title %}{% blocktrans %}Data checks{% endblocktrans %}{% endblock %} {% block page_title %}{% blocktrans %}Data checks{% endblocktrans %}{% endblock %}
{% block content %} {% 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> <i class="material-icons left">refresh</i>
{% trans "Check data again" %} {% trans "Check data again" %}
</a> </a>
......
...@@ -69,6 +69,7 @@ urlpatterns = [ ...@@ -69,6 +69,7 @@ urlpatterns = [
name="delete_excuse_type", name="delete_excuse_type",
), ),
path("data_check/", views.DataCheckView.as_view(), name="check_data",), path("data_check/", views.DataCheckView.as_view(), name="check_data",),
path("data_check/run/", views.run_data_checks, name="data_check_run",),
path( path(
"data_check/<int:id_>/<str:solve_option>/", "data_check/<int:id_>/<str:solve_option>/",
views.solve_data_check_view, views.solve_data_check_view,
......
...@@ -23,7 +23,11 @@ from aleksis.apps.chronos.util.date import get_weeks_for_year, week_weekday_to_d ...@@ -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.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView
from aleksis.core.models import Group, Person, SchoolTerm from aleksis.core.models import Group, Person, SchoolTerm
from aleksis.core.util import messages 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 ( from .forms import (
ExcuseTypeForm, ExcuseTypeForm,
...@@ -765,15 +769,25 @@ class DataCheckView(ListView): ...@@ -765,15 +769,25 @@ class DataCheckView(ListView):
template_name = "alsijil/data_check/list.html" template_name = "alsijil/data_check/list.html"
context_object_name = "results" 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: def get_queryset(self) -> QuerySet:
return DataCheckResult.objects.filter(solved=False).order_by("check") 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( def solve_data_check_view(
request: HttpRequest, id_: int, solve_option: str = "default" 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