diff --git a/aleksis/apps/paweljong/forms.py b/aleksis/apps/paweljong/forms.py index a8af08bfb30a673596611ecf5624477a87ae04ba..0467098aa66c6b4e4373535543e4831c54fd38d6 100644 --- a/aleksis/apps/paweljong/forms.py +++ b/aleksis/apps/paweljong/forms.py @@ -507,11 +507,13 @@ class PersonGroupFormPerson(forms.Form): class EventCheckpointForm(forms.Form): class Media: - js = ("https://unpkg.com/html5-qrcode", "js/paweljong/qrscanner.js", "js/paweljong/checkpoint.js") + js = ( + "https://unpkg.com/html5-qrcode", + "js/paweljong/qrscanner.js", + "js/paweljong/checkpoint.js", + ) - layout = Layout( - "comment", "use_latlon", "username" - ) + layout = Layout("comment", "use_latlon", "username") comment = forms.CharField( required=True, diff --git a/aleksis/apps/paweljong/models.py b/aleksis/apps/paweljong/models.py index c8c5104fe991ef83dde45eed5fa03d469b3ac877..8769288981d9b66d619c972d285d9fff92c0097f 100644 --- a/aleksis/apps/paweljong/models.py +++ b/aleksis/apps/paweljong/models.py @@ -51,9 +51,12 @@ class InfoMailing(ExtensibleModel): sender = models.EmailField(verbose_name=_("Sender"), blank=True) send_to_person = models.BooleanField(verbose_name=_("Send to registered person"), default=True) send_to_guardians = models.BooleanField(verbose_name=_("Send to guardians"), default=False) - send_to_retracted = models.BooleanField(verbose_name=_("Send to participants who retracted"), default=False) - send_to_not_checked_in = models.BooleanField(verbose_name=_("Send to participants who did not check in"), default=True) - + send_to_retracted = models.BooleanField( + verbose_name=_("Send to participants who retracted"), default=False + ) + send_to_not_checked_in = models.BooleanField( + verbose_name=_("Send to participants who did not check in"), default=True + ) def __str__(self) -> str: return self.subject @@ -418,13 +421,28 @@ class EventRegistration(ExtensibleModel): class Checkpoint(ExtensibleModel): - event = models.ForeignKey(Event, verbose_name=_("Related event"), related_name="checkpoints", on_delete=models.CASCADE) - person = models.ForeignKey(Person, verbose_name=_("Checked person"), related_name="event_checkpoints", on_delete=models.CASCADE) - checked_by = models.ForeignKey(Person, verbose_name=_("Checked by person"), related_name="event_checkpoints_created", on_delete=models.CASCADE) - + event = models.ForeignKey( + Event, verbose_name=_("Related event"), related_name="checkpoints", on_delete=models.CASCADE + ) + person = models.ForeignKey( + Person, + verbose_name=_("Checked person"), + related_name="event_checkpoints", + on_delete=models.CASCADE, + ) + checked_by = models.ForeignKey( + Person, + verbose_name=_("Checked by person"), + related_name="event_checkpoints_created", + on_delete=models.CASCADE, + ) comment = models.CharField(max_length=60, verbose_name=_("Comment")) timestamp = models.DateTimeField(verbose_name=_("Date and time of check"), auto_now_add=True) - lat = models.DecimalField(max_digits=10, decimal_places=8, verbose_name=_("Latitude of check"), blank=True, null=True) - lon = models.DecimalField(max_digits=11, decimal_places=8, verbose_name=_("Longitude of check"), blank=True, null=True) + lat = models.DecimalField( + max_digits=10, decimal_places=8, verbose_name=_("Latitude of check"), blank=True, null=True + ) + lon = models.DecimalField( + max_digits=11, decimal_places=8, verbose_name=_("Longitude of check"), blank=True, null=True + ) diff --git a/aleksis/apps/paweljong/urls.py b/aleksis/apps/paweljong/urls.py index 41a35aed54c83d50575f98273421f351c9b75b5b..1a2fa410042fe76654bb22e9a140d73adc585b57 100644 --- a/aleksis/apps/paweljong/urls.py +++ b/aleksis/apps/paweljong/urls.py @@ -50,7 +50,11 @@ urlpatterns = [ ), path("event/<slug:slug>", views.EventFullView.as_view(), name="event_by_name"), path("event/<slug:slug>/detail", views.EventDetailView.as_view(), name="event_detail_by_name"), - path("event/<slug:slug>/checkpoint", views.EventCheckpointView.as_view(), name="event_by_name_checkpoint"), + path( + "event/<slug:slug>/checkpoint", + views.EventCheckpointView.as_view(), + name="event_by_name_checkpoint", + ), path( "event/<slug:slug>/start", views.RegisterEventStart.as_view(), diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py index d30369ffcce96b4e3246a1e49dda963a4e09590b..41fe4f1cc8dd65bdf78e7c3691f9f1e00e485f35 100644 --- a/aleksis/apps/paweljong/views.py +++ b/aleksis/apps/paweljong/views.py @@ -44,7 +44,15 @@ from .forms import ( RegistrationNotificationForm, RegistrationStatesForm, ) -from .models import Checkpoint, Event, EventRegistration, InfoMailing, RegistrationState, Terms, Voucher +from .models import ( + Checkpoint, + Event, + EventRegistration, + InfoMailing, + RegistrationState, + Terms, + Voucher, +) from .tables import ( AdditionalFieldsTable, ChildGroupsTable, @@ -1004,12 +1012,21 @@ class EventCheckpointView(PermissionRequiredMixin, FormView): checkpoint.lon = form.cleaned_data["lon"] checkpoint.save() - messages.success(self.request, _("{} successfully checked for {}.").format(str(checkpoint.person), str(checkpoint.comment))) + messages.success( + self.request, + _("{} successfully checked for {}.").format( + str(checkpoint.person), str(checkpoint.comment) + ), + ) self._comment = checkpoint.comment return super().form_valid(self) def get_success_url(self): - return reverse("event_by_name_checkpoint", kwargs={"slug": self.kwargs["slug"]}) + "?" + urlencode({"comment": self._comment}) + return ( + reverse("event_by_name_checkpoint", kwargs={"slug": self.kwargs["slug"]}) + + "?" + + urlencode({"comment": self._comment}) + ) class ViewTerms(PermissionRequiredMixin, DetailView): diff --git a/tox.ini b/tox.ini index eecc4e8fca5729d64baa60516a45186d9dfe6858..78e09567e193b72a299dfb3f776499420ecc04ec 100644 --- a/tox.ini +++ b/tox.ini @@ -10,7 +10,7 @@ skip_install = true envdir = {toxworkdir}/globalenv commands_pre = poetry install - poetry run aleksis-admin yarn install + poetry run aleksis-admin webpack_bundle poetry run aleksis-admin collectstatic --no-input commands = poetry run pytest --cov=. {posargs} aleksis/ @@ -49,13 +49,13 @@ commands = [testenv:makemessages] commands = - poetry run aleksis-admin makemessages --no-wrap -e html,txt,py,email -i static -l ar -l de_DE -l fr -l nb_NO -l tr_TR -l la - poetry run aleksis-admin makemessages --no-wrap -d djangojs -i **/node_modules -l ar -l de_DE -l fr -l nb_NO -l tr_TR -l la + poetry run aleksis-admin makemessages --no-wrap -e html,txt,py,email -i static -l ar -l de_DE -l fr -l nb_NO -l tr_TR -l la -l uk -l ru + poetry run aleksis-admin makemessages --no-wrap -d djangojs -i **/node_modules -l ar -l de_DE -l fr -l nb_NO -l tr_TR -l la -l uk -l ru [flake8] max_line_length = 100 exclude = migrations,tests -ignore = BLK100,E203,E231,E266,W503,D100,D101,D102,D103,D104,D105,D106,D107,RST215,RST214,F821,F841,S106,T100,T101,DJ05 +ignore = BLK100,E203,E231,W503,D100,D101,D102,D103,D104,D105,D106,D107,RST215,RST214,F821,F841,S106,T100,T101,DJ05 [isort] profile = black