From 58e207a9f8ccae1dbe7a5d1255dd3e1863f58ad8 Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Mon, 25 Jul 2022 20:29:33 +0200 Subject: [PATCH 01/92] set version to dev again --- src/version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/version.txt b/src/version.txt index ef538c281..38f8e886e 100644 --- a/src/version.txt +++ b/src/version.txt @@ -1 +1 @@ -3.1.2 +dev From 4291a162657e84516348b372c03b46fcd7b4e675 Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Fri, 12 Aug 2022 21:07:08 +0200 Subject: [PATCH 02/92] use username field to match users for openid connect login by default, the email field was used which leads to issues if the same email address is used multiple times additionally, the email field was not updated during the login for existing users --- src/helfertool/oidc.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/helfertool/oidc.py b/src/helfertool/oidc.py index 3de81a77b..033410262 100644 --- a/src/helfertool/oidc.py +++ b/src/helfertool/oidc.py @@ -39,7 +39,7 @@ class CustomOIDCAuthenticationBackend(OIDCAuthenticationBackend): def verify_claims(self, claims): verified = super(CustomOIDCAuthenticationBackend, self).verify_claims(claims) - # we require the given_name and family_name + # we require the given_name and family_name, email is already checked by verify_claims if "given_name" not in claims or "family_name" not in claims: return False @@ -52,6 +52,16 @@ def verify_claims(self, claims): return verified and is_active + # match users based on username field + # default is email field, but it is not unique which can result in issues + # we set username = email, so finally its the email address, but stored in another field + def filter_users_by_claims(self, claims): + email = claims.get("email") + if not email: + return self.UserModel.objects.none() + + return self.UserModel.objects.filter(username__exact=generate_username(email)) + # called on first login when no user object exists def create_user(self, claims): user = super(CustomOIDCAuthenticationBackend, self).create_user(claims) @@ -61,9 +71,10 @@ def create_user(self, claims): # called on login when the user already exists, just update all attributes def update_user(self, user, claims): - # name + # name + email user.first_name = claims.get("given_name") user.last_name = claims.get("family_name") + user.email = claims.get("email") # check if login should be restricted (if not, login is allowed) if settings.OIDC_CUSTOM_CLAIM_LOGIN: From a5516af600ecaa47dec749a32a1bcece70e5831a Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Fri, 12 Aug 2022 21:15:03 +0200 Subject: [PATCH 03/92] name and email of external users cannot be edited --- src/account/forms/account.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/account/forms/account.py b/src/account/forms/account.py index 03c083580..4c32aa3a7 100644 --- a/src/account/forms/account.py +++ b/src/account/forms/account.py @@ -113,9 +113,15 @@ def __init__(self, *args, **kwargs): super(EditUserForm, self).__init__(*args, **kwargs) - # set required fields + # set attributes for name/email fields + # if user is local, the fields are required + # if users is from external idp, the fields cannot be changed for f in ("first_name", "last_name", "email"): - self.fields[f].required = True + if self.instance.has_usable_password(): + self.fields[f].required = True + else: + self.fields[f].help_text = _("Managed by external identity provider") + self.fields[f].disabled = True # adjust labels of active and superuser flags self._active_initial = self.instance.is_active From d5cf3b905d69c82918aebfe79c5835f337a2a913 Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sat, 13 Aug 2022 15:03:08 +0200 Subject: [PATCH 04/92] show help text for image upload forms --- src/badges/templates/badges/edit_badge.html | 4 ++++ src/badges/templates/badges/edit_design.html | 8 ++++++++ .../templates/registration/admin/edit_event.html | 2 ++ 3 files changed, 14 insertions(+) diff --git a/src/badges/templates/badges/edit_badge.html b/src/badges/templates/badges/edit_badge.html index 7a82e14fa..071c0e1c5 100644 --- a/src/badges/templates/badges/edit_badge.html +++ b/src/badges/templates/badges/edit_badge.html @@ -51,6 +51,10 @@

{% blocktrans with name=form.instance.firstname %}Special badges for {{ name
{{ form.photo.label_tag }} {{ form.photo }} +
{{ form.photo.help_text }}
+ {% for text in form.photo.errors %} +
{{ text }}
+ {% endfor %}
diff --git a/src/badges/templates/badges/edit_design.html b/src/badges/templates/badges/edit_design.html index d737d4816..00226a615 100644 --- a/src/badges/templates/badges/edit_design.html +++ b/src/badges/templates/badges/edit_design.html @@ -35,9 +35,17 @@

{% trans "New badge design" %}

{{ form.bg_front.label_tag }} {{ form.bg_front }} +
{{ form.bg_front.help_text }}
+ {% for text in form.bg_front.errors %} +
{{ text }}
+ {% endfor %}
{{ form.bg_back.label_tag }} {{ form.bg_back }} +
{{ form.bg_back.help_text }}
+ {% for text in form.bg_back.errors %} +
{{ text }}
+ {% endfor %}
diff --git a/src/registration/templates/registration/admin/edit_event.html b/src/registration/templates/registration/admin/edit_event.html index 90e37ea7c..b311e08ed 100644 --- a/src/registration/templates/registration/admin/edit_event.html +++ b/src/registration/templates/registration/admin/edit_event.html @@ -118,12 +118,14 @@

{% trans "Logos" %}

{{ form.logo.label_tag }} {{ form.logo }} +
{{ form.logo.help_text }}
{% for text in form.logo.errors %}
{{ text }}
{% endfor %}
{{ form.logo_social.label_tag }} {{ form.logo_social }} +
{{ form.logo_social.help_text }}
{% for text in form.logo_social.errors %}
{{ text }}
{% endfor %} From 78d7a2ef84fbf3d896d3d4262afb44620b3f167a Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sat, 13 Aug 2022 16:27:25 +0200 Subject: [PATCH 05/92] show direct error when sending a mail to 0 recipients --- src/mail/forms.py | 33 +++++++++++++++++++++++++-------- src/mail/views/send_mail.py | 6 +++++- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/mail/forms.py b/src/mail/forms.py index f385f2261..649ca33d9 100644 --- a/src/mail/forms.py +++ b/src/mail/forms.py @@ -13,6 +13,8 @@ class MailFormError(Exception): + """Error during mail sending. The message will be displayed to the user, so do not include sensitive data.""" + pass @@ -114,7 +116,11 @@ def clean(self): cleaned_data = super(MailForm, self).clean() if cleaned_data.get("reply_to") == "-" and not cleaned_data.get("custom_reply_to"): - raise forms.ValidationError(_("You must specify a custom reply " "to address.")) + raise forms.ValidationError(_("You must specify a custom reply to address.")) + + # check if there are recipients (will be checked again in send_mail, but we can provide better feedback here) + if not self._get_helpers(): + raise forms.ValidationError(_("There are no helpers or coordinators that would receive this mail.")) def send_mail(self): # basic parameters @@ -164,8 +170,9 @@ def send_mail(self): if not receiver_list: sentmail.failed = True sentmail.save() - raise MailFormError(_("There are no helpers or coordinators that " "would receive this mail.")) + raise MailFormError(_("There are no helpers or coordinators that would receive this mail.")) + # send mail now mail = EmailMessage( subject, text, @@ -188,32 +195,42 @@ def send_mail(self): sentmail.save() raise - def _get_helpers(self, sentmail): + def _get_helpers(self, sentmail=None): + """Get the helpers that would receive the mail. + + If `sentmail` if provided the `SentMail` object is updated to contain this info.""" receiver_list = self.cleaned_data.get("receiver") tmp = [] for receiver in receiver_list: + # all helpers and coordinators - special case: we can abort now if receiver == "all": - sentmail.all_helpers_and_coordinators = True + if sentmail: + sentmail.all_helpers_and_coordinators = True return self.event.helper_set.distinct() + # all coordinators elif receiver == "all-coords": - sentmail.all_coordinators = True tmp.extend(self.event.all_coordinators) + if sentmail: + sentmail.all_coordinators = True # helpers and coordinators for job elif receiver in self.jobs_all: job_obj = self.jobs_all[receiver] - sentmail.jobs_all.add(job_obj) tmp.extend(job_obj.helpers_and_coordinators()) + if sentmail: + sentmail.jobs_all.add(job_obj) # only coordinators for job elif receiver in self.jobs_coordinators: job_obj = self.jobs_coordinators[receiver] - sentmail.jobs_only_coordinators.add(job_obj) tmp.extend(job_obj.coordinators.all()) + if sentmail: + sentmail.jobs_only_coordinators.add(job_obj) # single shifts elif receiver in self.shifts: shift_obj = self.shifts[receiver] - sentmail.shifts.add(shift_obj) tmp.extend(shift_obj.helper_set.all()) + if sentmail: + sentmail.shifts.add(shift_obj) return tmp diff --git a/src/mail/views/send_mail.py b/src/mail/views/send_mail.py index 530607ba8..2d6877065 100644 --- a/src/mail/views/send_mail.py +++ b/src/mail/views/send_mail.py @@ -45,7 +45,11 @@ def send_mail(request, event_url_name): }, ) except (SMTPException, ConnectionError, MailFormError) as e: - messages.error(request, _("Sending mails failed")) + if isinstance(e, MailFormError): + # exceptions of type MailFormError are displayed to the user, other exceptions not + messages.error(request, e) + else: + messages.error(request, _("Sending mails failed")) logger.error( "mail error", From 2b18e3d2bc3995f36a810f8cc42214fcc46bb4f7 Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sat, 15 Oct 2022 17:11:55 +0200 Subject: [PATCH 06/92] migrate to "path" in urls.py --- src/account/urls.py | 28 +-- src/badges/urls.py | 108 ++++++----- src/corona/urls.py | 20 +- src/gifts/urls.py | 30 +-- src/helfertool/converters.py | 15 ++ src/helfertool/urls.py | 61 ++++--- src/help/urls.py | 4 +- src/inventory/urls.py | 44 ++--- src/mail/urls.py | 12 +- src/news/urls.py | 20 +- src/prerequisites/urls.py | 18 +- .../migrations/0063_alter_event_url_name.py | 24 +++ src/registration/models/event.py | 6 +- .../templates/registration/admin/helpers.html | 6 +- .../registration/admin/helpers_for_job.html | 6 +- src/registration/urls.py | 172 +++++++++--------- src/registration/views/export.py | 13 +- src/statistic/urls.py | 18 +- src/toollog/urls.py | 4 +- src/toolsettings/urls.py | 16 +- 20 files changed, 325 insertions(+), 300 deletions(-) create mode 100644 src/helfertool/converters.py create mode 100644 src/registration/migrations/0063_alter_event_url_name.py diff --git a/src/account/urls.py b/src/account/urls.py index 1308b63b5..d82d914e0 100644 --- a/src/account/urls.py +++ b/src/account/urls.py @@ -1,22 +1,22 @@ -from django.conf.urls import url +from django.urls import path from . import views app_name = "account" urlpatterns = [ # account - url(r"^$", views.view_user, name="view_user"), - url(r"^(?P[0-9]+)/$", views.view_user, name="view_user"), - url(r"^(?P[0-9]+)/edit/$", views.edit_user, name="edit_user"), - url(r"^(?P[0-9]+)/delete/$", views.delete_user, name="delete_user"), - url(r"^(?P[0-9]+)/merge/$", views.merge_user, name="merge_user"), - url(r"^new/$", views.add_user, name="add_user"), - url(r"^list/$", views.list_users, name="list_users"), + path("", views.view_user, name="view_user"), + path("/", views.view_user, name="view_user"), + path("/edit/", views.edit_user, name="edit_user"), + path("/delete/", views.delete_user, name="delete_user"), + path("/merge/", views.merge_user, name="merge_user"), + path("new/", views.add_user, name="add_user"), + path("list/", views.list_users, name="list_users"), # agreements - url(r"^check/$", views.check_user_agreement, name="check_user_agreement"), - url(r"^check/(?P[0-9]+)/$", views.handle_user_agreement, name="handle_user_agreement"), - url(r"^agreements/$", views.list_agreements, name="list_agreements"), - url(r"^agreements/new/$", views.edit_agreement, name="new_agreement"), - url(r"^agreements/(?P[0-9]+)/$", views.edit_agreement, name="edit_agreement"), - url(r"^agreements/(?P[0-9]+)/delete/$", views.delete_agreement, name="delete_agreement"), + path("check/", views.check_user_agreement, name="check_user_agreement"), + path("check//", views.handle_user_agreement, name="handle_user_agreement"), + path("agreements/", views.list_agreements, name="list_agreements"), + path("agreements/new/", views.edit_agreement, name="new_agreement"), + path("agreements//", views.edit_agreement, name="edit_agreement"), + path("agreements//delete/", views.delete_agreement, name="delete_agreement"), ] diff --git a/src/badges/urls.py b/src/badges/urls.py index 3fa9f4279..33c3fe9a0 100644 --- a/src/badges/urls.py +++ b/src/badges/urls.py @@ -1,4 +1,4 @@ -from django.conf.urls import url +from django.urls import path from . import views @@ -7,65 +7,63 @@ # # settings # - url(r"^(?P[a-zA-Z0-9]+)/badges/settings/$", views.settings, name="settings"), - url( - r"^(?P[a-zA-Z0-9]+)/badges/settings/advanced", views.settings_advanced, name="settings_advanced" - ), - url(r"^(?P[a-zA-Z0-9]+)/badges/defaulttemplate", views.default_template, name="default_template"), - url(r"^(?P[a-zA-Z0-9]+)/badges/currenttemplate", views.current_template, name="current_template"), + path("/badges/settings/", views.settings, name="settings"), + path("/badges/settings/advanced/", views.settings_advanced, name="settings_advanced"), + path("/badges/defaulttemplate/", views.default_template, name="default_template"), + path("/badges/currenttemplate/", views.current_template, name="current_template"), # # edit badge # - url( - r"^(?P[a-zA-Z0-9]+)/helpers/(?P[0-9a-f\-]+)/badge/$", + path( + "/helpers//badge/", views.edit_badge, name="edit_badge", ), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/(?P[0-9a-f\-]+)/badge/photo/$", + path( + "/helpers//badge/photo/", views.get_badge_photo, name="get_badge_photo", ), # # permission # - url( - r"^(?P[a-zA-Z0-9]+)/badges/permission/(?P[0-9]+)/$", + path( + "/badges/permission//", views.edit_permission, name="edit_permission", ), - url(r"^(?P[a-zA-Z0-9]+)/badges/permission/add/", views.edit_permission, name="new_permission"), - url( - r"^(?P[a-zA-Z0-9]+)/badges/permission/(?P[0-9]+)/delete/$", + path("/badges/permission/add/", views.edit_permission, name="new_permission"), + path( + "/badges/permission//delete/", views.delete_permission, name="delete_permission", ), # # role # - url(r"^(?P[a-zA-Z0-9]+)/badges/role/(?P[0-9]+)/$", views.edit_role, name="edit_role"), - url(r"^(?P[a-zA-Z0-9]+)/badges/role/add/", views.edit_role, name="new_role"), - url( - r"^(?P[a-zA-Z0-9]+)/badges/role/(?P[0-9]+)/delete/$", + path("/badges/role//", views.edit_role, name="edit_role"), + path("/badges/role/add/", views.edit_role, name="new_role"), + path( + "/badges/role//delete/", views.delete_role, name="delete_role", ), # # design # - url( - r"^(?P[a-zA-Z0-9]+)/badges/design/(?P[0-9]+)/$", + path( + "/badges/design//", views.edit_design, name="edit_design", ), - url(r"^(?P[a-zA-Z0-9]+)/badges/design/add/", views.edit_design, name="new_design"), - url( - r"^(?P[a-zA-Z0-9]+)/badges/design/(?P[0-9]+)/delete/$", + path("/badges/design/add/", views.edit_design, name="new_design"), + path( + "/badges/design//delete/", views.delete_design, name="delete_design", ), - url( - r"^(?P[a-zA-Z0-9]+)/badges/design/(?P[0-9]+)/bg/(?P[a-z]+)/$", + path( + "/badges/design//bg//", views.get_design_bg, name="get_design_bg", ), @@ -73,79 +71,79 @@ # badge generation # # overview page - url(r"^(?P[a-zA-Z0-9]+)/badges/$", views.index, name="index"), + path("/badges/", views.index, name="index"), # overview of generated badges (list of tasks) - url(r"^(?P[a-zA-Z0-9]+)/badges/tasklist/$", views.tasklist, name="tasklist"), + path("/badges/tasklist/", views.tasklist, name="tasklist"), # warnings - url(r"^(?P[a-zA-Z0-9]+)/badges/warnings/(?P[0-9]+)$", views.warnings, name="warnings"), + path("/badges/warnings//", views.warnings, name="warnings"), # generate for job - url( - r"^(?P[a-zA-Z0-9]+)/badges/generate/(?P[0-9]+)/$", + path( + "/badges/generate//", views.generate, {"generate": "job"}, name="generate_for_job", ), - url( - r"^(?P[a-zA-Z0-9]+)/badges/generate/(?P[0-9]+)/all/$", + path( + "/badges/generate//all/", views.generate, {"generate": "job", "skip_printed": False}, name="generate_all_for_job", ), # generate special badges - url( - r"^(?P[a-zA-Z0-9]+)/badges/generate/special/$", + path( + "/badges/generate/special/", views.generate, {"generate": "special"}, name="generate_special", ), - url( - r"^(?P[a-zA-Z0-9]+)/badges/generate/special/all/$", + path( + "/badges/generate/special/all/", views.generate, {"generate": "special", "skip_printed": False}, name="generate_all_special", ), # generate for all jobs and special badges - url(r"^(?P[a-zA-Z0-9]+)/badges/generate/$", views.generate, {"generate": "all"}, name="generate"), - url( - r"^(?P[a-zA-Z0-9]+)/badges/generate/all/$", + path("/badges/generate/", views.generate, {"generate": "all"}, name="generate"), + path( + "/badges/generate/all/", views.generate, {"generate": "all", "skip_printed": False}, name="generate_all", ), # failed page - url(r"^(?P[a-zA-Z0-9]+)/badges/failed/" r"(?P[a-z0-9\-]+)/$", views.failed, name="failed"), + path("/badges/failed//", views.failed, name="failed"), # download badges - url( - r"^(?P[a-zA-Z0-9]+)/badges/download/" r"(?P[a-z0-9\-]+)/$", + path( + "/badges/download//", views.download, name="download", ), # # register badges # - url(r"^(?P[a-zA-Z0-9]+)/badges/register/", views.register, name="register"), + path("/badges/register/", views.register, name="register"), # # special badges # - url(r"^(?P[a-zA-Z0-9]+)/badges/special/$", views.list_specialbadges, name="list_specialbadges"), - url( - r"^(?P[a-zA-Z0-9]+)/badges/special/(?P[0-9]+)/$", + path("/badges/special/", views.list_specialbadges, name="list_specialbadges"), + path( + "/badges/special//", views.edit_specialbadges, name="edit_specialbadges", ), - url(r"^(?P[a-zA-Z0-9]+)/badges/special/add/$", views.edit_specialbadges, name="new_specialbadges"), - url( - r"^(?P[a-zA-Z0-9]+)/badges/special/(?P[0-9]+)/template/$", + path("/badges/special/add/", views.edit_specialbadges, name="new_specialbadges"), + path( + "/badges/special//template/", views.edit_specialbadges_template, name="edit_specialbadges_template", ), - url( - r"^(?P[a-zA-Z0-9]+)/badges/special/(?P[0-9]+)/delete/$", + path( + "/badges/special//delete/", views.delete_specialbadges, name="delete_specialbadges", ), - url( - r"^(?P[a-zA-Z0-9]+)/badges/special/(?P[0-9]+)/template/photo/$", + path( + "/badges/special//template/photo/", views.get_specialbadges_photo, name="get_specialbadges_photo", ), diff --git a/src/corona/urls.py b/src/corona/urls.py index b384625d0..869fcc611 100644 --- a/src/corona/urls.py +++ b/src/corona/urls.py @@ -1,21 +1,21 @@ -from django.conf.urls import url +from django.urls import path from . import views app_name = "corona" urlpatterns = [ - url(r"^(?P[a-zA-Z0-9]+)/corona/settings/$", views.settings, name="settings"), - url(r"^(?P[a-zA-Z0-9]+)/corona/cleanup/$", views.cleanup, name="cleanup"), - url(r"^(?P[a-zA-Z0-9]+)/corona/data/$", views.data, name="data"), - url(r"^(?P[a-zA-Z0-9]+)/corona/export/$", views.export, name="export"), - url(r"^(?P[a-zA-Z0-9]+)/corona/missing/$", views.missing, name="missing"), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/(?P[0-9a-f\-]+)/corona/$", + path("/corona/settings/", views.settings, name="settings"), + path("/corona/cleanup/", views.cleanup, name="cleanup"), + path("/corona/data/", views.data, name="data"), + path("/corona/export/", views.export, name="export"), + path("/corona/missing/", views.missing, name="missing"), + path( + "/helpers//corona/", views.view_helper, name="view_helper", ), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/(?P[0-9a-f\-]+)/corona/edit/$", + path( + "/helpers//corona/edit/", views.edit_helper, name="edit_helper", ), diff --git a/src/gifts/urls.py b/src/gifts/urls.py index 7b223bdad..1d7c82f8f 100644 --- a/src/gifts/urls.py +++ b/src/gifts/urls.py @@ -1,4 +1,4 @@ -from django.conf.urls import url +from django.urls import path from . import views @@ -7,44 +7,44 @@ # # list # - url(r"^(?P[a-zA-Z0-9]+)/gifts/$", views.list, name="list"), + path("/gifts/", views.list, name="list"), # # edit gifts # - url(r"^(?P[a-zA-Z0-9]+)/gifts/gift/add/$", views.edit_gift, name="add_gift"), - url(r"^(?P[a-zA-Z0-9]+)/gifts/gift/(?P[0-9]+)/$", views.edit_gift, name="edit_gift"), - url( - r"^(?P[a-zA-Z0-9]+)/gifts/gift/(?P[0-9]+)/" "delete/$", + path("/gifts/gift/add/", views.edit_gift, name="add_gift"), + path("/gifts/gift//", views.edit_gift, name="edit_gift"), + path( + "/gifts/gift//delete/", views.delete_gift, name="delete_gift", ), # # edit gift sets # - url(r"^(?P[a-zA-Z0-9]+)/gifts/giftset/add/$", views.edit_gift_set, name="add_gift_set"), - url( - r"^(?P[a-zA-Z0-9]+)/gifts/giftset/" "(?P[0-9]+)/$", + path("/gifts/giftset/add/", views.edit_gift_set, name="add_gift_set"), + path( + "/gifts/giftset//", views.edit_gift_set, name="edit_gift_set", ), - url( - r"^(?P[a-zA-Z0-9]+)/gifts/giftset/" "(?P[0-9]+)/delete/$", + path( + "/gifts/giftset//delete/", views.delete_gift_set, name="delete_gift_set", ), # # open deposits # - url(r"^(?P[a-zA-Z0-9]+)/gifts/deposit/$", views.list_deposit, name="list_deposit"), + path("/gifts/deposit/", views.list_deposit, name="list_deposit"), # # shirts that need to be bought # - url(r"^(?P[a-zA-Z0-9]+)/gifts/shirts/$", views.list_shirts, name="list_shirts"), + path("/gifts/shirts/", views.list_shirts, name="list_shirts"), # # set present flag for complete shifts # - url( - r"^(?P[a-zA-Z0-9]+)/gifts/present/" "(?P[0-9]+)/$", + path( + "/gifts/present//", views.set_present, name="set_present", ), diff --git a/src/helfertool/converters.py b/src/helfertool/converters.py new file mode 100644 index 000000000..f80d5bcb3 --- /dev/null +++ b/src/helfertool/converters.py @@ -0,0 +1,15 @@ +from django.utils.dateparse import parse_date + + +class DateConverter: + regex = "[0-9]{2,4}-[0-9]{1,2}-[0-9]{1,2}" + + def to_python(self, value): + tmp = parse_date(value) + # parse_date returns None if input is not well formated, but we need a ValueError here + if not tmp: + raise ValueError("invalid date") + return tmp + + def to_url(self, value): + return value.strftime("%Y-%m-%d") diff --git a/src/helfertool/urls.py b/src/helfertool/urls.py index 61e5f5a8e..dca2bd942 100644 --- a/src/helfertool/urls.py +++ b/src/helfertool/urls.py @@ -1,33 +1,36 @@ from django.conf import settings -from django.conf.urls import include, url +from django.urls import include, path, register_converter from django.conf.urls.static import static from django.contrib import admin from django.contrib.auth import views as auth_views from django.views.defaults import page_not_found, server_error, permission_denied, bad_request from django.views.generic import TemplateView +from .converters import DateConverter + +register_converter(DateConverter, "date") urlpatterns = [ # django admin interface - url(r"^manage/django/", admin.site.urls), + path("manage/django/", admin.site.urls), # internationalization - url(r"^i18n/", include("django.conf.urls.i18n")), + path("i18n/", include("django.conf.urls.i18n")), # django-select2 - url(r"^select2/", include("django_select2.urls")), + path("select2/", include("django_select2.urls")), # authentication - url(r"^login/$", auth_views.LoginView.as_view(template_name="helfertool/login.html"), name="login"), - url(r"^logout/$", auth_views.LogoutView.as_view(next_page="/"), name="logout"), - # apps - url(r"^manage/settings/", include("toolsettings.urls")), - url(r"^manage/account/", include("account.urls")), + path("login/", auth_views.LoginView.as_view(template_name="helfertool/login.html"), name="login"), + path("logout/", auth_views.LogoutView.as_view(next_page="/"), name="logout"), + # apps without event name in url + path("manage/settings/", include("toolsettings.urls")), + path("manage/account/", include("account.urls")), ] # add oidc urls if enabled if settings.OIDC_CUSTOM_PROVIDER_NAME is not None: urlpatterns += [ - url(r"^oidc/", include("mozilla_django_oidc.urls")), - url( - r"^oidc/failed$", + path("oidc/", include("mozilla_django_oidc.urls")), + path( + "oidc/failed", TemplateView.as_view(template_name="helfertool/login_oidc_failed.html"), name="oidc_failed", ), @@ -35,17 +38,17 @@ # this is placed at the end to prevent that event names overwrite other urls urlpatterns += [ - url(r"", include("help.urls")), - url(r"", include("news.urls")), - url(r"", include("registration.urls")), - url(r"", include("statistic.urls")), - url(r"", include("badges.urls")), - url(r"", include("gifts.urls")), - url(r"", include("inventory.urls")), - url(r"", include("mail.urls")), - url(r"", include("prerequisites.urls")), - url(r"", include("toollog.urls")), - url(r"", include("corona.urls")), + path("", include("help.urls")), + path("", include("news.urls")), + path("", include("registration.urls")), + path("", include("statistic.urls")), + path("", include("badges.urls")), + path("", include("gifts.urls")), + path("", include("inventory.urls")), + path("", include("mail.urls")), + path("", include("prerequisites.urls")), + path("", include("toollog.urls")), + path("", include("corona.urls")), ] # for development @@ -53,12 +56,12 @@ urlpatterns += static(settings.MEDIA_URL + "public", document_root=settings.MEDIA_ROOT / "public") urlpatterns += [ - url(r"errors/400/", bad_request, {"exception": None}), - url(r"errors/403/", permission_denied, {"exception": None}), - url(r"errors/404/", page_not_found, {"exception": None}), - url(r"errors/500/", server_error), - url( - r"errors/banned", + path("errors/400/", bad_request, {"exception": None}), + path("errors/403/", permission_denied, {"exception": None}), + path("errors/404/", page_not_found, {"exception": None}), + path("errors/500/", server_error), + path( + "errors/banned/", TemplateView.as_view(template_name="helfertool/login_banned.html"), ), ] diff --git a/src/help/urls.py b/src/help/urls.py index 9bb78bbb7..5e506282d 100644 --- a/src/help/urls.py +++ b/src/help/urls.py @@ -1,8 +1,8 @@ -from django.conf.urls import url +from django.urls import path from . import views app_name = "help" urlpatterns = [ - url(r"^help/$", views.create_issue, name="create_issue"), + path("help/", views.create_issue, name="create_issue"), ] diff --git a/src/inventory/urls.py b/src/inventory/urls.py index 399b27b05..e68541794 100644 --- a/src/inventory/urls.py +++ b/src/inventory/urls.py @@ -1,42 +1,44 @@ -from django.conf.urls import url +from django.urls import path from . import views app_name = "inventory" urlpatterns = [ # pages for single event - url(r"^(?P[a-zA-Z0-9]+)/inventory/settings/$", views.event_settings, name="event_settings"), - url(r"^(?P[a-zA-Z0-9]+)/inventory/register/$", views.register_item, name="register"), - url( - r"^(?P[a-zA-Z0-9]+)/inventory/register/" "(?P[0-9]+)/$", + path("/inventory/settings/", views.event_settings, name="event_settings"), + path("/inventory/register/", views.register_item, name="register"), + path( + "/inventory/register//", views.register_badge, name="register_badge", ), - url(r"^(?P[a-zA-Z0-9]+)/inventory/take_back/$", views.take_back_item, name="take_back"), - url( - r"^(?P[a-zA-Z0-9]+)/inventory/take_back/" "(?P[0-9]+)/$", + path("/inventory/take_back/", views.take_back_item, name="take_back"), + path( + "/inventory/take_back//", views.take_back_badge, name="take_back_badge", ), - url( - r"^(?P[a-zA-Z0-9]+)/inventory/take_back/" "(?P[0-9]+)/direct/$", + path( + "/inventory/take_back//direct/", views.take_back_direct, name="take_back_direct", ), - url(r"^(?P[a-zA-Z0-9]+)/inventory/list/$", views.event_list, name="list"), + path("/inventory/list/", views.event_list, name="list"), # inventory management - url(r"^manage/inventory/$", views.inventory_list, name="inventory_list"), - url(r"^manage/inventory/new/$", views.edit_inventory, name="new_inventory"), - url(r"^manage/inventory/(?P[0-9]+)/$", views.edit_inventory, name="edit_inventory"), - url(r"^manage/inventory/(?P[0-9]+)/delete$", views.delete_inventory, name="delete_inventory"), - url(r"^manage/inventory/(?P[0-9]+)/items/$", views.inventory_items, name="inventory_items"), + path("manage/inventory/", views.inventory_list, name="inventory_list"), + path("manage/inventory/new/", views.edit_inventory, name="new_inventory"), + path("manage/inventory//", views.edit_inventory, name="edit_inventory"), + path("manage/inventory//delete", views.delete_inventory, name="delete_inventory"), + path("manage/inventory//items/", views.inventory_items, name="inventory_items"), # item management - url(r"^manage/inventory/(?P[0-9]+)/items/new/$", views.edit_item, name="new_item"), - url( - r"^manage/inventory/(?P[0-9]+)/items/" "(?P[0-9]+)/$", views.edit_item, name="edit_item" + path("manage/inventory//items/new/", views.edit_item, name="new_item"), + path( + "manage/inventory//items//", + views.edit_item, + name="edit_item", ), - url( - r"^manage/inventory/(?P[0-9]+)/items/" "(?P[0-9]+)/delete/$", + path( + "manage/inventory//items//delete/", views.delete_item, name="delete_item", ), diff --git a/src/mail/urls.py b/src/mail/urls.py index 8ae6f0929..36c957c2b 100644 --- a/src/mail/urls.py +++ b/src/mail/urls.py @@ -1,14 +1,14 @@ -from django.conf.urls import url +from django.urls import path from . import views app_name = "mail" urlpatterns = [ - url(r"^(?P[a-zA-Z0-9]+)/mail/$", views.send_mail, name="send"), - url(r"^(?P[a-zA-Z0-9]+)/mail/list/$", views.list_mails, name="list"), - url(r"^(?P[a-zA-Z0-9]+)/mail/(?P[0-9]+)/$", views.show_mail, name="show"), - url( - r"^(?P[a-zA-Z0-9]+)/mail/(?P[0-9]+)/errors/$", + path("/mail/", views.send_mail, name="send"), + path("/mail/list/", views.list_mails, name="list"), + path("/mail//", views.show_mail, name="show"), + path( + "/mail//errors/", views.show_mail_errors, name="show_errors", ), diff --git a/src/news/urls.py b/src/news/urls.py index 4874810c9..09c6c6f04 100644 --- a/src/news/urls.py +++ b/src/news/urls.py @@ -1,4 +1,4 @@ -from django.conf.urls import url +from django.urls import path from django.views.generic import TemplateView from . import views @@ -6,19 +6,19 @@ app_name = "news" urlpatterns = [ # management - url(r"^manage/news/$", views.send, name="send"), - url(r"^manage/news/remove/$", views.remove, name="remove"), - url(r"^manage/news/failures/$", views.failures, name="failures"), + path("manage/news/", views.send, name="send"), + path("manage/news/remove/", views.remove, name="remove"), + path("manage/news/failures/", views.failures, name="failures"), # subscribe and unsubcribe - url(r"^subscribe/$", views.subscribe, name="subscribe"), - url(r"^subscribe/done/$", TemplateView.as_view(template_name="news/subscribe_done.html"), name="subscribe_done"), - url(r"^subscribe/(?P[0-9a-f\-]*)/$", views.subscribe_confirm, name="subscribe_confirm"), + path("subscribe/", views.subscribe, name="subscribe"), + path("subscribe/done/", TemplateView.as_view(template_name="news/subscribe_done.html"), name="subscribe_done"), + path("subscribe//", views.subscribe_confirm, name="subscribe_confirm"), # empty tokens are allowed since this is used to generate the link once # and add the specific tokens # empty tokens are handled in the view with an 404 - url(r"^unsubscribe/(?P[0-9a-f\-]*)/$", views.unsubscribe, name="unsubscribe"), - url( - r"^unsubscribe/done/$", + path("unsubscribe//", views.unsubscribe, name="unsubscribe"), + path( + "unsubscribe/done/", TemplateView.as_view(template_name="news/unsubscribe_done.html"), name="unsubscribe_done", ), diff --git a/src/prerequisites/urls.py b/src/prerequisites/urls.py index 2d1dfeaa6..43fe630c6 100644 --- a/src/prerequisites/urls.py +++ b/src/prerequisites/urls.py @@ -1,23 +1,23 @@ -from django.conf.urls import url +from django.urls import path from . import views app_name = "prerequisites" urlpatterns = [ - url(r"^(?P[a-zA-Z0-9]+)/prerequisites/$", views.view_prerequisites, name="view_prerequisites"), - url(r"^(?P[a-zA-Z0-9]+)/prerequisites/new/$", views.edit_prerequisite, name="new_prerequisite"), - url( - r"^(?P[a-zA-Z0-9]+)/prerequisites/(?P[0-9]+)/edit/$", + path("/prerequisites/", views.view_prerequisites, name="view_prerequisites"), + path("/prerequisites/new/", views.edit_prerequisite, name="new_prerequisite"), + path( + "/prerequisites//edit/", views.edit_prerequisite, name="edit_prerequisite", ), - url( - r"^(?P[a-zA-Z0-9]+)/prerequisites/(?P[0-9]+)/delete/$", + path( + "/prerequisites//delete/", views.delete_prerequisite, name="delete_prerequisite", ), - url( - r"^(?P[a-zA-Z0-9]+)/prerequisites/(?P[0-9]+)/helpers/$", + path( + "/prerequisites//helpers/", views.view_helpers_prerequisite, name="view_helpers_prerequisite", ), diff --git a/src/registration/migrations/0063_alter_event_url_name.py b/src/registration/migrations/0063_alter_event_url_name.py new file mode 100644 index 000000000..9a4ba4172 --- /dev/null +++ b/src/registration/migrations/0063_alter_event_url_name.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.16 on 2022-10-15 14:59 + +from django.db import migrations, models +import registration.models.event + + +class Migration(migrations.Migration): + + dependencies = [ + ("registration", "0062_auto_20220709_1931"), + ] + + operations = [ + migrations.AlterField( + model_name="event", + name="url_name", + field=models.SlugField( + max_length=200, + unique=True, + validators=[registration.models.event._validate_url_blocklist], + verbose_name="Name for URL", + ), + ), + ] diff --git a/src/registration/models/event.py b/src/registration/models/event.py index 13733f99b..7d7d1182c 100644 --- a/src/registration/models/event.py +++ b/src/registration/models/event.py @@ -116,12 +116,12 @@ class Meta: verbose_name=_("Event name"), ) - url_name = models.CharField( + url_name = models.SlugField( max_length=200, unique=True, - validators=[RegexValidator("^[a-zA-Z0-9]+$"), _validate_url_blocklist], + validators=[_validate_url_blocklist], verbose_name=_("Name for URL"), - help_text=_("May contain the following chars: a-zA-Z0-9."), + help_text=_("May contain letters, numbers, underscores or hyphens."), ) date = models.DateField( diff --git a/src/registration/templates/registration/admin/helpers.html b/src/registration/templates/registration/admin/helpers.html index 84db7ce86..aa1113994 100644 --- a/src/registration/templates/registration/admin/helpers.html +++ b/src/registration/templates/registration/admin/helpers.html @@ -36,20 +36,18 @@ {% for day in days %} - {% with day_str=day|date:"Y-m-d" %}
  • {{ day }}
  • - {% endwith %} {% endfor %}
    diff --git a/src/registration/templates/registration/admin/helpers_for_job.html b/src/registration/templates/registration/admin/helpers_for_job.html index 67ec1df46..ac9d8b819 100644 --- a/src/registration/templates/registration/admin/helpers_for_job.html +++ b/src/registration/templates/registration/admin/helpers_for_job.html @@ -44,20 +44,18 @@
    diff --git a/src/registration/urls.py b/src/registration/urls.py index 085f814ff..4bf95dcb0 100644 --- a/src/registration/urls.py +++ b/src/registration/urls.py @@ -1,182 +1,176 @@ -from django.conf.urls import url +from django.urls import path from django.views.generic import TemplateView from . import views from .feeds import HelperFeed urlpatterns = [ - url(r"^$", views.index, name="index"), - url(r"^all/$", views.index_all_events, name="index_all_events"), + path("", views.index, name="index"), + path("all/", views.index_all_events, name="index_all_events"), # about - url(r"^about/$", TemplateView.as_view(template_name="registration/about.html"), name="about"), + path("about/", TemplateView.as_view(template_name="registration/about.html"), name="about"), # admin interface - url(r"^manage/$", views.admin, name="admin"), - url(r"^manage/new/$", views.edit_event, name="new_event"), - url(r"^manage/past/$", views.past_events, name="past_events"), + path("manage/", views.admin, name="admin"), + path("manage/new/", views.edit_event, name="new_event"), + path("manage/past/", views.past_events, name="past_events"), # registration - url(r"^(?P[a-zA-Z0-9]+)/$", views.form, name="form"), - url( - r"^(?P[a-zA-Z0-9]+)/registered/" r"(?P[a-z0-9\-]+)/$", + path("/", views.form, name="form"), + path( + "/registered//", views.registered, name="registered", ), - url( - r"^(?P[a-zA-Z0-9]+)/validate/" r"(?P[a-z0-9\-]+)/(?P[a-z0-9\-]+)/$", + path( + "/validate///", views.validate, name="validate", ), - url( - r"^(?P[a-zA-Z0-9]+)/validate/" r"(?P[a-z0-9\-]+)/$", + path( + "/validate//", views.validate, name="validate_old", ), - url(r"^(?P[a-zA-Z0-9]+)/ical/" r"(?P[a-z0-9\-]+)/$", HelperFeed(), name="ical"), - url( - r"^(?P[a-zA-Z0-9]+)/update/" r"(?P[a-z0-9\-]+)/$", + path("/ical//", HelperFeed(), name="ical"), + path( + "/update//", views.update_personal, name="update_personal", ), - url( - r"^(?P[a-zA-Z0-9]+)/deregister/" r"(?P[a-z0-9\-]+)/(?P[0-9]+)/$", + path( + "/deregister///", views.deregister, name="deregister", ), - url(r"^(?P[a-zA-Z0-9]+)/deleted/", views.deleted, name="deleted"), + path("/deleted/", views.deleted, name="deleted"), # manage event - url(r"^(?P[a-zA-Z0-9]+)/edit/$", views.edit_event, name="edit_event"), - url(r"^(?P[a-zA-Z0-9]+)/admins/$", views.edit_event_admins, name="edit_event_admins"), - url(r"^(?P[a-zA-Z0-9]+)/delete/$", views.delete_event, name="delete_event"), - url(r"^(?P[a-zA-Z0-9]+)/archive/$", views.archive_event, name="archive_event"), - url(r"^(?P[a-zA-Z0-9]+)/duplicate/$", views.duplicate_event, name="duplicate_event"), - url(r"^(?P[a-zA-Z0-9]+)/move/$", views.move_event, name="move_event"), - url(r"^(?P[a-zA-Z0-9]+)/logo/(?P[a-z]+)/$", views.get_event_logo, name="get_event_logo"), + path("/edit/", views.edit_event, name="edit_event"), + path("/admins/", views.edit_event_admins, name="edit_event_admins"), + path("/delete/", views.delete_event, name="delete_event"), + path("/archive/", views.archive_event, name="archive_event"), + path("/duplicate/", views.duplicate_event, name="duplicate_event"), + path("/move/", views.move_event, name="move_event"), + path("/logo//", views.get_event_logo, name="get_event_logo"), # jobs - url(r"^(?P[a-zA-Z0-9]+)/jobs/$", views.jobs_and_shifts, name="jobs_and_shifts"), - url(r"^(?P[a-zA-Z0-9]+)/jobs/new/$", views.edit_job, name="new_job"), - url(r"^(?P[a-zA-Z0-9]+)/jobs/sort/$", views.sort_job, name="sort_job"), - url(r"^(?P[a-zA-Z0-9]+)/jobs/(?P[0-9]+)/edit/$", views.edit_job, name="edit_job"), - url( - r"^(?P[a-zA-Z0-9]+)/jobs/(?P[0-9]+)/admins/$", + path("/jobs/", views.jobs_and_shifts, name="jobs_and_shifts"), + path("/jobs/new/", views.edit_job, name="new_job"), + path("/jobs/sort/", views.sort_job, name="sort_job"), + path("/jobs//edit/", views.edit_job, name="edit_job"), + path( + "/jobs//admins/", views.edit_job_admins, name="edit_job_admins", ), - url(r"^(?P[a-zA-Z0-9]+)/jobs/(?P[0-9]+)/delete/$", views.delete_job, name="delete_job"), - url( - r"^(?P[a-zA-Z0-9]+)/jobs/(?P[0-9]+)/" r"duplicate/$", + path("/jobs//delete/", views.delete_job, name="delete_job"), + path( + "/jobs//duplicate/", views.duplicate_job, name="duplicate_job", ), - url( - r"^(?P[a-zA-Z0-9]+)/jobs/(?P[0-9]+)/" r"duplicate/day/$", + path( + "/jobs//duplicate/day/", views.duplicate_job_day, name="duplicate_job_day", ), # shifts - url( - r"^(?P[a-zA-Z0-9]+)/jobs/(?P[0-9]+)/shift/" r"(?P[0-9]+)/$", + path( + "/jobs//shift//", views.edit_shift, name="edit_shift", ), - url( - r"^(?P[a-zA-Z0-9]+)/jobs/(?P[0-9]+)/shift/" r"(?P[0-9]+)/delete/$", + path( + "/jobs//shift//delete/", views.delete_shift, name="delete_shift", ), - url( - r"^(?P[a-zA-Z0-9]+)/jobs/(?P[0-9]+)/shift/" r"new/$", views.edit_shift, name="new_shift" - ), + path("/jobs//shift/new/", views.edit_shift, name="new_shift"), # helpers - url(r"^(?P[a-zA-Z0-9]+)/helpers/$", views.helpers, name="helpers"), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/job/(?P[0-9]+)/$", + path("/helpers/", views.helpers, name="helpers"), + path( + "/helpers/job//", views.helpers_for_job, name="helpers_for_job", ), - url(r"^(?P[a-zA-Z0-9]+)/helpers/search/$", views.search_helper, name="search_helper"), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/" r"(?P[0-9a-f\-]+)/$", + path("/helpers/search/", views.search_helper, name="search_helper"), + path( + "/helpers//", views.view_helper, name="view_helper", ), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/" r"(?P[0-9a-f\-]+)/edit/$", + path( + "/helpers//edit/", views.edit_helper, name="edit_helper", ), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/" r"(?P[0-9a-f\-]+)/delete/(?P[0-9]+)/$", + path( + "/helpers//delete//", views.delete_helper, name="delete_helper", ), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/" r"(?P[0-9a-f\-]+)/delete/(?P[0-9]+)/all/$", + path( + "/helpers//delete//all/", views.delete_helper, {"show_all_shifts": True}, name="delete_helper_all", ), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/" - r"(?P[0-9a-f\-]+)/delete/coordinator/(?P[0-9]+)/$", + path( + "/helpers//delete/coordinator//", views.delete_coordinator, name="delete_coordinator", ), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/add/" r"(?P[0-9]+)/$", views.add_helper, name="add_helper" - ), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/add/coordinator/" r"(?P[0-9]+)/$", + path("/helpers/add//", views.add_helper, name="add_helper"), + path( + "/helpers/add/coordinator//", views.add_coordinator, name="add_coordinator", ), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/" r"(?P[0-9a-f\-]+)/add/shift/$", + path( + "/helpers//add/shift/", views.add_helper_to_shift, name="add_helper_to_shift", ), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/" r"(?P[0-9a-f\-]+)/add/coordinator/$", + path( + "/helpers//add/coordinator/", views.add_helper_as_coordinator, name="add_helper_as_coordinator", ), - url( - r"^(?P[a-zA-Z0-9]+)/helpers/" r"(?P[0-9a-f\-]+)/resend/$", + path( + "/helpers//resend/", views.resend_mail, name="resend_mail", ), # export - url(r"^(?P[a-zA-Z0-9]+)/export/(?P[a-z]+)/all/$", views.export, name="export"), - url( - r"^(?P[a-zA-Z0-9]+)/export/(?P[a-z]+)/all/" r"(?P[0-9]+-[0-9]+-[0-9]+)/$", + path("/export//all/", views.export, name="export"), + path( + "/export//all//", views.export, name="export_date", ), - url( - r"^(?P[a-zA-Z0-9]+)/export/(?P[a-z]+)/" r"(?P[0-9]+)/$", + path( + "/export///", views.export, name="export_job", ), - url( - r"^(?P[a-zA-Z0-9]+)/export/(?P[a-z]+)/" - r"(?P[0-9]+)/(?P[0-9]+-[0-9]+-[0-9]+)/$", + path( + "/export////", views.export, name="export_job_date", ), # vacant shifts - url(r"^(?P[a-zA-Z0-9]+)/vacant/$", views.vacant_shifts, name="vacant_shifts"), + path("/vacant/", views.vacant_shifts, name="vacant_shifts"), # summaries - url(r"^(?P[a-zA-Z0-9]+)/coordinators/$", views.coordinators, name="coordinators"), + path("/coordinators/", views.coordinators, name="coordinators"), # manage links - url(r"^(?P[a-zA-Z0-9]+)/links/$", views.links, name="links"), - url(r"^(?P[a-zA-Z0-9]+)/links/add/$", views.edit_link, name="add_link"), - url(r"^(?P[a-zA-Z0-9]+)/links/(?P[0-9a-f\-]+)/$", views.edit_link, name="edit_link"), - url( - r"^(?P[a-zA-Z0-9]+)/links/(?P[0-9a-f\-]+)/" r"delete/$", + path("/links/", views.links, name="links"), + path("/links/add/", views.edit_link, name="add_link"), + path("/links//", views.edit_link, name="edit_link"), + path( + "/links//delete/", views.delete_link, name="delete_link", ), # duplicates - url(r"^(?P[a-zA-Z0-9]+)/duplicates/$", views.duplicates, name="duplicates"), - url(r"^(?P[a-zA-Z0-9]+)/duplicates/merge/(?P.+)/$", views.merge, name="merge"), + path("/duplicates/", views.duplicates, name="duplicates"), + path("/duplicates/merge//", views.merge, name="merge"), # use links - url(r"^(?P[a-zA-Z0-9]+)/l/(?P[0-9a-f\-]+)/$", views.form, name="form_for_link"), + path("/l//", views.form, name="form_for_link"), ] diff --git a/src/registration/views/export.py b/src/registration/views/export.py index e2170b630..a5af8b7b0 100644 --- a/src/registration/views/export.py +++ b/src/registration/views/export.py @@ -1,7 +1,6 @@ from django.contrib.auth.decorators import login_required from django.http import HttpResponse, Http404 from django.shortcuts import get_object_or_404 -from django.utils.dateparse import parse_date from django.views.decorators.cache import never_cache from helfertool.utils import nopermission @@ -23,7 +22,7 @@ @login_required @never_cache @archived_not_available -def export(request, event_url_name, filetype, job_pk=None, date_str=None): +def export(request, event_url_name, filetype, job_pk=None, date=None): # check for valid export type if filetype not in ["excel", "pdf"]: raise Http404 @@ -56,13 +55,7 @@ def export(request, event_url_name, filetype, job_pk=None, date_str=None): filename = event.name # parse date - date = None - if date_str: - try: - date = parse_date(date_str) - except ValueError: - raise Http404 - + if date: # check if there are any shifts with this start date if not Shift.objects.filter(job__in=jobs, begin__date=date).exists(): raise Http404 @@ -98,7 +91,7 @@ def export(request, event_url_name, filetype, job_pk=None, date_str=None): "job": job_for_log, "type": filetype, "file": filename, - "date": date_str, + "date": date.strftime("%Y-%m-%d") if date else None, }, ) diff --git a/src/statistic/urls.py b/src/statistic/urls.py index 7ccd44024..579586f90 100644 --- a/src/statistic/urls.py +++ b/src/statistic/urls.py @@ -1,18 +1,18 @@ -from django.conf.urls import url +from django.urls import path from . import views app_name = "statistic" urlpatterns = [ - url(r"^(?P[a-zA-Z0-9]+)/statistics/$", views.overview, name="overview"), - url(r"^(?P[a-zA-Z0-9]+)/statistics/chart/timeline/$", views.chart_timeline, name="chart_timeline"), - url(r"^(?P[a-zA-Z0-9]+)/statistics/chart/helpers/$", views.chart_helpers, name="chart_helpers"), - url(r"^(?P[a-zA-Z0-9]+)/statistics/chart/shifts/$", views.chart_shifts, name="chart_shifts"), - url( - r"^(?P[a-zA-Z0-9]+)/statistics/chart/eatinghabits/$", + path("/statistics/", views.overview, name="overview"), + path("/statistics/chart/timeline/", views.chart_timeline, name="chart_timeline"), + path("/statistics/chart/helpers/", views.chart_helpers, name="chart_helpers"), + path("/statistics/chart/shifts/", views.chart_shifts, name="chart_shifts"), + path( + "/statistics/chart/eatinghabits/", views.chart_nutrition, name="chart_nutrition", ), - url(r"^(?P[a-zA-Z0-9]+)/shirts/$", views.shirts, name="shirts"), - url(r"^(?P[a-zA-Z0-9]+)/nutrition/$", views.nutrition, name="nutrition"), + path("/shirts/", views.shirts, name="shirts"), + path("/nutrition/", views.nutrition, name="nutrition"), ] diff --git a/src/toollog/urls.py b/src/toollog/urls.py index bae3ce811..8cf3235ff 100644 --- a/src/toollog/urls.py +++ b/src/toollog/urls.py @@ -1,9 +1,9 @@ -from django.conf.urls import url +from django.urls import path from . import views app_name = "toollog" urlpatterns = [ - url(r"^(?P[a-zA-Z0-9]+)/auditlog/$", views.event_audit_log, name="event_audit_log"), + path("/auditlog/", views.event_audit_log, name="event_audit_log"), ] diff --git a/src/toolsettings/urls.py b/src/toolsettings/urls.py index bde4a27eb..b1953ca75 100644 --- a/src/toolsettings/urls.py +++ b/src/toolsettings/urls.py @@ -1,14 +1,14 @@ -from django.conf.urls import url +from django.urls import path from . import views app_name = "toolsettings" urlpatterns = [ - url(r"^templates/$", views.templates, name="templates"), - url(r"^templates/about/$", views.template_about, name="template_about"), - url(r"^templates/privacy/$", views.template_privacy, name="template_privacy"), - url(r"^templates/login/$", views.template_login, name="template_login"), - url(r"^templates/add_user/$", views.template_add_user, name="template_add_user"), - url(r"^templates/newsletter/$", views.template_newsletter, name="template_newsletter"), - url(r"^check/$", views.check, name="check"), + path("templates/", views.templates, name="templates"), + path("templates/about/", views.template_about, name="template_about"), + path("templates/privacy/", views.template_privacy, name="template_privacy"), + path("templates/login/", views.template_login, name="template_login"), + path("templates/add_user/", views.template_add_user, name="template_add_user"), + path("templates/newsletter/", views.template_newsletter, name="template_newsletter"), + path("check/", views.check, name="check"), ] From 27ac605330b0080300ecbaab086cf35637e1d651 Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sat, 15 Oct 2022 18:03:47 +0200 Subject: [PATCH 07/92] update to django 4.1 --- src/account/forms/account.py | 2 +- src/account/forms/agreement.py | 2 +- src/account/models/agreement.py | 2 +- src/account/templatetags/lastlogin.py | 4 +-- src/account/views/account.py | 2 +- src/badges/forms/barcode.py | 2 +- src/badges/forms/defaults.py | 2 +- src/badges/forms/settings.py | 2 +- .../0023_alter_specialbadges_badges.py | 18 ++++++++++ src/badges/models/badge.py | 2 +- src/badges/models/defaults.py | 2 +- src/badges/models/design.py | 2 +- src/badges/models/permission.py | 2 +- src/badges/models/role.py | 2 +- src/badges/models/settings.py | 2 +- src/badges/models/specialbadges.py | 2 +- src/badges/tasks.py | 2 +- src/badges/views/generate.py | 2 +- src/badges/views/register.py | 2 +- src/corona/export.py | 2 +- src/corona/forms/data.py | 2 +- src/corona/models/data.py | 2 +- src/corona/models/settings.py | 2 +- src/corona/views/cleanup.py | 2 +- src/corona/views/data.py | 2 +- src/gifts/forms/fields.py | 2 +- src/gifts/forms/helpersgifts.py | 2 +- src/gifts/models/deservedgiftset.py | 2 +- src/gifts/models/gift.py | 2 +- src/gifts/models/giftsettings.py | 2 +- src/gifts/models/helpersgifts.py | 2 +- src/gifts/models/includedgift.py | 2 +- src/gifts/models/set.py | 2 +- src/gifts/views/gift.py | 2 +- src/gifts/views/present.py | 2 +- src/gifts/views/set.py | 2 +- src/helfertool/forms/fields.py | 2 +- src/helfertool/override_translations.py | 2 +- src/helfertool/settings.py | 15 +++++--- src/help/forms.py | 2 +- src/help/models.py | 2 +- src/help/views.py | 2 +- src/inventory/forms/admin.py | 2 +- src/inventory/forms/barcode.py | 2 +- src/inventory/models.py | 2 +- src/mail/forms.py | 2 +- src/mail/models.py | 2 +- src/mail/views/send_mail.py | 2 +- src/news/forms/failures.py | 2 +- src/news/forms/mail.py | 2 +- src/news/forms/remove.py | 2 +- src/news/forms/subscribe.py | 2 +- src/news/models/person.py | 2 +- src/news/views/failures.py | 2 +- src/news/views/remove.py | 2 +- src/news/views/send.py | 2 +- src/news/views/subscribe.py | 2 +- src/prerequisites/forms/prerequisite.py | 2 +- src/prerequisites/models.py | 2 +- src/prerequisites/views/prerequisite.py | 2 +- src/registration/export/excel.py | 2 +- src/registration/export/pdf.py | 2 +- src/registration/forms/duplicates.py | 2 +- src/registration/forms/event.py | 2 +- src/registration/forms/helper.py | 2 +- src/registration/forms/job.py | 2 +- src/registration/forms/registration.py | 2 +- src/registration/forms/shift.py | 2 +- .../migrations/0002_event_date.py | 3 +- ...ter_event_url_name_alter_job_job_admins.py | 34 +++++++++++++++++++ src/registration/models/adminroles.py | 2 +- src/registration/models/event.py | 2 +- src/registration/models/eventarchive.py | 2 +- src/registration/models/helper.py | 2 +- src/registration/models/helpershift.py | 2 +- src/registration/models/job.py | 2 +- src/registration/models/link.py | 2 +- src/registration/models/shift.py | 2 +- src/registration/views/event.py | 2 +- src/registration/views/helper.py | 2 +- src/registration/views/job.py | 2 +- src/registration/views/link.py | 2 +- src/registration/views/registration.py | 2 +- src/registration/views/shift.py | 2 +- src/requirements.txt | 2 +- src/requirements_dev.txt | 1 + src/statistic/views/chart.py | 2 +- src/toollog/models.py | 2 +- src/toolsettings/models.py | 2 +- src/toolsettings/views/check.py | 8 ++--- 90 files changed, 153 insertions(+), 96 deletions(-) create mode 100644 src/badges/migrations/0023_alter_specialbadges_badges.py create mode 100644 src/registration/migrations/0064_alter_event_url_name_alter_job_job_admins.py diff --git a/src/account/forms/account.py b/src/account/forms/account.py index 4c32aa3a7..642ba4831 100644 --- a/src/account/forms/account.py +++ b/src/account/forms/account.py @@ -3,7 +3,7 @@ from django.contrib.auth import get_user_model from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.models import Group -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_select2.forms import Select2Widget diff --git a/src/account/forms/agreement.py b/src/account/forms/agreement.py index 93b02a72c..922735476 100644 --- a/src/account/forms/agreement.py +++ b/src/account/forms/agreement.py @@ -1,6 +1,6 @@ from django import forms from django.conf import settings -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from ckeditor.widgets import CKEditorWidget diff --git a/src/account/models/agreement.py b/src/account/models/agreement.py index b4593d37b..29e3f3ff8 100644 --- a/src/account/models/agreement.py +++ b/src/account/models/agreement.py @@ -1,7 +1,7 @@ from django.contrib.auth import get_user_model from django.core.exceptions import ValidationError from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_bleach.models import BleachField import datetime diff --git a/src/account/templatetags/lastlogin.py b/src/account/templatetags/lastlogin.py index e585a7702..34ce6169d 100644 --- a/src/account/templatetags/lastlogin.py +++ b/src/account/templatetags/lastlogin.py @@ -1,6 +1,6 @@ from django import template from django.utils.timesince import timesince -from django.utils.timezone import is_aware, utc +from django.utils.timezone import is_aware from django.utils.translation import gettext_lazy as _ import datetime @@ -15,7 +15,7 @@ def lastlogin(user): return _("Never") login_date = _to_date(user.last_login) - now_date = _to_date(datetime.datetime.now(utc if is_aware(login_date) else None)) + now_date = _to_date(datetime.datetime.now(datetime.timezone.utc if is_aware(login_date) else None)) if login_date == now_date: return _("Today") diff --git a/src/account/views/account.py b/src/account/views/account.py index 316cd234c..078c7af36 100644 --- a/src/account/views/account.py +++ b/src/account/views/account.py @@ -6,7 +6,7 @@ from django.core.paginator import Paginator from django.db.models import Q from django.shortcuts import render, redirect, get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/badges/forms/barcode.py b/src/badges/forms/barcode.py index c5b8627ec..9df0d784e 100644 --- a/src/badges/forms/barcode.py +++ b/src/badges/forms/barcode.py @@ -1,6 +1,6 @@ from django import forms from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from ..models import Badge diff --git a/src/badges/forms/defaults.py b/src/badges/forms/defaults.py index 3642e2c73..99e8e5310 100644 --- a/src/badges/forms/defaults.py +++ b/src/badges/forms/defaults.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from ..models import BadgeDesign, BadgeRole, BadgeDefaults diff --git a/src/badges/forms/settings.py b/src/badges/forms/settings.py index ca20bca69..a76a2fefc 100644 --- a/src/badges/forms/settings.py +++ b/src/badges/forms/settings.py @@ -1,6 +1,6 @@ from django import forms from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from ..models import BadgeSettings diff --git a/src/badges/migrations/0023_alter_specialbadges_badges.py b/src/badges/migrations/0023_alter_specialbadges_badges.py new file mode 100644 index 000000000..7c3655459 --- /dev/null +++ b/src/badges/migrations/0023_alter_specialbadges_badges.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.2 on 2022-10-15 17:01 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("badges", "0022_auto_20211106_1716"), + ] + + operations = [ + migrations.AlterField( + model_name="specialbadges", + name="badges", + field=models.ManyToManyField(blank=True, related_name="+", to="badges.badge"), + ), + ] diff --git a/src/badges/models/badge.py b/src/badges/models/badge.py index 03863fed0..e54a1a652 100644 --- a/src/badges/models/badge.py +++ b/src/badges/models/badge.py @@ -2,7 +2,7 @@ from django.db.models.signals import post_delete from django.dispatch import receiver from django.template.defaultfilters import date as date_f -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from helfertool.forms import RestrictedImageField diff --git a/src/badges/models/defaults.py b/src/badges/models/defaults.py index 3e5655ddf..41c32b4d7 100644 --- a/src/badges/models/defaults.py +++ b/src/badges/models/defaults.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from copy import deepcopy diff --git a/src/badges/models/design.py b/src/badges/models/design.py index d42eb2397..d6f7f5b1d 100644 --- a/src/badges/models/design.py +++ b/src/badges/models/design.py @@ -1,7 +1,7 @@ from django.core.files.base import ContentFile from django.core.validators import RegexValidator from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from helfertool.forms import RestrictedImageField diff --git a/src/badges/models/permission.py b/src/badges/models/permission.py index 070c2b5c9..0d38720d3 100644 --- a/src/badges/models/permission.py +++ b/src/badges/models/permission.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .settings import BadgeSettings diff --git a/src/badges/models/role.py b/src/badges/models/role.py index b3012f220..d52b7f24d 100644 --- a/src/badges/models/role.py +++ b/src/badges/models/role.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .settings import BadgeSettings from .permission import BadgePermission diff --git a/src/badges/models/settings.py b/src/badges/models/settings.py index 7ddba0c84..718187a75 100644 --- a/src/badges/models/settings.py +++ b/src/badges/models/settings.py @@ -2,7 +2,7 @@ from django.core.files.base import ContentFile from django.core.validators import MinValueValidator from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .defaults import BadgeDefaults diff --git a/src/badges/models/specialbadges.py b/src/badges/models/specialbadges.py index 30900d61e..664caa1cf 100644 --- a/src/badges/models/specialbadges.py +++ b/src/badges/models/specialbadges.py @@ -3,7 +3,7 @@ from django.db import models from django.db.models.signals import post_save, pre_delete from django.dispatch import receiver -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .badge import Badge diff --git a/src/badges/tasks.py b/src/badges/tasks.py index e322dc449..4b3bbb7ef 100644 --- a/src/badges/tasks.py +++ b/src/badges/tasks.py @@ -5,7 +5,7 @@ from django.conf import settings from django.utils import translation -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from PIL import Image diff --git a/src/badges/views/generate.py b/src/badges/views/generate.py index f12eea3e3..2fd4fcc8c 100644 --- a/src/badges/views/generate.py +++ b/src/badges/views/generate.py @@ -2,7 +2,7 @@ from django.core.mail import mail_admins from django.http import HttpResponse from django.shortcuts import render, redirect, get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/badges/views/register.py b/src/badges/views/register.py index 5e3c364ae..2690c2e94 100644 --- a/src/badges/views/register.py +++ b/src/badges/views/register.py @@ -1,7 +1,7 @@ from django.contrib import messages from django.contrib.auth.decorators import login_required from django.shortcuts import render, get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/corona/export.py b/src/corona/export.py index 31846bfc4..0250478b0 100644 --- a/src/corona/export.py +++ b/src/corona/export.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ import xlsxwriter from io import BytesIO diff --git a/src/corona/forms/data.py b/src/corona/forms/data.py index 8c3b0985d..9935c3706 100644 --- a/src/corona/forms/data.py +++ b/src/corona/forms/data.py @@ -1,6 +1,6 @@ from django import forms from django.conf import settings -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from ..models import ContactTracingData diff --git a/src/corona/models/data.py b/src/corona/models/data.py index 21d1191e9..44a2a5e60 100644 --- a/src/corona/models/data.py +++ b/src/corona/models/data.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_countries.fields import CountryField diff --git a/src/corona/models/settings.py b/src/corona/models/settings.py index a3fab4bb0..66f600a25 100644 --- a/src/corona/models/settings.py +++ b/src/corona/models/settings.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from copy import deepcopy diff --git a/src/corona/views/cleanup.py b/src/corona/views/cleanup.py index 5fe594096..4981ce32f 100644 --- a/src/corona/views/cleanup.py +++ b/src/corona/views/cleanup.py @@ -1,7 +1,7 @@ from django.contrib import messages from django.contrib.auth.decorators import login_required from django.shortcuts import render, redirect, get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/corona/views/data.py b/src/corona/views/data.py index a6b5002c7..e8d5950ce 100644 --- a/src/corona/views/data.py +++ b/src/corona/views/data.py @@ -1,7 +1,7 @@ from django.contrib.auth.decorators import login_required from django.http import HttpResponse from django.shortcuts import render, get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/gifts/forms/fields.py b/src/gifts/forms/fields.py index ac5d2d00b..f64d10d66 100644 --- a/src/gifts/forms/fields.py +++ b/src/gifts/forms/fields.py @@ -1,7 +1,7 @@ from django.forms import ChoiceField, RadioSelect from django.utils.safestring import mark_safe from django.utils.text import format_lazy -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.utils.functional import lazy from django_icons import icon diff --git a/src/gifts/forms/helpersgifts.py b/src/gifts/forms/helpersgifts.py index b2d811aa6..629c6f49d 100644 --- a/src/gifts/forms/helpersgifts.py +++ b/src/gifts/forms/helpersgifts.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .fields import PresenceField from ..models import HelpersGifts diff --git a/src/gifts/models/deservedgiftset.py b/src/gifts/models/deservedgiftset.py index bb0a80d97..fb2c883b4 100644 --- a/src/gifts/models/deservedgiftset.py +++ b/src/gifts/models/deservedgiftset.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .set import GiftSet diff --git a/src/gifts/models/gift.py b/src/gifts/models/gift.py index 67c5ee52a..062941a64 100644 --- a/src/gifts/models/gift.py +++ b/src/gifts/models/gift.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from copy import deepcopy diff --git a/src/gifts/models/giftsettings.py b/src/gifts/models/giftsettings.py index 5c6963681..d863dbcaa 100644 --- a/src/gifts/models/giftsettings.py +++ b/src/gifts/models/giftsettings.py @@ -1,6 +1,6 @@ from django.db import models from django.core.validators import MinValueValidator -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from copy import deepcopy diff --git a/src/gifts/models/helpersgifts.py b/src/gifts/models/helpersgifts.py index 81918890e..7e6271605 100644 --- a/src/gifts/models/helpersgifts.py +++ b/src/gifts/models/helpersgifts.py @@ -1,7 +1,7 @@ from django.core.validators import MinValueValidator from django.db import models, transaction from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from registration.models.helpershift import HelperShift diff --git a/src/gifts/models/includedgift.py b/src/gifts/models/includedgift.py index 011c3b282..02fc60eed 100644 --- a/src/gifts/models/includedgift.py +++ b/src/gifts/models/includedgift.py @@ -1,6 +1,6 @@ from django.core.validators import MinValueValidator from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from copy import deepcopy diff --git a/src/gifts/models/set.py b/src/gifts/models/set.py index dbad43a54..b23600cc6 100644 --- a/src/gifts/models/set.py +++ b/src/gifts/models/set.py @@ -1,6 +1,6 @@ from django.core.exceptions import MultipleObjectsReturned from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .gift import Gift from .includedgift import IncludedGift diff --git a/src/gifts/views/gift.py b/src/gifts/views/gift.py index 6b5192c37..9773dba22 100644 --- a/src/gifts/views/gift.py +++ b/src/gifts/views/gift.py @@ -2,7 +2,7 @@ from django.contrib.auth.decorators import login_required from django.http import Http404 from django.shortcuts import render, redirect, get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/gifts/views/present.py b/src/gifts/views/present.py index cc8bf7460..98da74779 100644 --- a/src/gifts/views/present.py +++ b/src/gifts/views/present.py @@ -1,7 +1,7 @@ from django.contrib import messages from django.contrib.auth.decorators import login_required from django.shortcuts import render, redirect -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/gifts/views/set.py b/src/gifts/views/set.py index 752b17d10..13b202203 100644 --- a/src/gifts/views/set.py +++ b/src/gifts/views/set.py @@ -2,7 +2,7 @@ from django.contrib.auth.decorators import login_required from django.http import Http404 from django.shortcuts import render, redirect, get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/helfertool/forms/fields.py b/src/helfertool/forms/fields.py index 26792e452..461522769 100644 --- a/src/helfertool/forms/fields.py +++ b/src/helfertool/forms/fields.py @@ -1,6 +1,6 @@ from django.core.exceptions import ValidationError from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ import os diff --git a/src/helfertool/override_translations.py b/src/helfertool/override_translations.py index f4541c98d..454566c2d 100644 --- a/src/helfertool/override_translations.py +++ b/src/helfertool/override_translations.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ # Django uses the first translation it detects in an installed app. # The "helfertool" app is listed first, so we have can override default translations here. diff --git a/src/helfertool/settings.py b/src/helfertool/settings.py index 49d6e3f75..25025d12e 100644 --- a/src/helfertool/settings.py +++ b/src/helfertool/settings.py @@ -7,7 +7,7 @@ import sys import yaml -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from datetime import timedelta from pathlib import Path @@ -64,7 +64,6 @@ ) USE_I18N = True -USE_L10N = True USE_TZ = True DEFAULT_COUNTRY = dict_get(config, "DE", "language", "country") @@ -312,14 +311,20 @@ # security DEBUG = dict_get(config, False, "security", "debug") SECRET_KEY = dict_get(config, "CHANGEME", "security", "secret") -ALLOWED_HOSTS = dict_get(config, [], "security", "allowed_hosts") +ALLOWED_HOSTS = dict_get(config, [], "security", "allowed_hosts") or [] # empty list in config is None, but we need [] # use X-Forwarded-Proto header to determine if https is used (overwritten in settings_container.py) if dict_get(config, False, "security", "behind_proxy"): SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") -# enable X-XSS-Protection (although modern browsers do not support it anymore) -SECURE_BROWSER_XSS_FILTER = True +# password hashers: use scrypt instead of PBKDF2 +PASSWORD_HASHERS = [ + "django.contrib.auth.hashers.ScryptPasswordHasher", + "django.contrib.auth.hashers.PBKDF2PasswordHasher", + "django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher", + "django.contrib.auth.hashers.Argon2PasswordHasher", + "django.contrib.auth.hashers.BCryptSHA256PasswordHasher", +] # cookies LANGUAGE_COOKIE_NAME = "lang" diff --git a/src/help/forms.py b/src/help/forms.py index 0c072446d..6ccaa9102 100644 --- a/src/help/forms.py +++ b/src/help/forms.py @@ -1,7 +1,7 @@ from django import forms from django.conf import settings from django.core.mail import EmailMessage -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from .models import Issue diff --git a/src/help/models.py b/src/help/models.py index 4651c5553..96fc844a2 100644 --- a/src/help/models.py +++ b/src/help/models.py @@ -1,6 +1,6 @@ from django.contrib.auth import get_user_model from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class Issue(models.Model): diff --git a/src/help/views.py b/src/help/views.py index d02bcaa1e..694e31ac8 100644 --- a/src/help/views.py +++ b/src/help/views.py @@ -1,7 +1,7 @@ from django.contrib import messages from django.contrib.auth.decorators import login_required from django.shortcuts import render, redirect -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from .forms import IssueForm diff --git a/src/inventory/forms/admin.py b/src/inventory/forms/admin.py index 66ebe5d14..9d15ad9f4 100644 --- a/src/inventory/forms/admin.py +++ b/src/inventory/forms/admin.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from helfertool.forms import UserSelectWidget diff --git a/src/inventory/forms/barcode.py b/src/inventory/forms/barcode.py index 5ce4d521d..349e485b6 100644 --- a/src/inventory/forms/barcode.py +++ b/src/inventory/forms/barcode.py @@ -1,6 +1,6 @@ from django import forms from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from ..models import Item diff --git a/src/inventory/models.py b/src/inventory/models.py index 275bdf3d3..38ac4d432 100644 --- a/src/inventory/models.py +++ b/src/inventory/models.py @@ -1,7 +1,7 @@ from django.contrib.auth import get_user_model from django.core.exceptions import MultipleObjectsReturned from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from copy import deepcopy from datetime import datetime diff --git a/src/mail/forms.py b/src/mail/forms.py index 649ca33d9..825a46b90 100644 --- a/src/mail/forms.py +++ b/src/mail/forms.py @@ -1,7 +1,7 @@ from django import forms from django.conf import settings from django.core.mail import EmailMessage -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_select2.forms import Select2MultipleWidget from smtplib import SMTPException diff --git a/src/mail/models.py b/src/mail/models.py index d94758219..6c6f6b407 100644 --- a/src/mail/models.py +++ b/src/mail/models.py @@ -1,6 +1,6 @@ from django.contrib.auth import get_user_model from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from registration.permissions import has_access, ACCESS_INVOLVED, ACCESS_MAILS_VIEW diff --git a/src/mail/views/send_mail.py b/src/mail/views/send_mail.py index 2d6877065..40525aa50 100644 --- a/src/mail/views/send_mail.py +++ b/src/mail/views/send_mail.py @@ -1,7 +1,7 @@ from django.contrib import messages from django.contrib.auth.decorators import login_required from django.shortcuts import render, redirect, get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/news/forms/failures.py b/src/news/forms/failures.py index 7b4490485..c4b8dbbfa 100644 --- a/src/news/forms/failures.py +++ b/src/news/forms/failures.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from ..models import Person diff --git a/src/news/forms/mail.py b/src/news/forms/mail.py index 1a43bd5e8..c365924ed 100644 --- a/src/news/forms/mail.py +++ b/src/news/forms/mail.py @@ -1,7 +1,7 @@ from django import forms from django.conf import settings from django.urls import reverse -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .. import tasks diff --git a/src/news/forms/remove.py b/src/news/forms/remove.py index af783fee7..aff37c085 100644 --- a/src/news/forms/remove.py +++ b/src/news/forms/remove.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from ..models import Person diff --git a/src/news/forms/subscribe.py b/src/news/forms/subscribe.py index 783378cf2..e8b77ebf0 100644 --- a/src/news/forms/subscribe.py +++ b/src/news/forms/subscribe.py @@ -1,6 +1,6 @@ from django import forms from django.utils.html import format_html -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class SubscribeForm(forms.Form): diff --git a/src/news/models/person.py b/src/news/models/person.py index 0339c742f..b32cf9951 100644 --- a/src/news/models/person.py +++ b/src/news/models/person.py @@ -3,7 +3,7 @@ from django.db import models from django.template.loader import get_template from django.urls import reverse -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from mail.tracking import new_tracking_news_confirm diff --git a/src/news/views/failures.py b/src/news/views/failures.py index 35785e7ab..5b9ea95fc 100644 --- a/src/news/views/failures.py +++ b/src/news/views/failures.py @@ -3,7 +3,7 @@ from django.contrib.auth.decorators import login_required from django.http import Http404 from django.shortcuts import render, redirect -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/news/views/remove.py b/src/news/views/remove.py index 3bd2eb65c..ae2c23b0d 100644 --- a/src/news/views/remove.py +++ b/src/news/views/remove.py @@ -3,7 +3,7 @@ from django.contrib.auth.decorators import login_required from django.http import Http404 from django.shortcuts import render, redirect -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/news/views/send.py b/src/news/views/send.py index 23d1f2c35..d0f32a8f0 100644 --- a/src/news/views/send.py +++ b/src/news/views/send.py @@ -4,7 +4,7 @@ from django.urls import reverse from django.http import Http404 from django.shortcuts import render, redirect -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from account.templatetags.globalpermissions import has_sendnews_group diff --git a/src/news/views/subscribe.py b/src/news/views/subscribe.py index fb9f54373..679f237df 100644 --- a/src/news/views/subscribe.py +++ b/src/news/views/subscribe.py @@ -3,7 +3,7 @@ from django.core.exceptions import ValidationError from django.http import Http404 from django.shortcuts import render, redirect -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.decorators.cache import never_cache from ..forms import SubscribeForm diff --git a/src/prerequisites/forms/prerequisite.py b/src/prerequisites/forms/prerequisite.py index 16e42a33b..093dd09e7 100644 --- a/src/prerequisites/forms/prerequisite.py +++ b/src/prerequisites/forms/prerequisite.py @@ -1,6 +1,6 @@ from django import forms from django.conf import settings -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from ckeditor.widgets import CKEditorWidget from ..models import Prerequisite diff --git a/src/prerequisites/models.py b/src/prerequisites/models.py index 6d489a82a..e74ff6642 100644 --- a/src/prerequisites/models.py +++ b/src/prerequisites/models.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_bleach.models import BleachField from copy import deepcopy diff --git a/src/prerequisites/views/prerequisite.py b/src/prerequisites/views/prerequisite.py index 7d20236e7..44aee4572 100644 --- a/src/prerequisites/views/prerequisite.py +++ b/src/prerequisites/views/prerequisite.py @@ -2,7 +2,7 @@ from django.contrib.auth.decorators import login_required from django.http import Http404 from django.shortcuts import render, get_object_or_404, redirect -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/registration/export/excel.py b/src/registration/export/excel.py index 50b23946a..94f4c5859 100644 --- a/src/registration/export/excel.py +++ b/src/registration/export/excel.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ import re import xlsxwriter diff --git a/src/registration/export/pdf.py b/src/registration/export/pdf.py index ff3128ef3..7b7f0fb62 100644 --- a/src/registration/export/pdf.py +++ b/src/registration/export/pdf.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, PageBreak from reportlab.lib.styles import getSampleStyleSheet diff --git a/src/registration/forms/duplicates.py b/src/registration/forms/duplicates.py index eb0851fea..2444a371e 100644 --- a/src/registration/forms/duplicates.py +++ b/src/registration/forms/duplicates.py @@ -1,6 +1,6 @@ from django import forms from django.db import transaction -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from ..models import Duplicate, HelperShift diff --git a/src/registration/forms/event.py b/src/registration/forms/event.py index 27466701a..b61c40103 100644 --- a/src/registration/forms/event.py +++ b/src/registration/forms/event.py @@ -3,7 +3,7 @@ from django.core.exceptions import ValidationError from django.core.files.base import ContentFile from django.db.models import Count -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.urls import reverse from badges.models import SpecialBadges diff --git a/src/registration/forms/helper.py b/src/registration/forms/helper.py index 71632d7f2..2d6ff8ec6 100644 --- a/src/registration/forms/helper.py +++ b/src/registration/forms/helper.py @@ -4,7 +4,7 @@ from django.db.models import Q from django.db.models.functions import Greatest from django.utils import translation -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from badges.models import Badge diff --git a/src/registration/forms/job.py b/src/registration/forms/job.py index 1ffc594f2..7d8fe7cdd 100644 --- a/src/registration/forms/job.py +++ b/src/registration/forms/job.py @@ -2,7 +2,7 @@ from django.conf import settings from django.core.exceptions import ValidationError from django.utils import formats -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from helfertool.forms import DatePicker, SingleUserSelectWidget from prerequisites.forms import PrerequisiteSelectWidget diff --git a/src/registration/forms/registration.py b/src/registration/forms/registration.py index b5fcca3b3..a31a0c13c 100644 --- a/src/registration/forms/registration.py +++ b/src/registration/forms/registration.py @@ -1,7 +1,7 @@ from django import forms from django.core.exceptions import ValidationError from django.utils.html import format_html -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from news.helper import news_add_email diff --git a/src/registration/forms/shift.py b/src/registration/forms/shift.py index 96ea6f4ac..90f71886f 100644 --- a/src/registration/forms/shift.py +++ b/src/registration/forms/shift.py @@ -1,6 +1,6 @@ from django import forms from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from gifts.models import GiftSet from helfertool.forms import DateTimePicker diff --git a/src/registration/migrations/0002_event_date.py b/src/registration/migrations/0002_event_date.py index 966f4a587..2da4d531e 100644 --- a/src/registration/migrations/0002_event_date.py +++ b/src/registration/migrations/0002_event_date.py @@ -4,7 +4,6 @@ import datetime from django.db import migrations, models -from django.utils.timezone import utc class Migration(migrations.Migration): @@ -18,7 +17,7 @@ class Migration(migrations.Migration): model_name="event", name="date", field=models.DateField( - default=datetime.datetime(2016, 3, 5, 18, 4, 27, 134060, tzinfo=utc), + default=datetime.datetime(2016, 3, 5, 18, 4, 27, 134060, tzinfo=datetime.timezone.utc), help_text="First day of event", verbose_name="Date", ), diff --git a/src/registration/migrations/0064_alter_event_url_name_alter_job_job_admins.py b/src/registration/migrations/0064_alter_event_url_name_alter_job_job_admins.py new file mode 100644 index 000000000..3db0cad7e --- /dev/null +++ b/src/registration/migrations/0064_alter_event_url_name_alter_job_job_admins.py @@ -0,0 +1,34 @@ +# Generated by Django 4.1.2 on 2022-10-15 17:01 + +from django.conf import settings +from django.db import migrations, models +import registration.models.event + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ("registration", "0063_alter_event_url_name"), + ] + + operations = [ + migrations.AlterField( + model_name="event", + name="url_name", + field=models.SlugField( + help_text="May contain letters, numbers, underscores or hyphens.", + max_length=200, + unique=True, + validators=[registration.models.event._validate_url_blocklist], + verbose_name="Name for URL", + ), + ), + migrations.AlterField( + model_name="job", + name="job_admins", + field=models.ManyToManyField( + blank=True, related_name="+", through="registration.JobAdminRoles", to=settings.AUTH_USER_MODEL + ), + ), + ] diff --git a/src/registration/models/adminroles.py b/src/registration/models/adminroles.py index f73daf16c..06d3ef33b 100644 --- a/src/registration/models/adminroles.py +++ b/src/registration/models/adminroles.py @@ -1,6 +1,6 @@ from django.contrib.auth import get_user_model from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from multiselectfield import MultiSelectField diff --git a/src/registration/models/event.py b/src/registration/models/event.py index 7d7d1182c..8bd96f85e 100644 --- a/src/registration/models/event.py +++ b/src/registration/models/event.py @@ -5,7 +5,7 @@ from django.db import models from django.db.models.signals import pre_save, post_save, post_delete from django.dispatch import receiver -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_bleach.models import BleachField from multiselectfield import MultiSelectField diff --git a/src/registration/models/eventarchive.py b/src/registration/models/eventarchive.py index ffd3d2ce7..7e80adb2b 100644 --- a/src/registration/models/eventarchive.py +++ b/src/registration/models/eventarchive.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .event import Event diff --git a/src/registration/models/helper.py b/src/registration/models/helper.py index ec741be94..a95582b37 100644 --- a/src/registration/models/helper.py +++ b/src/registration/models/helper.py @@ -6,7 +6,7 @@ from django.dispatch import receiver from django.template.loader import get_template from django.utils import translation -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from badges.models import Badge from gifts.models import HelpersGifts diff --git a/src/registration/models/helpershift.py b/src/registration/models/helpershift.py index adcbea8e1..651791c79 100644 --- a/src/registration/models/helpershift.py +++ b/src/registration/models/helpershift.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class HelperShift(models.Model): diff --git a/src/registration/models/job.py b/src/registration/models/job.py index 0d931215c..249f05c8f 100644 --- a/src/registration/models/job.py +++ b/src/registration/models/job.py @@ -2,7 +2,7 @@ from django.db import models from django.db.models.signals import pre_save from django.dispatch import receiver -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_bleach.models import BleachField from badges.models import BadgeDefaults diff --git a/src/registration/models/link.py b/src/registration/models/link.py index 0d31f71af..88f552ab7 100644 --- a/src/registration/models/link.py +++ b/src/registration/models/link.py @@ -1,6 +1,6 @@ from django.contrib.auth import get_user_model from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ import uuid diff --git a/src/registration/models/shift.py b/src/registration/models/shift.py index 43d7f7073..a02cea19c 100644 --- a/src/registration/models/shift.py +++ b/src/registration/models/shift.py @@ -4,7 +4,7 @@ from django.dispatch import receiver from django.template.defaultfilters import date as date_f from django.utils.timezone import localtime -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from collections import OrderedDict from copy import deepcopy diff --git a/src/registration/views/event.py b/src/registration/views/event.py index 875153d3a..b630832aa 100644 --- a/src/registration/views/event.py +++ b/src/registration/views/event.py @@ -2,7 +2,7 @@ from django.contrib.auth.decorators import login_required from django.http import Http404 from django.shortcuts import render, redirect, get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from account.templatetags.globalpermissions import has_addevent_group diff --git a/src/registration/views/helper.py b/src/registration/views/helper.py index aae2b75d4..b19d41cdf 100644 --- a/src/registration/views/helper.py +++ b/src/registration/views/helper.py @@ -3,7 +3,7 @@ from django.db.models.functions import TruncDate from django.http import Http404 from django.shortcuts import render, redirect, get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from corona.forms import ContactTracingDataForm diff --git a/src/registration/views/job.py b/src/registration/views/job.py index 078a4c7f1..d3297116a 100644 --- a/src/registration/views/job.py +++ b/src/registration/views/job.py @@ -1,7 +1,7 @@ from django.contrib import messages from django.contrib.auth.decorators import login_required from django.shortcuts import render, redirect, get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/registration/views/link.py b/src/registration/views/link.py index eea34b3c0..bb057a6fe 100644 --- a/src/registration/views/link.py +++ b/src/registration/views/link.py @@ -2,7 +2,7 @@ from django.contrib.auth.decorators import login_required from django.http import Http404 from django.shortcuts import render, redirect, get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/registration/views/registration.py b/src/registration/views/registration.py index 33e47216b..5d7412a88 100644 --- a/src/registration/views/registration.py +++ b/src/registration/views/registration.py @@ -4,7 +4,7 @@ from django.http import Http404 from django.shortcuts import render, redirect, get_object_or_404 from django.utils import timezone -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from corona.forms import ContactTracingDataForm diff --git a/src/registration/views/shift.py b/src/registration/views/shift.py index 4e4cd41db..f41a7c915 100644 --- a/src/registration/views/shift.py +++ b/src/registration/views/shift.py @@ -1,7 +1,7 @@ from django.contrib import messages from django.contrib.auth.decorators import login_required from django.shortcuts import render, redirect -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from helfertool.utils import nopermission diff --git a/src/requirements.txt b/src/requirements.txt index 223d9c89b..a4dcbdaa4 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -1,5 +1,5 @@ # django release -django==3.2.* +django==4.1.* # packages that we downgrade (for now) celery<5.0.0 diff --git a/src/requirements_dev.txt b/src/requirements_dev.txt index a7d7bda2a..bd412399c 100644 --- a/src/requirements_dev.txt +++ b/src/requirements_dev.txt @@ -6,3 +6,4 @@ pylint-django~=2.5 pylint-celery~=0.3 bump2version~=1.0 pre-commit~=2.20 +django-upgrade~=1.10.0 diff --git a/src/statistic/views/chart.py b/src/statistic/views/chart.py index 050d964d9..ce1c1c886 100644 --- a/src/statistic/views/chart.py +++ b/src/statistic/views/chart.py @@ -2,7 +2,7 @@ from django.db.models import Sum from django.http import JsonResponse from django.shortcuts import get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from badges.models import SpecialBadges diff --git a/src/toollog/models.py b/src/toollog/models.py index 2242f75a9..18f697a5c 100644 --- a/src/toollog/models.py +++ b/src/toollog/models.py @@ -3,7 +3,7 @@ from django.db import models from django.template.defaultfilters import date as date_f from django.utils.timezone import localtime -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from registration.models import Event, Helper diff --git a/src/toolsettings/models.py b/src/toolsettings/models.py index 849ff136a..8b1068724 100644 --- a/src/toolsettings/models.py +++ b/src/toolsettings/models.py @@ -1,6 +1,6 @@ from django.core.validators import RegexValidator from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_bleach.models import BleachField diff --git a/src/toolsettings/views/check.py b/src/toolsettings/views/check.py index 44d6f647f..1c41eea74 100644 --- a/src/toolsettings/views/check.py +++ b/src/toolsettings/views/check.py @@ -84,10 +84,10 @@ def check(request): ldap_ok = False # headers - header_host = request.META.get("HTTP_HOST") - header_remote_addr = request.META.get("REMOTE_ADDR") - header_x_forwarded_for = request.META.get("HTTP_X_FORWARDED_FOR") - header_x_forwarded_proto = request.META.get("HTTP_X_FORWARDED_PROTO") + header_host = request.headers.get("host") + header_remote_addr = request.headers.get("remote_addr") + header_x_forwarded_for = request.headers.get("x-forwarded-for") + header_x_forwarded_proto = request.headers.get("x-forwarded-proto") context = { "version": settings.HELFERTOOL_VERSION, From d5460ac5be78e429c635059929423ad0e756aded Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sat, 15 Oct 2022 19:18:58 +0200 Subject: [PATCH 08/92] fix issue when creating new events caused by django update --- src/registration/models/event.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/registration/models/event.py b/src/registration/models/event.py index 8bd96f85e..69c623e06 100644 --- a/src/registration/models/event.py +++ b/src/registration/models/event.py @@ -276,7 +276,9 @@ def clean(self): # the shirt sizes of the helpers must be selected in shirt_sizes # this means that it is not possible to disable a size as long one # helper has selected this size - if self.ask_shirt: + + # if PK is not set (=new event), the helper_set query fails + if self.ask_shirt and self.pk: not_removable = [] new_choices = self.get_shirt_choices() From 3b65611794ee9f812cafff802eac295ee3ba0c6b Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sat, 15 Oct 2022 19:48:37 +0200 Subject: [PATCH 09/92] fix placeholders on statistics page --- .../static/helfertool/theme/apps/_statistics.scss | 2 +- src/statistic/templates/statistic/overview.html | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/helfertool/static/helfertool/theme/apps/_statistics.scss b/src/helfertool/static/helfertool/theme/apps/_statistics.scss index 2ba701adb..d2d951fad 100644 --- a/src/helfertool/static/helfertool/theme/apps/_statistics.scss +++ b/src/helfertool/static/helfertool/theme/apps/_statistics.scss @@ -9,7 +9,7 @@ font-weight: bold; } - .placeholder { + .placeholdertext { text-align: center; color: $secondary; padding-top: 2em; diff --git a/src/statistic/templates/statistic/overview.html b/src/statistic/templates/statistic/overview.html index 08a3bd742..97931bde9 100644 --- a/src/statistic/templates/statistic/overview.html +++ b/src/statistic/templates/statistic/overview.html @@ -9,7 +9,7 @@

    {% trans "Statistics" %}

    {% trans "People" %}
    -
    {% trans "There are no helpers." %}
    +
    {% trans "There are no helpers." %}
    {% if num_people %}
    {% trans "Total number of people" %}: {{ num_people }}
    @@ -20,7 +20,7 @@

    {% trans "Statistics" %}

    {% trans "Shifts" %}
    -
    {% trans "There are no shifts." %}
    +
    {% trans "There are no shifts." %}
    {% if num_shift_slots %}
    {% trans "Total number of shift slots" %}: {{ num_shift_slots }}
    @@ -32,7 +32,7 @@

    {% trans "Statistics" %}

    {% trans "Nutrition" %}
    -
    {% trans "There are no helpers." %}
    +
    {% trans "There are no helpers." %}
    {% endif %} @@ -42,7 +42,7 @@

    {% trans "Statistics" %}

    {% trans "Timeline of registrations" %}
    -
    {% trans "There are no helpers." %}
    +
    {% trans "There are no helpers." %}
    From 5c385ff3b2994fc689f885713bbb179c0f19702f Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sun, 16 Oct 2022 18:59:18 +0200 Subject: [PATCH 10/92] minor design fixes * border for announcement text * text break for event name in menu --- src/helfertool/static/helfertool/theme/_announcement.scss | 2 ++ src/helfertool/static/helfertool/theme/_layout.scss | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/helfertool/static/helfertool/theme/_announcement.scss b/src/helfertool/static/helfertool/theme/_announcement.scss index 491c194c9..f45aa9878 100644 --- a/src/helfertool/static/helfertool/theme/_announcement.scss +++ b/src/helfertool/static/helfertool/theme/_announcement.scss @@ -5,4 +5,6 @@ text-align: center; padding-top: 5px; + + border-bottom: 1px darken($body-bg, 20%) solid; } diff --git a/src/helfertool/static/helfertool/theme/_layout.scss b/src/helfertool/static/helfertool/theme/_layout.scss index bb7e63b9e..546e8171c 100644 --- a/src/helfertool/static/helfertool/theme/_layout.scss +++ b/src/helfertool/static/helfertool/theme/_layout.scss @@ -60,6 +60,8 @@ html { padding-left: 1.5rem; padding-right: 1rem; + + overflow-wrap: break-word; } // header for different sections of sidemenu From 218c3575fb9b0f69b24b621b85914a6dbef88276 Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sat, 22 Oct 2022 20:11:41 +0200 Subject: [PATCH 11/92] do not show "registration disabled" note when link is used --- src/registration/templates/registration/form.html | 2 +- src/registration/views/registration.py | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/registration/templates/registration/form.html b/src/registration/templates/registration/form.html index 8d8a9d6da..7d8a530ee 100644 --- a/src/registration/templates/registration/form.html +++ b/src/registration/templates/registration/form.html @@ -24,7 +24,7 @@ - {% elif not event.active and not form.link %} + {% elif not event.active and not link %} diff --git a/src/registration/views/registration.py b/src/registration/views/registration.py index 5d7412a88..45192551e 100644 --- a/src/registration/views/registration.py +++ b/src/registration/views/registration.py @@ -143,7 +143,13 @@ def form(request, event_url_name, link_pk=None): return redirect("registered", event_url_name=event.url_name, helper_pk=helper.pk) - context = {"event": event, "form": form, "corona_form": corona_form, "user_is_involved": user_is_involved} + context = { + "event": event, + "form": form, + "corona_form": corona_form, + "user_is_involved": user_is_involved, + "link": link, + } return render(request, "registration/form.html", context) From 73edccebcfdd45ee9aaadb5e1e16efc86482130f Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sat, 22 Oct 2022 22:32:47 +0200 Subject: [PATCH 12/92] improve latex escaping for badges --- src/badges/creator.py | 43 ++++--- src/badges/encoding.py | 260 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 290 insertions(+), 13 deletions(-) create mode 100644 src/badges/encoding.py diff --git a/src/badges/creator.py b/src/badges/creator.py index aabb39722..c9ce530ea 100644 --- a/src/badges/creator.py +++ b/src/badges/creator.py @@ -6,6 +6,7 @@ import shutil import badges.models +from badges.encoding import LATEX_T1_CHARS class BadgeCreatorError(Exception): @@ -231,19 +232,35 @@ def _latex_color(self, string): return string.upper() def _latex_escape(self, string): - string = string.replace("\\", r"\textbackslash ") - string = string.replace(r" ", r"\ ") - string = string.replace(r"&", r"\&") - string = string.replace(r"%", r"\%") - string = string.replace(r"$", r"\$") - string = string.replace(r"#", r"\#") - string = string.replace(r"_", r"\_") - string = string.replace(r"{", r"\{") - string = string.replace(r"}", r"\}") - string = string.replace(r"~", r"\textasciitilde ") - string = string.replace(r"^", r"\textasciicircum ") - - return "{" + string + "}" + # mapping for special chars to LaTeX + mapping = [ + ["\\", "\\textbackslash "], + [" ", "\\ "], + ["&", "\\&"], + ["%", "\\%"], + ["$", "\\$"], + ["#", "\\#"], + ["_", "\\_"], + ["{", "\\{"], + ["}", "\\}"], + ["~", "\\textasciitilde "], + ["^", "\\textasciicircum "], + ] + + # allowed chars (LaTeX T1 encoding + mapped chars) + allowed_chars = LATEX_T1_CHARS + [m[0] for m in mapping] + + # remove chars that we do not want to have + string_cleaned = "" + for s in string: + if s in allowed_chars: + string_cleaned += s + + # apply mapping + for search, replace in mapping: + string_cleaned = string_cleaned.replace(search, replace) + + return "{" + string_cleaned + "}" def _copy_photo(self, src_path): return self._copy_file(src_path, self.dir_photos) diff --git a/src/badges/encoding.py b/src/badges/encoding.py new file mode 100644 index 000000000..53cde9cc8 --- /dev/null +++ b/src/badges/encoding.py @@ -0,0 +1,260 @@ +# source: https://en.wikipedia.org/w/index.php?title=Cork_encoding + +LATEX_T1_CHARS = [ + "\u0020", + "\u0021", + "\u0022", + "\u0023", + "\u0024", + "\u0025", + "\u0026", + "\u0028", + "\u0029", + "\u002a", + "\u002b", + "\u002c", + "\u002d", + "\u002e", + "\u002f", + "\u0030", + "\u0031", + "\u0032", + "\u0033", + "\u0034", + "\u0035", + "\u0036", + "\u0037", + "\u0038", + "\u0039", + "\u003a", + "\u003b", + "\u003c", + "\u003d", + "\u003e", + "\u003f", + "\u0040", + "\u0041", + "\u0042", + "\u0043", + "\u0044", + "\u0045", + "\u0046", + "\u0047", + "\u0048", + "\u0049", + "\u004a", + "\u004b", + "\u004c", + "\u004d", + "\u004e", + "\u004f", + "\u0050", + "\u0051", + "\u0052", + "\u0053", + "\u0054", + "\u0055", + "\u0056", + "\u0057", + "\u0058", + "\u0059", + "\u005a", + "\u005b", + "\u005c", + "\u005d", + "\u005e", + "\u005f", + "\u0060", + "\u0061", + "\u0062", + "\u0063", + "\u0064", + "\u0065", + "\u0066", + "\u0067", + "\u0068", + "\u0069", + "\u006a", + "\u006b", + "\u006c", + "\u006d", + "\u006e", + "\u006f", + "\u0070", + "\u0071", + "\u0072", + "\u0073", + "\u0074", + "\u0075", + "\u0076", + "\u0077", + "\u0078", + "\u0079", + "\u007a", + "\u007b", + "\u007c", + "\u007d", + "\u007e", + "\u00a1", + "\u00a3", + "\u00a7", + "\u00a8", + "\u00ab", + "\u00ad", + "\u00af", + "\u00b4", + "\u00b8", + "\u00bb", + "\u00bf", + "\u00c0", + "\u00c1", + "\u00c2", + "\u00c3", + "\u00c4", + "\u00c5", + "\u00c6", + "\u00c7", + "\u00c8", + "\u00c9", + "\u00ca", + "\u00cb", + "\u00cc", + "\u00cd", + "\u00ce", + "\u00cf", + "\u00d0", + "\u00d1", + "\u00d2", + "\u00d3", + "\u00d4", + "\u00d5", + "\u00d6", + "\u00d8", + "\u00d9", + "\u00da", + "\u00db", + "\u00dc", + "\u00dd", + "\u00de", + "\u00df", + "\u00e0", + "\u00e1", + "\u00e2", + "\u00e3", + "\u00e4", + "\u00e5", + "\u00e6", + "\u00e7", + "\u00e8", + "\u00e9", + "\u00ea", + "\u00eb", + "\u00ec", + "\u00ed", + "\u00ee", + "\u00ef", + "\u00f0", + "\u00f1", + "\u00f2", + "\u00f3", + "\u00f4", + "\u00f5", + "\u00f6", + "\u00f8", + "\u00f9", + "\u00fa", + "\u00fb", + "\u00fc", + "\u00fd", + "\u00fe", + "\u00ff", + "\u0102", + "\u0103", + "\u0104", + "\u0105", + "\u0106", + "\u0107", + "\u010c", + "\u010d", + "\u010e", + "\u010f", + "\u0111", + "\u0118", + "\u0119", + "\u011a", + "\u011b", + "\u011e", + "\u011f", + "\u0130", + "\u0131", + "\u0132", + "\u0133", + "\u0139", + "\u013a", + "\u013d", + "\u013e", + "\u0141", + "\u0142", + "\u0143", + "\u0144", + "\u0147", + "\u0148", + "\u014a", + "\u014b", + "\u0150", + "\u0151", + "\u0152", + "\u0153", + "\u0154", + "\u0155", + "\u0158", + "\u0159", + "\u015a", + "\u015b", + "\u0160", + "\u0161", + "\u0164", + "\u0165", + "\u016e", + "\u016f", + "\u0170", + "\u0171", + "\u0178", + "\u0179", + "\u017a", + "\u017b", + "\u017c", + "\u017d", + "\u017e", + "\u0218", + "\u0219", + "\u021a", + "\u021b", + "\u0237", + "\u02c6", + "\u02c7", + "\u02d8", + "\u02d9", + "\u02da", + "\u02db", + "\u02dc", + "\u02dd", + "\u1e9e", + "\u200b", + "\u2013", + "\u2014", + "\u2018", + "\u2019", + "\u201a", + "\u201c", + "\u201d", + "\u201e", + "\u2039", + "\u203a", + "\u2080", + "\ufb00", + "\ufb01", + "\ufb02", + "\ufb03", + "\ufb04", +] From 442ff4c23f992d83d3bcdda406f0971459ed8f0c Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sun, 23 Apr 2023 13:04:40 +0200 Subject: [PATCH 13/92] update to celery 5 --- .pre-commit-config.yaml | 4 ++-- src/helfertool/settings.py | 3 ++- src/helfertool/utils.py | 6 +++--- src/mail/tasks.py | 4 ++-- src/news/forms/mail.py | 2 +- src/news/tasks.py | 8 ++++---- src/news/urls.py | 1 + src/requirements.txt | 7 ++----- 8 files changed, 17 insertions(+), 18 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b2e41b458..195cde09f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,14 +2,14 @@ # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.2.0 + rev: v4.4.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - id: check-added-large-files - repo: https://github.com/psf/black - rev: 22.3.0 + rev: 23.3.0 hooks: - id: black - repo: local diff --git a/src/helfertool/settings.py b/src/helfertool/settings.py index 25025d12e..50e8b9ace 100644 --- a/src/helfertool/settings.py +++ b/src/helfertool/settings.py @@ -95,7 +95,7 @@ dict_get(config, "5672", "rabbitmq", "port"), dict_get(config, "", "rabbitmq", "vhost"), ) -CELERY_RESULT_BACKEND = CELERY_BROKER_URL +CELERY_RESULT_BACKEND = "django-db" CELERY_BROKER_POOL_LIMIT = None # caches @@ -549,6 +549,7 @@ "django_countries", "ckeditor", "compressor", + "django_celery_results", "registration.apps.RegistrationConfig", "statistic.apps.StatisticConfig", "badges.apps.BadgesConfig", diff --git a/src/helfertool/utils.py b/src/helfertool/utils.py index 00ffe0d8d..a93ce8331 100644 --- a/src/helfertool/utils.py +++ b/src/helfertool/utils.py @@ -3,10 +3,10 @@ from django.http import FileResponse, Http404 from django.shortcuts import render -from celery.five import monotonic # pylint: disable=E0611 from contextlib import contextmanager from pathlib import Path +import time import mimetypes @@ -84,13 +84,13 @@ def cache_lock(lock_id, oid, expire=60 * 10): We use the database cache backend here, this is not as good as using memcached, but should be good enough for the use case. By default, the lock expires after 10 minutes. """ - timeout_at = monotonic() + expire - 3 + timeout_at = time.monotonic() + expire - 3 # cache.add fails if the key already exists status = caches["locks"].add(lock_id, oid, expire) try: yield status finally: - if monotonic() < timeout_at and status: + if time.monotonic() < timeout_at and status: # don't release the lock if we exceeded the timeout # to lessen the chance of releasing an expired lock # owned by someone else diff --git a/src/mail/tasks.py b/src/mail/tasks.py index 413ce845b..47e122ece 100644 --- a/src/mail/tasks.py +++ b/src/mail/tasks.py @@ -1,13 +1,13 @@ from __future__ import absolute_import -from celery import task +from celery import shared_task from django.conf import settings from helfertool.utils import cache_lock from .receive import MailHandler -@task(bind=True) +@shared_task(bind=True) def receive_mails(self): if settings.RECEIVE_EMAIL_HOST: with cache_lock("receive_mails", self.app.oid) as acquired: diff --git a/src/news/forms/mail.py b/src/news/forms/mail.py index c365924ed..ca6d16d8f 100644 --- a/src/news/forms/mail.py +++ b/src/news/forms/mail.py @@ -64,7 +64,7 @@ def send_mail(self): # english may be set anyway append_english = False - unsubscribe_url = self.request.build_absolute_uri(reverse("news:unsubscribe", args=[""])) + unsubscribe_url = self.request.build_absolute_uri(reverse("news:unsubscribe_empty")) # since args is empty, the URL ends with // (this is a dirty trick to get the base URL for unsubscribe) unsubscribe_url = re.sub("//$", "/", unsubscribe_url) diff --git a/src/news/tasks.py b/src/news/tasks.py index 815592364..211cc79b3 100644 --- a/src/news/tasks.py +++ b/src/news/tasks.py @@ -5,7 +5,7 @@ from django.template.loader import render_to_string from django.utils import translation, timezone -from celery import task, shared_task +from celery import shared_task from mail.tracking import new_tracking_news @@ -16,7 +16,7 @@ @shared_task -def send_news_mails(first_language, append_english, subject, text, text_en, unsubsribe_url): +def send_news_mails(first_language, append_english, subject, text, text_en, unsubscribe_url): # import on top would break setup_periodic_tasks in helfertool/celery.py as django is not fully loaded # so we import it here from news.models import Person @@ -31,7 +31,7 @@ def send_news_mails(first_language, append_english, subject, text, text_en, unsu for person in Person.objects.filter(validated=True): # build mail text mail_text = "" - tmp_unsubscribe_url = unsubsribe_url + str(person.token) + tmp_unsubscribe_url = unsubscribe_url + str(person.token) if append_english: mail_text += render_to_string("news/mail/newsletter_english.txt") @@ -81,7 +81,7 @@ def _mail_text_language(language, text, unsubscribe_url): return tmp -@task +@shared_task def cleanup(): """Delete newsletter subscriptions that were not validated for some time (3 days by default). diff --git a/src/news/urls.py b/src/news/urls.py index 09c6c6f04..6293d89ba 100644 --- a/src/news/urls.py +++ b/src/news/urls.py @@ -16,6 +16,7 @@ # empty tokens are allowed since this is used to generate the link once # and add the specific tokens # empty tokens are handled in the view with an 404 + path("unsubscribe/", views.unsubscribe, name="unsubscribe_empty"), path("unsubscribe//", views.unsubscribe, name="unsubscribe"), path( "unsubscribe/done/", diff --git a/src/requirements.txt b/src/requirements.txt index a4dcbdaa4..6808d7317 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -1,11 +1,6 @@ # django release django==4.1.* -# packages that we downgrade (for now) -celery<5.0.0 -vine<5.0.0 # added due to celery -amqp<5.0.0 # pinned due to celery - # packages pinned to compatible version django_compressor~=4.1 django_ical~=1.8 @@ -20,6 +15,8 @@ django-icons~=22.1 django-libsass~=0.9 django-modeltranslation~=0.18 django-multiselectfield~=0.1 +celery~=5.2.7 +django-celery-results~=2.5.0 csscompressor~=0.9 jmespath~=1.0 mozilla-django-oidc~=2.0 From c93943346500e72ab08cd1079e279290cf0d0f98 Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sun, 23 Apr 2023 13:14:14 +0200 Subject: [PATCH 14/92] pylint update --- src/account/migrations/0001_initial.py | 1 - src/account/migrations/0002_auto_20190202_2336.py | 1 - src/account/migrations/0003_auto_20190203_1239.py | 1 - src/account/migrations/0004_agreement_end.py | 1 - src/account/migrations/0005_auto_20210523_1533.py | 1 - src/badges/migrations/0001_initial.py | 1 - src/badges/migrations/0002_auto_20151229_1953.py | 1 - src/badges/migrations/0003_badgedesign_bg_color.py | 1 - src/badges/migrations/0004_auto_20160306_1424.py | 1 - src/badges/migrations/0005_auto_20160306_1426.py | 1 - .../migrations/0006_badgedefaults_no_default_role.py | 1 - src/badges/migrations/0007_badgesettings_language.py | 1 - .../0008_badgesettings_only_coordinators.py | 1 - src/badges/migrations/0009_auto_20170414_1630.py | 1 - src/badges/migrations/0010_badge_barcode.py | 1 - src/badges/migrations/0011_set_barcode.py | 1 - src/badges/migrations/0012_auto_20181021_1954.py | 1 - src/badges/migrations/0013_auto_20200614_1918.py | 1 - src/badges/migrations/0014_auto_20200907_2140.py | 1 - src/badges/migrations/0015_badge_add_event.py | 1 - src/badges/migrations/0016_badge_fill_event.py | 1 - src/badges/migrations/0017_badge_event_required.py | 1 - src/badges/migrations/0018_specialbadges.py | 1 - src/badges/migrations/0019_auto_20201229_2210.py | 1 - src/badges/migrations/0020_auto_20210110_2100.py | 1 - src/badges/migrations/0021_auto_20210523_1533.py | 1 - src/badges/migrations/0022_auto_20211106_1716.py | 1 - .../migrations/0023_alter_specialbadges_badges.py | 1 - src/corona/migrations/0001_initial.py | 1 - src/corona/migrations/0002_coronasettings_rules.py | 1 - src/corona/migrations/0003_contacttracingdata.py | 1 - .../migrations/0004_contacttracingdata_agreed.py | 1 - .../migrations/0005_alter_coronasettings_rules.py | 1 - .../migrations/0006_alter_coronasettings_rules.py | 1 - src/gifts/migrations/0001_initial.py | 1 - src/gifts/migrations/0002_auto_20160514_2307.py | 1 - src/gifts/migrations/0003_auto_20160516_1551.py | 1 - src/gifts/migrations/0004_helpersgifts_got_shirt.py | 1 - src/gifts/migrations/0005_auto_20160611_2243.py | 1 - src/gifts/migrations/0006_deservedgiftset_present.py | 1 - src/gifts/migrations/0007_helpersgifts_buy_shirt.py | 1 - src/gifts/migrations/0008_auto_20170401_1512.py | 1 - src/gifts/migrations/0009_giftsettings.py | 1 - .../migrations/0010_add_giftsettings_for_events.py | 1 - .../0011_remove_helpersgifts_accomplished_shifts.py | 1 - src/gifts/migrations/0012_auto_20210523_1533.py | 1 - src/help/migrations/0001_initial.py | 1 - src/help/migrations/0002_auto_20161108_1826.py | 1 - src/help/migrations/0003_auto_20170326_1736.py | 1 - src/help/migrations/0004_auto_20210423_1854.py | 1 - src/help/migrations/0005_alter_issue_id.py | 1 - src/help/migrations/0006_auto_20210805_1127.py | 1 - src/inventory/migrations/0001_initial.py | 1 - src/inventory/migrations/0002_inventorysettings.py | 1 - src/inventory/migrations/0003_auto_20161113_2325.py | 1 - src/inventory/migrations/0004_auto_20161114_0957.py | 1 - src/inventory/migrations/0005_item_comment.py | 1 - src/inventory/migrations/0006_auto_20170330_2242.py | 1 - src/inventory/migrations/0007_auto_20170331_1717.py | 1 - src/inventory/migrations/0008_auto_20210523_1533.py | 1 - src/mail/migrations/0001_initial.py | 1 - src/mail/migrations/0002_auto_20160730_1504.py | 1 - src/mail/migrations/0003_auto_20160730_1505.py | 1 - src/mail/migrations/0004_sentmail_date.py | 1 - src/mail/migrations/0005_sentmail_failed.py | 1 - src/mail/migrations/0006_auto_20160730_1610.py | 1 - src/mail/migrations/0007_auto_20190617_1954.py | 1 - src/mail/migrations/0008_auto_20210523_1533.py | 1 - src/mail/migrations/0009_alter_sentmail_user.py | 1 - src/news/migrations/0001_initial.py | 1 - src/news/migrations/0002_person_token.py | 1 - src/news/migrations/0003_generate_tokens.py | 1 - src/news/migrations/0004_tokens_remove_null.py | 1 - src/news/migrations/0005_auto_20170326_1301.py | 1 - src/news/migrations/0006_person_withevent.py | 1 - src/news/migrations/0007_auto_20190428_1816.py | 1 - src/news/migrations/0008_auto_20210807_1623.py | 1 - src/news/migrations/0009_alter_person_validated.py | 1 - src/news/migrations/0010_person_mail_failed.py | 1 - src/prerequisites/migrations/0001_initial.py | 1 - .../migrations/0002_auto_20210523_1533.py | 1 - src/registration/migrations/0001_initial.py | 1 - src/registration/migrations/0002_event_date.py | 1 - .../migrations/0003_auto_20160323_1539.py | 1 - .../migrations/0004_auto_20160323_1600.py | 1 - .../migrations/0005_helper_privacy_statement.py | 1 - .../migrations/0006_auto_20160324_0005.py | 1 - src/registration/migrations/0007_event_ask_news.py | 1 - .../migrations/0008_auto_20160415_2121.py | 1 - src/registration/migrations/0009_event_gifts.py | 1 - src/registration/migrations/0010_shift_gifts.py | 1 - src/registration/migrations/0011_helper_got_shirt.py | 1 - .../migrations/0012_remove_helper_got_shirt.py | 1 - .../migrations/0013_auto_20160704_1214.py | 1 - src/registration/migrations/0014_event_inventory.py | 1 - .../migrations/0015_auto_20161111_1324.py | 1 - .../migrations/0016_auto_20170209_1455.py | 1 - .../migrations/0017_auto_20170210_1726.py | 1 - .../migrations/0018_event_changes_until.py | 1 - .../migrations/0019_auto_20170427_1411.py | 1 - .../migrations/0020_event_logo_social.py | 1 - .../migrations/0021_auto_20170509_1759.py | 1 - src/registration/migrations/0022_shift_hidden.py | 1 - .../migrations/0023_auto_20170618_1101.py | 1 - src/registration/migrations/0024_duplicate.py | 1 - .../migrations/0025_auto_20180424_2005.py | 1 - .../migrations/0026_auto_20180806_1400.py | 1 - .../migrations/0027_auto_20181020_2245.py | 1 - .../migrations/0028_auto_20190202_1441.py | 1 - .../migrations/0029_auto_20190202_2239.py | 1 - .../migrations/0030_helper_mail_failed.py | 1 - src/registration/migrations/0031_event_ask_phone.py | 1 - .../migrations/0032_auto_20200404_2111.py | 1 - src/registration/migrations/0033_add_helpershift.py | 1 - src/registration/migrations/0034_fill_helpershift.py | 1 - src/registration/migrations/0035_remove_shifts.py | 1 - .../migrations/0036_add_helpershift_to_helper.py | 1 - .../migrations/0037_auto_20200404_2236.py | 1 - src/registration/migrations/0038_eventadminroles.py | 1 - src/registration/migrations/0039_migrate_admins.py | 1 - .../migrations/0040_delete_old_admins.py | 1 - src/registration/migrations/0041_add_new_admins.py | 1 - src/registration/migrations/0042_admins_unique.py | 1 - .../migrations/0043_auto_20200409_1711.py | 1 - src/registration/migrations/0044_eventarchive.py | 1 - .../migrations/0045_auto_20210502_1717.py | 1 - .../migrations/0046_auto_20210523_1533.py | 1 - .../migrations/0047_auto_20210805_1127.py | 1 - ...0048_rename_ask_vegetarian_event_ask_nutrition.py | 1 - .../migrations/0049_auto_20210806_1249.py | 1 - .../migrations/0050_migrate_vegetarian.py | 1 - .../migrations/0051_remove_helper_vegetarian.py | 1 - .../migrations/0052_alter_event_ask_nutrition.py | 1 - .../migrations/0053_auto_20210808_1259.py | 1 - .../migrations/0054_alter_event_url_name.py | 1 - src/registration/migrations/0055_event_corona.py | 1 - .../migrations/0056_auto_20211106_1621.py | 1 - .../migrations/0057_auto_20220528_1729.py | 1 - .../migrations/0058_helper_validation_id.py | 1 - .../migrations/0059_add_job_admin_roles.py | 1 - .../migrations/0060_migrate_job_admin_roles.py | 1 - .../migrations/0061_remove_old_job_job_admins.py | 1 - .../migrations/0062_auto_20220709_1931.py | 1 - .../migrations/0063_alter_event_url_name.py | 1 - ...0064_alter_event_url_name_alter_job_job_admins.py | 1 - src/requirements_dev.txt | 12 +++++------- src/toollog/migrations/0001_initial.py | 1 - src/toollog/migrations/0002_auto_20201229_2210.py | 1 - src/toollog/migrations/0003_alter_logentry_id.py | 1 - .../migrations/0004_alter_logentry_message.py | 1 - .../0001_squashed_0003_auto_20180708_1917.py | 1 - .../migrations/0002_auto_20180624_1505.py | 1 - 152 files changed, 5 insertions(+), 158 deletions(-) diff --git a/src/account/migrations/0001_initial.py b/src/account/migrations/0001_initial.py index 91f079a31..6cbbf641c 100644 --- a/src/account/migrations/0001_initial.py +++ b/src/account/migrations/0001_initial.py @@ -9,7 +9,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/src/account/migrations/0002_auto_20190202_2336.py b/src/account/migrations/0002_auto_20190202_2336.py index 9c0c1f713..dfcc94ba7 100644 --- a/src/account/migrations/0002_auto_20190202_2336.py +++ b/src/account/migrations/0002_auto_20190202_2336.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("account", "0001_initial"), ] diff --git a/src/account/migrations/0003_auto_20190203_1239.py b/src/account/migrations/0003_auto_20190203_1239.py index 1436dd292..f0f0696eb 100644 --- a/src/account/migrations/0003_auto_20190203_1239.py +++ b/src/account/migrations/0003_auto_20190203_1239.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("account", "0002_auto_20190202_2336"), ] diff --git a/src/account/migrations/0004_agreement_end.py b/src/account/migrations/0004_agreement_end.py index 66f2d5c43..1284eb485 100644 --- a/src/account/migrations/0004_agreement_end.py +++ b/src/account/migrations/0004_agreement_end.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("account", "0003_auto_20190203_1239"), ] diff --git a/src/account/migrations/0005_auto_20210523_1533.py b/src/account/migrations/0005_auto_20210523_1533.py index 7ceac6a0d..6c0d427ae 100644 --- a/src/account/migrations/0005_auto_20210523_1533.py +++ b/src/account/migrations/0005_auto_20210523_1533.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("account", "0004_agreement_end"), ] diff --git a/src/badges/migrations/0001_initial.py b/src/badges/migrations/0001_initial.py index 0b7e09b76..36cbf481c 100644 --- a/src/badges/migrations/0001_initial.py +++ b/src/badges/migrations/0001_initial.py @@ -9,7 +9,6 @@ class Migration(migrations.Migration): - dependencies = [] operations = [ diff --git a/src/badges/migrations/0002_auto_20151229_1953.py b/src/badges/migrations/0002_auto_20151229_1953.py index 7a0728faf..ef24bc42f 100644 --- a/src/badges/migrations/0002_auto_20151229_1953.py +++ b/src/badges/migrations/0002_auto_20151229_1953.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0001_initial"), ("registration", "0001_initial"), diff --git a/src/badges/migrations/0003_badgedesign_bg_color.py b/src/badges/migrations/0003_badgedesign_bg_color.py index 492881c93..e5d86896c 100644 --- a/src/badges/migrations/0003_badgedesign_bg_color.py +++ b/src/badges/migrations/0003_badgedesign_bg_color.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0002_auto_20151229_1953"), ] diff --git a/src/badges/migrations/0004_auto_20160306_1424.py b/src/badges/migrations/0004_auto_20160306_1424.py index 98f824688..a1f8aa1eb 100644 --- a/src/badges/migrations/0004_auto_20160306_1424.py +++ b/src/badges/migrations/0004_auto_20160306_1424.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0003_badgedesign_bg_color"), ] diff --git a/src/badges/migrations/0005_auto_20160306_1426.py b/src/badges/migrations/0005_auto_20160306_1426.py index 64775858b..34d372b65 100644 --- a/src/badges/migrations/0005_auto_20160306_1426.py +++ b/src/badges/migrations/0005_auto_20160306_1426.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0004_auto_20160306_1424"), ] diff --git a/src/badges/migrations/0006_badgedefaults_no_default_role.py b/src/badges/migrations/0006_badgedefaults_no_default_role.py index 311adb1f1..d79233b50 100644 --- a/src/badges/migrations/0006_badgedefaults_no_default_role.py +++ b/src/badges/migrations/0006_badgedefaults_no_default_role.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0005_auto_20160306_1426"), ] diff --git a/src/badges/migrations/0007_badgesettings_language.py b/src/badges/migrations/0007_badgesettings_language.py index 3d4e863b5..892dd6bca 100644 --- a/src/badges/migrations/0007_badgesettings_language.py +++ b/src/badges/migrations/0007_badgesettings_language.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0006_badgedefaults_no_default_role"), ] diff --git a/src/badges/migrations/0008_badgesettings_only_coordinators.py b/src/badges/migrations/0008_badgesettings_only_coordinators.py index a2db85fbd..806cde3de 100644 --- a/src/badges/migrations/0008_badgesettings_only_coordinators.py +++ b/src/badges/migrations/0008_badgesettings_only_coordinators.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0007_badgesettings_language"), ] diff --git a/src/badges/migrations/0009_auto_20170414_1630.py b/src/badges/migrations/0009_auto_20170414_1630.py index 7d91b5c4f..d9fdbeb26 100644 --- a/src/badges/migrations/0009_auto_20170414_1630.py +++ b/src/badges/migrations/0009_auto_20170414_1630.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0008_badgesettings_only_coordinators"), ] diff --git a/src/badges/migrations/0010_badge_barcode.py b/src/badges/migrations/0010_badge_barcode.py index 06a06c571..a9bb24400 100644 --- a/src/badges/migrations/0010_badge_barcode.py +++ b/src/badges/migrations/0010_badge_barcode.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0009_auto_20170414_1630"), ] diff --git a/src/badges/migrations/0011_set_barcode.py b/src/badges/migrations/0011_set_barcode.py index ffd567bdc..22b88c963 100644 --- a/src/badges/migrations/0011_set_barcode.py +++ b/src/badges/migrations/0011_set_barcode.py @@ -13,7 +13,6 @@ def copy_barcode(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ("badges", "0010_badge_barcode"), ] diff --git a/src/badges/migrations/0012_auto_20181021_1954.py b/src/badges/migrations/0012_auto_20181021_1954.py index d814b4702..a6b0a81cb 100644 --- a/src/badges/migrations/0012_auto_20181021_1954.py +++ b/src/badges/migrations/0012_auto_20181021_1954.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0011_set_barcode"), ] diff --git a/src/badges/migrations/0013_auto_20200614_1918.py b/src/badges/migrations/0013_auto_20200614_1918.py index 2fbf06661..5dabed16c 100644 --- a/src/badges/migrations/0013_auto_20200614_1918.py +++ b/src/badges/migrations/0013_auto_20200614_1918.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0012_auto_20181021_1954"), ] diff --git a/src/badges/migrations/0014_auto_20200907_2140.py b/src/badges/migrations/0014_auto_20200907_2140.py index 6ed806510..4ceb7bd9a 100644 --- a/src/badges/migrations/0014_auto_20200907_2140.py +++ b/src/badges/migrations/0014_auto_20200907_2140.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0013_auto_20200614_1918"), ] diff --git a/src/badges/migrations/0015_badge_add_event.py b/src/badges/migrations/0015_badge_add_event.py index 2a24f439e..8d73ec826 100644 --- a/src/badges/migrations/0015_badge_add_event.py +++ b/src/badges/migrations/0015_badge_add_event.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0043_auto_20200409_1711"), ("badges", "0014_auto_20200907_2140"), diff --git a/src/badges/migrations/0016_badge_fill_event.py b/src/badges/migrations/0016_badge_fill_event.py index 26e568174..ac677d164 100644 --- a/src/badges/migrations/0016_badge_fill_event.py +++ b/src/badges/migrations/0016_badge_fill_event.py @@ -12,7 +12,6 @@ def fill_event_field(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ("badges", "0015_badge_add_event"), ] diff --git a/src/badges/migrations/0017_badge_event_required.py b/src/badges/migrations/0017_badge_event_required.py index acb8fce19..9ccde245e 100644 --- a/src/badges/migrations/0017_badge_event_required.py +++ b/src/badges/migrations/0017_badge_event_required.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0043_auto_20200409_1711"), ("badges", "0016_badge_fill_event"), diff --git a/src/badges/migrations/0018_specialbadges.py b/src/badges/migrations/0018_specialbadges.py index 98ca1a4a4..a30c0c884 100644 --- a/src/badges/migrations/0018_specialbadges.py +++ b/src/badges/migrations/0018_specialbadges.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0043_auto_20200409_1711"), ("badges", "0017_badge_event_required"), diff --git a/src/badges/migrations/0019_auto_20201229_2210.py b/src/badges/migrations/0019_auto_20201229_2210.py index 3e3c9144e..8ffb0b68d 100644 --- a/src/badges/migrations/0019_auto_20201229_2210.py +++ b/src/badges/migrations/0019_auto_20201229_2210.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0018_specialbadges"), ] diff --git a/src/badges/migrations/0020_auto_20210110_2100.py b/src/badges/migrations/0020_auto_20210110_2100.py index 6c9c04863..3e56bedc2 100644 --- a/src/badges/migrations/0020_auto_20210110_2100.py +++ b/src/badges/migrations/0020_auto_20210110_2100.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0019_auto_20201229_2210"), ] diff --git a/src/badges/migrations/0021_auto_20210523_1533.py b/src/badges/migrations/0021_auto_20210523_1533.py index 5d0e7c113..2a2863b8c 100644 --- a/src/badges/migrations/0021_auto_20210523_1533.py +++ b/src/badges/migrations/0021_auto_20210523_1533.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0020_auto_20210110_2100"), ] diff --git a/src/badges/migrations/0022_auto_20211106_1716.py b/src/badges/migrations/0022_auto_20211106_1716.py index e4e88ee2d..680938b7e 100644 --- a/src/badges/migrations/0022_auto_20211106_1716.py +++ b/src/badges/migrations/0022_auto_20211106_1716.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0021_auto_20210523_1533"), ] diff --git a/src/badges/migrations/0023_alter_specialbadges_badges.py b/src/badges/migrations/0023_alter_specialbadges_badges.py index 7c3655459..ce04e4751 100644 --- a/src/badges/migrations/0023_alter_specialbadges_badges.py +++ b/src/badges/migrations/0023_alter_specialbadges_badges.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0022_auto_20211106_1716"), ] diff --git a/src/corona/migrations/0001_initial.py b/src/corona/migrations/0001_initial.py index 1950413b9..334111d0e 100644 --- a/src/corona/migrations/0001_initial.py +++ b/src/corona/migrations/0001_initial.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/src/corona/migrations/0002_coronasettings_rules.py b/src/corona/migrations/0002_coronasettings_rules.py index 07f43b701..185ac0c88 100644 --- a/src/corona/migrations/0002_coronasettings_rules.py +++ b/src/corona/migrations/0002_coronasettings_rules.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("corona", "0001_initial"), ] diff --git a/src/corona/migrations/0003_contacttracingdata.py b/src/corona/migrations/0003_contacttracingdata.py index 197036d35..9c5747d84 100644 --- a/src/corona/migrations/0003_contacttracingdata.py +++ b/src/corona/migrations/0003_contacttracingdata.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0055_event_corona"), ("corona", "0002_coronasettings_rules"), diff --git a/src/corona/migrations/0004_contacttracingdata_agreed.py b/src/corona/migrations/0004_contacttracingdata_agreed.py index cc90172c2..8b4f06fc7 100644 --- a/src/corona/migrations/0004_contacttracingdata_agreed.py +++ b/src/corona/migrations/0004_contacttracingdata_agreed.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("corona", "0003_contacttracingdata"), ] diff --git a/src/corona/migrations/0005_alter_coronasettings_rules.py b/src/corona/migrations/0005_alter_coronasettings_rules.py index c3fdffc09..0371d4167 100644 --- a/src/corona/migrations/0005_alter_coronasettings_rules.py +++ b/src/corona/migrations/0005_alter_coronasettings_rules.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("corona", "0004_contacttracingdata_agreed"), ] diff --git a/src/corona/migrations/0006_alter_coronasettings_rules.py b/src/corona/migrations/0006_alter_coronasettings_rules.py index faa33c31c..52af92ff2 100644 --- a/src/corona/migrations/0006_alter_coronasettings_rules.py +++ b/src/corona/migrations/0006_alter_coronasettings_rules.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("corona", "0005_alter_coronasettings_rules"), ] diff --git a/src/gifts/migrations/0001_initial.py b/src/gifts/migrations/0001_initial.py index a648211c2..27ed106c8 100644 --- a/src/gifts/migrations/0001_initial.py +++ b/src/gifts/migrations/0001_initial.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [] diff --git a/src/gifts/migrations/0002_auto_20160514_2307.py b/src/gifts/migrations/0002_auto_20160514_2307.py index b5e4eb711..58fef610f 100644 --- a/src/gifts/migrations/0002_auto_20160514_2307.py +++ b/src/gifts/migrations/0002_auto_20160514_2307.py @@ -8,7 +8,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0009_event_gifts"), ("gifts", "0001_initial"), diff --git a/src/gifts/migrations/0003_auto_20160516_1551.py b/src/gifts/migrations/0003_auto_20160516_1551.py index 0af5166b7..b4e8ee2a8 100644 --- a/src/gifts/migrations/0003_auto_20160516_1551.py +++ b/src/gifts/migrations/0003_auto_20160516_1551.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("gifts", "0002_auto_20160514_2307"), ] diff --git a/src/gifts/migrations/0004_helpersgifts_got_shirt.py b/src/gifts/migrations/0004_helpersgifts_got_shirt.py index dac4ce61e..b2701fb9e 100644 --- a/src/gifts/migrations/0004_helpersgifts_got_shirt.py +++ b/src/gifts/migrations/0004_helpersgifts_got_shirt.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("gifts", "0003_auto_20160516_1551"), ] diff --git a/src/gifts/migrations/0005_auto_20160611_2243.py b/src/gifts/migrations/0005_auto_20160611_2243.py index 285a41324..76914dbe8 100644 --- a/src/gifts/migrations/0005_auto_20160611_2243.py +++ b/src/gifts/migrations/0005_auto_20160611_2243.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("gifts", "0004_helpersgifts_got_shirt"), ] diff --git a/src/gifts/migrations/0006_deservedgiftset_present.py b/src/gifts/migrations/0006_deservedgiftset_present.py index d9afb5fd3..62a1b1efd 100644 --- a/src/gifts/migrations/0006_deservedgiftset_present.py +++ b/src/gifts/migrations/0006_deservedgiftset_present.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("gifts", "0005_auto_20160611_2243"), ] diff --git a/src/gifts/migrations/0007_helpersgifts_buy_shirt.py b/src/gifts/migrations/0007_helpersgifts_buy_shirt.py index e16a6b298..085747552 100644 --- a/src/gifts/migrations/0007_helpersgifts_buy_shirt.py +++ b/src/gifts/migrations/0007_helpersgifts_buy_shirt.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("gifts", "0006_deservedgiftset_present"), ] diff --git a/src/gifts/migrations/0008_auto_20170401_1512.py b/src/gifts/migrations/0008_auto_20170401_1512.py index 304e01f5a..fe7113bf4 100644 --- a/src/gifts/migrations/0008_auto_20170401_1512.py +++ b/src/gifts/migrations/0008_auto_20170401_1512.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0017_auto_20170210_1726"), ("gifts", "0007_helpersgifts_buy_shirt"), diff --git a/src/gifts/migrations/0009_giftsettings.py b/src/gifts/migrations/0009_giftsettings.py index 938d1ac24..5d44cde74 100644 --- a/src/gifts/migrations/0009_giftsettings.py +++ b/src/gifts/migrations/0009_giftsettings.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("gifts", "0008_auto_20170401_1512"), ] diff --git a/src/gifts/migrations/0010_add_giftsettings_for_events.py b/src/gifts/migrations/0010_add_giftsettings_for_events.py index 9d9755a48..fa614fa2f 100644 --- a/src/gifts/migrations/0010_add_giftsettings_for_events.py +++ b/src/gifts/migrations/0010_add_giftsettings_for_events.py @@ -13,7 +13,6 @@ def create_giftsettings(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ("gifts", "0009_giftsettings"), ] diff --git a/src/gifts/migrations/0011_remove_helpersgifts_accomplished_shifts.py b/src/gifts/migrations/0011_remove_helpersgifts_accomplished_shifts.py index 81bd16d9c..49a3b6605 100644 --- a/src/gifts/migrations/0011_remove_helpersgifts_accomplished_shifts.py +++ b/src/gifts/migrations/0011_remove_helpersgifts_accomplished_shifts.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("gifts", "0010_add_giftsettings_for_events"), ("registration", "0036_add_helpershift_to_helper"), diff --git a/src/gifts/migrations/0012_auto_20210523_1533.py b/src/gifts/migrations/0012_auto_20210523_1533.py index 9c583ab38..e0c38b089 100644 --- a/src/gifts/migrations/0012_auto_20210523_1533.py +++ b/src/gifts/migrations/0012_auto_20210523_1533.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("gifts", "0011_remove_helpersgifts_accomplished_shifts"), ] diff --git a/src/help/migrations/0001_initial.py b/src/help/migrations/0001_initial.py index 70302dba1..c4223e8cc 100644 --- a/src/help/migrations/0001_initial.py +++ b/src/help/migrations/0001_initial.py @@ -8,7 +8,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/src/help/migrations/0002_auto_20161108_1826.py b/src/help/migrations/0002_auto_20161108_1826.py index 73f15cb6d..76252f35a 100644 --- a/src/help/migrations/0002_auto_20161108_1826.py +++ b/src/help/migrations/0002_auto_20161108_1826.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("help", "0001_initial"), ] diff --git a/src/help/migrations/0003_auto_20170326_1736.py b/src/help/migrations/0003_auto_20170326_1736.py index 8c69c3aaa..1503feef2 100644 --- a/src/help/migrations/0003_auto_20170326_1736.py +++ b/src/help/migrations/0003_auto_20170326_1736.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("help", "0002_auto_20161108_1826"), ] diff --git a/src/help/migrations/0004_auto_20210423_1854.py b/src/help/migrations/0004_auto_20210423_1854.py index 710413854..d1dbdf497 100644 --- a/src/help/migrations/0004_auto_20210423_1854.py +++ b/src/help/migrations/0004_auto_20210423_1854.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("help", "0003_auto_20170326_1736"), ] diff --git a/src/help/migrations/0005_alter_issue_id.py b/src/help/migrations/0005_alter_issue_id.py index 8868dd1ca..98e242f2d 100644 --- a/src/help/migrations/0005_alter_issue_id.py +++ b/src/help/migrations/0005_alter_issue_id.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("help", "0004_auto_20210423_1854"), ] diff --git a/src/help/migrations/0006_auto_20210805_1127.py b/src/help/migrations/0006_auto_20210805_1127.py index 48b3e4370..98b0e6f41 100644 --- a/src/help/migrations/0006_auto_20210805_1127.py +++ b/src/help/migrations/0006_auto_20210805_1127.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("help", "0005_alter_issue_id"), diff --git a/src/inventory/migrations/0001_initial.py b/src/inventory/migrations/0001_initial.py index d9b8a8f86..59f5653a9 100644 --- a/src/inventory/migrations/0001_initial.py +++ b/src/inventory/migrations/0001_initial.py @@ -8,7 +8,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/src/inventory/migrations/0002_inventorysettings.py b/src/inventory/migrations/0002_inventorysettings.py index 256a6d8b3..0dcf740b6 100644 --- a/src/inventory/migrations/0002_inventorysettings.py +++ b/src/inventory/migrations/0002_inventorysettings.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0015_auto_20161111_1324"), ("inventory", "0001_initial"), diff --git a/src/inventory/migrations/0003_auto_20161113_2325.py b/src/inventory/migrations/0003_auto_20161113_2325.py index 045558baa..89f48fada 100644 --- a/src/inventory/migrations/0003_auto_20161113_2325.py +++ b/src/inventory/migrations/0003_auto_20161113_2325.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("inventory", "0002_inventorysettings"), ] diff --git a/src/inventory/migrations/0004_auto_20161114_0957.py b/src/inventory/migrations/0004_auto_20161114_0957.py index a7d80d41c..9edef1e05 100644 --- a/src/inventory/migrations/0004_auto_20161114_0957.py +++ b/src/inventory/migrations/0004_auto_20161114_0957.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("inventory", "0003_auto_20161113_2325"), ] diff --git a/src/inventory/migrations/0005_item_comment.py b/src/inventory/migrations/0005_item_comment.py index 5dea2e850..1dd1c548a 100644 --- a/src/inventory/migrations/0005_item_comment.py +++ b/src/inventory/migrations/0005_item_comment.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("inventory", "0004_auto_20161114_0957"), ] diff --git a/src/inventory/migrations/0006_auto_20170330_2242.py b/src/inventory/migrations/0006_auto_20170330_2242.py index 3fbc10510..95972b816 100644 --- a/src/inventory/migrations/0006_auto_20170330_2242.py +++ b/src/inventory/migrations/0006_auto_20170330_2242.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("inventory", "0005_item_comment"), ] diff --git a/src/inventory/migrations/0007_auto_20170331_1717.py b/src/inventory/migrations/0007_auto_20170331_1717.py index fc2e59f79..132769175 100644 --- a/src/inventory/migrations/0007_auto_20170331_1717.py +++ b/src/inventory/migrations/0007_auto_20170331_1717.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("inventory", "0006_auto_20170330_2242"), ] diff --git a/src/inventory/migrations/0008_auto_20210523_1533.py b/src/inventory/migrations/0008_auto_20210523_1533.py index a0175a081..5db17ea0b 100644 --- a/src/inventory/migrations/0008_auto_20210523_1533.py +++ b/src/inventory/migrations/0008_auto_20210523_1533.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("inventory", "0007_auto_20170331_1717"), ] diff --git a/src/mail/migrations/0001_initial.py b/src/mail/migrations/0001_initial.py index 2bf14579a..cc036c810 100644 --- a/src/mail/migrations/0001_initial.py +++ b/src/mail/migrations/0001_initial.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/src/mail/migrations/0002_auto_20160730_1504.py b/src/mail/migrations/0002_auto_20160730_1504.py index 4317ce6a8..e93554478 100644 --- a/src/mail/migrations/0002_auto_20160730_1504.py +++ b/src/mail/migrations/0002_auto_20160730_1504.py @@ -8,7 +8,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("mail", "0001_initial"), diff --git a/src/mail/migrations/0003_auto_20160730_1505.py b/src/mail/migrations/0003_auto_20160730_1505.py index b764a9adf..58fb0c6af 100644 --- a/src/mail/migrations/0003_auto_20160730_1505.py +++ b/src/mail/migrations/0003_auto_20160730_1505.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("mail", "0002_auto_20160730_1504"), ] diff --git a/src/mail/migrations/0004_sentmail_date.py b/src/mail/migrations/0004_sentmail_date.py index 63b02962d..8ec675ec6 100644 --- a/src/mail/migrations/0004_sentmail_date.py +++ b/src/mail/migrations/0004_sentmail_date.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("mail", "0003_auto_20160730_1505"), ] diff --git a/src/mail/migrations/0005_sentmail_failed.py b/src/mail/migrations/0005_sentmail_failed.py index 729b859f7..abad60193 100644 --- a/src/mail/migrations/0005_sentmail_failed.py +++ b/src/mail/migrations/0005_sentmail_failed.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("mail", "0004_sentmail_date"), ] diff --git a/src/mail/migrations/0006_auto_20160730_1610.py b/src/mail/migrations/0006_auto_20160730_1610.py index 661130886..b071c0578 100644 --- a/src/mail/migrations/0006_auto_20160730_1610.py +++ b/src/mail/migrations/0006_auto_20160730_1610.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("mail", "0005_sentmail_failed"), ] diff --git a/src/mail/migrations/0007_auto_20190617_1954.py b/src/mail/migrations/0007_auto_20190617_1954.py index 5fdd8a652..615e92ad6 100644 --- a/src/mail/migrations/0007_auto_20190617_1954.py +++ b/src/mail/migrations/0007_auto_20190617_1954.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0030_helper_mail_failed"), ("mail", "0006_auto_20160730_1610"), diff --git a/src/mail/migrations/0008_auto_20210523_1533.py b/src/mail/migrations/0008_auto_20210523_1533.py index e27253392..41b504752 100644 --- a/src/mail/migrations/0008_auto_20210523_1533.py +++ b/src/mail/migrations/0008_auto_20210523_1533.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("mail", "0007_auto_20190617_1954"), ] diff --git a/src/mail/migrations/0009_alter_sentmail_user.py b/src/mail/migrations/0009_alter_sentmail_user.py index 878587126..1c14119dc 100644 --- a/src/mail/migrations/0009_alter_sentmail_user.py +++ b/src/mail/migrations/0009_alter_sentmail_user.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("mail", "0008_auto_20210523_1533"), diff --git a/src/news/migrations/0001_initial.py b/src/news/migrations/0001_initial.py index 109ea2198..b6dab5a22 100644 --- a/src/news/migrations/0001_initial.py +++ b/src/news/migrations/0001_initial.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [] diff --git a/src/news/migrations/0002_person_token.py b/src/news/migrations/0002_person_token.py index 3ce9faac1..ba8dbd775 100644 --- a/src/news/migrations/0002_person_token.py +++ b/src/news/migrations/0002_person_token.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("news", "0001_initial"), ] diff --git a/src/news/migrations/0003_generate_tokens.py b/src/news/migrations/0003_generate_tokens.py index b9a81b969..15825db69 100644 --- a/src/news/migrations/0003_generate_tokens.py +++ b/src/news/migrations/0003_generate_tokens.py @@ -14,7 +14,6 @@ def gen_uuid(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ("news", "0002_person_token"), ] diff --git a/src/news/migrations/0004_tokens_remove_null.py b/src/news/migrations/0004_tokens_remove_null.py index 4f19cbae0..f9baa97bf 100644 --- a/src/news/migrations/0004_tokens_remove_null.py +++ b/src/news/migrations/0004_tokens_remove_null.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("news", "0003_generate_tokens"), ] diff --git a/src/news/migrations/0005_auto_20170326_1301.py b/src/news/migrations/0005_auto_20170326_1301.py index 6caa43363..fedf1c16d 100644 --- a/src/news/migrations/0005_auto_20170326_1301.py +++ b/src/news/migrations/0005_auto_20170326_1301.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("news", "0004_tokens_remove_null"), ] diff --git a/src/news/migrations/0006_person_withevent.py b/src/news/migrations/0006_person_withevent.py index 0e5cb39b3..c835257e9 100644 --- a/src/news/migrations/0006_person_withevent.py +++ b/src/news/migrations/0006_person_withevent.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("news", "0005_auto_20170326_1301"), ] diff --git a/src/news/migrations/0007_auto_20190428_1816.py b/src/news/migrations/0007_auto_20190428_1816.py index f7bc791f7..6221e42ba 100644 --- a/src/news/migrations/0007_auto_20190428_1816.py +++ b/src/news/migrations/0007_auto_20190428_1816.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("news", "0006_person_withevent"), ] diff --git a/src/news/migrations/0008_auto_20210807_1623.py b/src/news/migrations/0008_auto_20210807_1623.py index 9ebbdc130..6cb69e535 100644 --- a/src/news/migrations/0008_auto_20210807_1623.py +++ b/src/news/migrations/0008_auto_20210807_1623.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("news", "0007_auto_20190428_1816"), ] diff --git a/src/news/migrations/0009_alter_person_validated.py b/src/news/migrations/0009_alter_person_validated.py index 01dad8d8d..c912bbeeb 100644 --- a/src/news/migrations/0009_alter_person_validated.py +++ b/src/news/migrations/0009_alter_person_validated.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("news", "0008_auto_20210807_1623"), ] diff --git a/src/news/migrations/0010_person_mail_failed.py b/src/news/migrations/0010_person_mail_failed.py index 816aa3359..9965f33d7 100644 --- a/src/news/migrations/0010_person_mail_failed.py +++ b/src/news/migrations/0010_person_mail_failed.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("news", "0009_alter_person_validated"), ] diff --git a/src/prerequisites/migrations/0001_initial.py b/src/prerequisites/migrations/0001_initial.py index b0ad82217..c410c7600 100644 --- a/src/prerequisites/migrations/0001_initial.py +++ b/src/prerequisites/migrations/0001_initial.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/src/prerequisites/migrations/0002_auto_20210523_1533.py b/src/prerequisites/migrations/0002_auto_20210523_1533.py index 29b2b8afe..9ca62f61e 100644 --- a/src/prerequisites/migrations/0002_auto_20210523_1533.py +++ b/src/prerequisites/migrations/0002_auto_20210523_1533.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("prerequisites", "0001_initial"), ] diff --git a/src/registration/migrations/0001_initial.py b/src/registration/migrations/0001_initial.py index 33a1d52f1..7bd8800f2 100644 --- a/src/registration/migrations/0001_initial.py +++ b/src/registration/migrations/0001_initial.py @@ -9,7 +9,6 @@ class Migration(migrations.Migration): - dependencies = [ ("badges", "0001_initial"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), diff --git a/src/registration/migrations/0002_event_date.py b/src/registration/migrations/0002_event_date.py index 2da4d531e..0b7906400 100644 --- a/src/registration/migrations/0002_event_date.py +++ b/src/registration/migrations/0002_event_date.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0001_initial"), ] diff --git a/src/registration/migrations/0003_auto_20160323_1539.py b/src/registration/migrations/0003_auto_20160323_1539.py index d2a97bab2..2c2988a7f 100644 --- a/src/registration/migrations/0003_auto_20160323_1539.py +++ b/src/registration/migrations/0003_auto_20160323_1539.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0002_event_date"), ] diff --git a/src/registration/migrations/0004_auto_20160323_1600.py b/src/registration/migrations/0004_auto_20160323_1600.py index b03483e9b..5c6cc4e3a 100644 --- a/src/registration/migrations/0004_auto_20160323_1600.py +++ b/src/registration/migrations/0004_auto_20160323_1600.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0003_auto_20160323_1539"), ] diff --git a/src/registration/migrations/0005_helper_privacy_statement.py b/src/registration/migrations/0005_helper_privacy_statement.py index df564fbab..7535191f8 100644 --- a/src/registration/migrations/0005_helper_privacy_statement.py +++ b/src/registration/migrations/0005_helper_privacy_statement.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0004_auto_20160323_1600"), ] diff --git a/src/registration/migrations/0006_auto_20160324_0005.py b/src/registration/migrations/0006_auto_20160324_0005.py index 484654900..8ce699b07 100644 --- a/src/registration/migrations/0006_auto_20160324_0005.py +++ b/src/registration/migrations/0006_auto_20160324_0005.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0005_helper_privacy_statement"), ] diff --git a/src/registration/migrations/0007_event_ask_news.py b/src/registration/migrations/0007_event_ask_news.py index cfec68140..46fa56524 100644 --- a/src/registration/migrations/0007_event_ask_news.py +++ b/src/registration/migrations/0007_event_ask_news.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0006_auto_20160324_0005"), ] diff --git a/src/registration/migrations/0008_auto_20160415_2121.py b/src/registration/migrations/0008_auto_20160415_2121.py index a3cba2a16..867fcbb96 100644 --- a/src/registration/migrations/0008_auto_20160415_2121.py +++ b/src/registration/migrations/0008_auto_20160415_2121.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0007_event_ask_news"), ] diff --git a/src/registration/migrations/0009_event_gifts.py b/src/registration/migrations/0009_event_gifts.py index c35dbc82f..76fa14ae0 100644 --- a/src/registration/migrations/0009_event_gifts.py +++ b/src/registration/migrations/0009_event_gifts.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0008_auto_20160415_2121"), ] diff --git a/src/registration/migrations/0010_shift_gifts.py b/src/registration/migrations/0010_shift_gifts.py index 78d579a8c..82a8814c4 100644 --- a/src/registration/migrations/0010_shift_gifts.py +++ b/src/registration/migrations/0010_shift_gifts.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("gifts", "0003_auto_20160516_1551"), ("registration", "0009_event_gifts"), diff --git a/src/registration/migrations/0011_helper_got_shirt.py b/src/registration/migrations/0011_helper_got_shirt.py index 00d89b188..6e824680c 100644 --- a/src/registration/migrations/0011_helper_got_shirt.py +++ b/src/registration/migrations/0011_helper_got_shirt.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0010_shift_gifts"), ] diff --git a/src/registration/migrations/0012_remove_helper_got_shirt.py b/src/registration/migrations/0012_remove_helper_got_shirt.py index a9ac53cd3..9010f6109 100644 --- a/src/registration/migrations/0012_remove_helper_got_shirt.py +++ b/src/registration/migrations/0012_remove_helper_got_shirt.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0011_helper_got_shirt"), ] diff --git a/src/registration/migrations/0013_auto_20160704_1214.py b/src/registration/migrations/0013_auto_20160704_1214.py index e438797f3..473a15ff2 100644 --- a/src/registration/migrations/0013_auto_20160704_1214.py +++ b/src/registration/migrations/0013_auto_20160704_1214.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0012_remove_helper_got_shirt"), ] diff --git a/src/registration/migrations/0014_event_inventory.py b/src/registration/migrations/0014_event_inventory.py index 434543c20..efe6c834d 100644 --- a/src/registration/migrations/0014_event_inventory.py +++ b/src/registration/migrations/0014_event_inventory.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0013_auto_20160704_1214"), ] diff --git a/src/registration/migrations/0015_auto_20161111_1324.py b/src/registration/migrations/0015_auto_20161111_1324.py index 12f6d5a75..2ad3c2890 100644 --- a/src/registration/migrations/0015_auto_20161111_1324.py +++ b/src/registration/migrations/0015_auto_20161111_1324.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0014_event_inventory"), ] diff --git a/src/registration/migrations/0016_auto_20170209_1455.py b/src/registration/migrations/0016_auto_20170209_1455.py index 583b2b944..32e6a0e3b 100644 --- a/src/registration/migrations/0016_auto_20170209_1455.py +++ b/src/registration/migrations/0016_auto_20170209_1455.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0015_auto_20161111_1324"), ] diff --git a/src/registration/migrations/0017_auto_20170210_1726.py b/src/registration/migrations/0017_auto_20170210_1726.py index e7fed3785..1aaed26ad 100644 --- a/src/registration/migrations/0017_auto_20170210_1726.py +++ b/src/registration/migrations/0017_auto_20170210_1726.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0016_auto_20170209_1455"), ] diff --git a/src/registration/migrations/0018_event_changes_until.py b/src/registration/migrations/0018_event_changes_until.py index 88057afc1..3f3172eb7 100644 --- a/src/registration/migrations/0018_event_changes_until.py +++ b/src/registration/migrations/0018_event_changes_until.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0017_auto_20170210_1726"), ] diff --git a/src/registration/migrations/0019_auto_20170427_1411.py b/src/registration/migrations/0019_auto_20170427_1411.py index f0f87ad9d..257780a27 100644 --- a/src/registration/migrations/0019_auto_20170427_1411.py +++ b/src/registration/migrations/0019_auto_20170427_1411.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0018_event_changes_until"), ] diff --git a/src/registration/migrations/0020_event_logo_social.py b/src/registration/migrations/0020_event_logo_social.py index f99a9a5df..f8be12545 100644 --- a/src/registration/migrations/0020_event_logo_social.py +++ b/src/registration/migrations/0020_event_logo_social.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0019_auto_20170427_1411"), ] diff --git a/src/registration/migrations/0021_auto_20170509_1759.py b/src/registration/migrations/0021_auto_20170509_1759.py index 5ad1a65a8..40041f70b 100644 --- a/src/registration/migrations/0021_auto_20170509_1759.py +++ b/src/registration/migrations/0021_auto_20170509_1759.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0020_event_logo_social"), ] diff --git a/src/registration/migrations/0022_shift_hidden.py b/src/registration/migrations/0022_shift_hidden.py index a4ee04228..3ed3fa76e 100644 --- a/src/registration/migrations/0022_shift_hidden.py +++ b/src/registration/migrations/0022_shift_hidden.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0021_auto_20170509_1759"), ] diff --git a/src/registration/migrations/0023_auto_20170618_1101.py b/src/registration/migrations/0023_auto_20170618_1101.py index e91c9d71f..9a9c92ce6 100644 --- a/src/registration/migrations/0023_auto_20170618_1101.py +++ b/src/registration/migrations/0023_auto_20170618_1101.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0022_shift_hidden"), ] diff --git a/src/registration/migrations/0024_duplicate.py b/src/registration/migrations/0024_duplicate.py index 5dd35a272..05e8f4305 100644 --- a/src/registration/migrations/0024_duplicate.py +++ b/src/registration/migrations/0024_duplicate.py @@ -8,7 +8,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0023_auto_20170618_1101"), ] diff --git a/src/registration/migrations/0025_auto_20180424_2005.py b/src/registration/migrations/0025_auto_20180424_2005.py index 28f7ad4c4..24bacb80b 100644 --- a/src/registration/migrations/0025_auto_20180424_2005.py +++ b/src/registration/migrations/0025_auto_20180424_2005.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0024_duplicate"), ] diff --git a/src/registration/migrations/0026_auto_20180806_1400.py b/src/registration/migrations/0026_auto_20180806_1400.py index cf7632626..000398f0b 100644 --- a/src/registration/migrations/0026_auto_20180806_1400.py +++ b/src/registration/migrations/0026_auto_20180806_1400.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0025_auto_20180424_2005"), ] diff --git a/src/registration/migrations/0027_auto_20181020_2245.py b/src/registration/migrations/0027_auto_20181020_2245.py index dc18c5603..b4d276ebd 100644 --- a/src/registration/migrations/0027_auto_20181020_2245.py +++ b/src/registration/migrations/0027_auto_20181020_2245.py @@ -9,7 +9,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0026_auto_20180806_1400"), ] diff --git a/src/registration/migrations/0028_auto_20190202_1441.py b/src/registration/migrations/0028_auto_20190202_1441.py index bf980cadb..f7895852c 100644 --- a/src/registration/migrations/0028_auto_20190202_1441.py +++ b/src/registration/migrations/0028_auto_20190202_1441.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0027_auto_20181020_2245"), ] diff --git a/src/registration/migrations/0029_auto_20190202_2239.py b/src/registration/migrations/0029_auto_20190202_2239.py index ed33923b8..796434305 100644 --- a/src/registration/migrations/0029_auto_20190202_2239.py +++ b/src/registration/migrations/0029_auto_20190202_2239.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0028_auto_20190202_1441"), ] diff --git a/src/registration/migrations/0030_helper_mail_failed.py b/src/registration/migrations/0030_helper_mail_failed.py index 1b1b57e5f..1962999f4 100644 --- a/src/registration/migrations/0030_helper_mail_failed.py +++ b/src/registration/migrations/0030_helper_mail_failed.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0029_auto_20190202_2239"), ] diff --git a/src/registration/migrations/0031_event_ask_phone.py b/src/registration/migrations/0031_event_ask_phone.py index 5dd730c63..5c99914cc 100644 --- a/src/registration/migrations/0031_event_ask_phone.py +++ b/src/registration/migrations/0031_event_ask_phone.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0030_helper_mail_failed"), ] diff --git a/src/registration/migrations/0032_auto_20200404_2111.py b/src/registration/migrations/0032_auto_20200404_2111.py index 6e0281e76..fc08c66c1 100644 --- a/src/registration/migrations/0032_auto_20200404_2111.py +++ b/src/registration/migrations/0032_auto_20200404_2111.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("prerequisites", "0001_initial"), ("registration", "0031_event_ask_phone"), diff --git a/src/registration/migrations/0033_add_helpershift.py b/src/registration/migrations/0033_add_helpershift.py index c4737bd61..167ccd049 100644 --- a/src/registration/migrations/0033_add_helpershift.py +++ b/src/registration/migrations/0033_add_helpershift.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0032_auto_20200404_2111"), ] diff --git a/src/registration/migrations/0034_fill_helpershift.py b/src/registration/migrations/0034_fill_helpershift.py index b28c3e48e..c48f51da5 100644 --- a/src/registration/migrations/0034_fill_helpershift.py +++ b/src/registration/migrations/0034_fill_helpershift.py @@ -29,7 +29,6 @@ def create_helpershift_relations(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ("registration", "0033_add_helpershift"), ("gifts", "0008_auto_20170401_1512"), diff --git a/src/registration/migrations/0035_remove_shifts.py b/src/registration/migrations/0035_remove_shifts.py index fdc465c7d..0d6bfd7b2 100644 --- a/src/registration/migrations/0035_remove_shifts.py +++ b/src/registration/migrations/0035_remove_shifts.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0034_fill_helpershift"), ] diff --git a/src/registration/migrations/0036_add_helpershift_to_helper.py b/src/registration/migrations/0036_add_helpershift_to_helper.py index 2efa1d397..40bbc30c4 100644 --- a/src/registration/migrations/0036_add_helpershift_to_helper.py +++ b/src/registration/migrations/0036_add_helpershift_to_helper.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0035_remove_shifts"), ] diff --git a/src/registration/migrations/0037_auto_20200404_2236.py b/src/registration/migrations/0037_auto_20200404_2236.py index 08e87971c..7378b6f5e 100644 --- a/src/registration/migrations/0037_auto_20200404_2236.py +++ b/src/registration/migrations/0037_auto_20200404_2236.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0036_add_helpershift_to_helper"), ] diff --git a/src/registration/migrations/0038_eventadminroles.py b/src/registration/migrations/0038_eventadminroles.py index de8ff9d43..934017e73 100644 --- a/src/registration/migrations/0038_eventadminroles.py +++ b/src/registration/migrations/0038_eventadminroles.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("registration", "0037_auto_20200404_2236"), diff --git a/src/registration/migrations/0039_migrate_admins.py b/src/registration/migrations/0039_migrate_admins.py index c599aa6f9..cda166b15 100644 --- a/src/registration/migrations/0039_migrate_admins.py +++ b/src/registration/migrations/0039_migrate_admins.py @@ -19,7 +19,6 @@ def create_through_relations(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ("registration", "0038_eventadminroles"), ] diff --git a/src/registration/migrations/0040_delete_old_admins.py b/src/registration/migrations/0040_delete_old_admins.py index 50c3397f4..c394efb8b 100644 --- a/src/registration/migrations/0040_delete_old_admins.py +++ b/src/registration/migrations/0040_delete_old_admins.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0039_migrate_admins"), ] diff --git a/src/registration/migrations/0041_add_new_admins.py b/src/registration/migrations/0041_add_new_admins.py index f9dc749af..883a70abe 100644 --- a/src/registration/migrations/0041_add_new_admins.py +++ b/src/registration/migrations/0041_add_new_admins.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("registration", "0040_delete_old_admins"), diff --git a/src/registration/migrations/0042_admins_unique.py b/src/registration/migrations/0042_admins_unique.py index ff2bbcd79..190d77678 100644 --- a/src/registration/migrations/0042_admins_unique.py +++ b/src/registration/migrations/0042_admins_unique.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("registration", "0041_add_new_admins"), diff --git a/src/registration/migrations/0043_auto_20200409_1711.py b/src/registration/migrations/0043_auto_20200409_1711.py index caadc7a09..9d7ffafff 100644 --- a/src/registration/migrations/0043_auto_20200409_1711.py +++ b/src/registration/migrations/0043_auto_20200409_1711.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0042_admins_unique"), ] diff --git a/src/registration/migrations/0044_eventarchive.py b/src/registration/migrations/0044_eventarchive.py index 4f4ea8777..952069fb4 100644 --- a/src/registration/migrations/0044_eventarchive.py +++ b/src/registration/migrations/0044_eventarchive.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0043_auto_20200409_1711"), ] diff --git a/src/registration/migrations/0045_auto_20210502_1717.py b/src/registration/migrations/0045_auto_20210502_1717.py index fcb812e59..677f1cc71 100644 --- a/src/registration/migrations/0045_auto_20210502_1717.py +++ b/src/registration/migrations/0045_auto_20210502_1717.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("registration", "0044_eventarchive"), diff --git a/src/registration/migrations/0046_auto_20210523_1533.py b/src/registration/migrations/0046_auto_20210523_1533.py index 18456173f..c72744731 100644 --- a/src/registration/migrations/0046_auto_20210523_1533.py +++ b/src/registration/migrations/0046_auto_20210523_1533.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0045_auto_20210502_1717"), ] diff --git a/src/registration/migrations/0047_auto_20210805_1127.py b/src/registration/migrations/0047_auto_20210805_1127.py index 13c0229c5..1a040f155 100644 --- a/src/registration/migrations/0047_auto_20210805_1127.py +++ b/src/registration/migrations/0047_auto_20210805_1127.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0046_auto_20210523_1533"), ] diff --git a/src/registration/migrations/0048_rename_ask_vegetarian_event_ask_nutrition.py b/src/registration/migrations/0048_rename_ask_vegetarian_event_ask_nutrition.py index c790eac3b..3a63895b9 100644 --- a/src/registration/migrations/0048_rename_ask_vegetarian_event_ask_nutrition.py +++ b/src/registration/migrations/0048_rename_ask_vegetarian_event_ask_nutrition.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0047_auto_20210805_1127"), ] diff --git a/src/registration/migrations/0049_auto_20210806_1249.py b/src/registration/migrations/0049_auto_20210806_1249.py index c71b2df99..c99a5090e 100644 --- a/src/registration/migrations/0049_auto_20210806_1249.py +++ b/src/registration/migrations/0049_auto_20210806_1249.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0048_rename_ask_vegetarian_event_ask_nutrition"), ] diff --git a/src/registration/migrations/0050_migrate_vegetarian.py b/src/registration/migrations/0050_migrate_vegetarian.py index be308160d..51696969c 100644 --- a/src/registration/migrations/0050_migrate_vegetarian.py +++ b/src/registration/migrations/0050_migrate_vegetarian.py @@ -13,7 +13,6 @@ def migrate_vegetarian(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ("registration", "0049_auto_20210806_1249"), ] diff --git a/src/registration/migrations/0051_remove_helper_vegetarian.py b/src/registration/migrations/0051_remove_helper_vegetarian.py index e61bbecda..12500f1ba 100644 --- a/src/registration/migrations/0051_remove_helper_vegetarian.py +++ b/src/registration/migrations/0051_remove_helper_vegetarian.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0050_migrate_vegetarian"), ] diff --git a/src/registration/migrations/0052_alter_event_ask_nutrition.py b/src/registration/migrations/0052_alter_event_ask_nutrition.py index 3a54590d0..6d3cd73ef 100644 --- a/src/registration/migrations/0052_alter_event_ask_nutrition.py +++ b/src/registration/migrations/0052_alter_event_ask_nutrition.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0051_remove_helper_vegetarian"), ] diff --git a/src/registration/migrations/0053_auto_20210808_1259.py b/src/registration/migrations/0053_auto_20210808_1259.py index bbf2a3432..eb5223f5a 100644 --- a/src/registration/migrations/0053_auto_20210808_1259.py +++ b/src/registration/migrations/0053_auto_20210808_1259.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0052_alter_event_ask_nutrition"), ] diff --git a/src/registration/migrations/0054_alter_event_url_name.py b/src/registration/migrations/0054_alter_event_url_name.py index cd6597a70..9c81fcfdd 100644 --- a/src/registration/migrations/0054_alter_event_url_name.py +++ b/src/registration/migrations/0054_alter_event_url_name.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0053_auto_20210808_1259"), ] diff --git a/src/registration/migrations/0055_event_corona.py b/src/registration/migrations/0055_event_corona.py index 0ce800e24..e8f871cb5 100644 --- a/src/registration/migrations/0055_event_corona.py +++ b/src/registration/migrations/0055_event_corona.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0054_alter_event_url_name"), ] diff --git a/src/registration/migrations/0056_auto_20211106_1621.py b/src/registration/migrations/0056_auto_20211106_1621.py index 252d5b8d8..11c1d4537 100644 --- a/src/registration/migrations/0056_auto_20211106_1621.py +++ b/src/registration/migrations/0056_auto_20211106_1621.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0055_event_corona"), ] diff --git a/src/registration/migrations/0057_auto_20220528_1729.py b/src/registration/migrations/0057_auto_20220528_1729.py index 6858a4e90..694884af0 100644 --- a/src/registration/migrations/0057_auto_20220528_1729.py +++ b/src/registration/migrations/0057_auto_20220528_1729.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0056_auto_20211106_1621"), ] diff --git a/src/registration/migrations/0058_helper_validation_id.py b/src/registration/migrations/0058_helper_validation_id.py index 57dc56cbb..5da6bdb0c 100644 --- a/src/registration/migrations/0058_helper_validation_id.py +++ b/src/registration/migrations/0058_helper_validation_id.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0057_auto_20220528_1729"), ] diff --git a/src/registration/migrations/0059_add_job_admin_roles.py b/src/registration/migrations/0059_add_job_admin_roles.py index 42ae7a7cd..194494774 100644 --- a/src/registration/migrations/0059_add_job_admin_roles.py +++ b/src/registration/migrations/0059_add_job_admin_roles.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("registration", "0058_helper_validation_id"), diff --git a/src/registration/migrations/0060_migrate_job_admin_roles.py b/src/registration/migrations/0060_migrate_job_admin_roles.py index 078c4f7bb..c23a85ca6 100644 --- a/src/registration/migrations/0060_migrate_job_admin_roles.py +++ b/src/registration/migrations/0060_migrate_job_admin_roles.py @@ -19,7 +19,6 @@ def create_through_relations(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ("registration", "0059_add_job_admin_roles"), ] diff --git a/src/registration/migrations/0061_remove_old_job_job_admins.py b/src/registration/migrations/0061_remove_old_job_job_admins.py index 5fc1b2a37..b00ad1c22 100644 --- a/src/registration/migrations/0061_remove_old_job_job_admins.py +++ b/src/registration/migrations/0061_remove_old_job_job_admins.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0060_migrate_job_admin_roles"), ] diff --git a/src/registration/migrations/0062_auto_20220709_1931.py b/src/registration/migrations/0062_auto_20220709_1931.py index aab07db4e..597acb3ad 100644 --- a/src/registration/migrations/0062_auto_20220709_1931.py +++ b/src/registration/migrations/0062_auto_20220709_1931.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0061_remove_old_job_job_admins"), ] diff --git a/src/registration/migrations/0063_alter_event_url_name.py b/src/registration/migrations/0063_alter_event_url_name.py index 9a4ba4172..4539e2675 100644 --- a/src/registration/migrations/0063_alter_event_url_name.py +++ b/src/registration/migrations/0063_alter_event_url_name.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("registration", "0062_auto_20220709_1931"), ] diff --git a/src/registration/migrations/0064_alter_event_url_name_alter_job_job_admins.py b/src/registration/migrations/0064_alter_event_url_name_alter_job_job_admins.py index 3db0cad7e..5b6d072f1 100644 --- a/src/registration/migrations/0064_alter_event_url_name_alter_job_job_admins.py +++ b/src/registration/migrations/0064_alter_event_url_name_alter_job_job_admins.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("registration", "0063_alter_event_url_name"), diff --git a/src/requirements_dev.txt b/src/requirements_dev.txt index bd412399c..cf103f496 100644 --- a/src/requirements_dev.txt +++ b/src/requirements_dev.txt @@ -1,9 +1,7 @@ -# packages that we downgrade (for now) -pylint<2.15.0 - # packages pinned to compatible version -pylint-django~=2.5 +pylint~=2.17.2 +pylint-django~=2.5.3 pylint-celery~=0.3 -bump2version~=1.0 -pre-commit~=2.20 -django-upgrade~=1.10.0 +bump2version~=1.0.1 +pre-commit~=3.2.2 +django-upgrade~=1.13.0 diff --git a/src/toollog/migrations/0001_initial.py b/src/toollog/migrations/0001_initial.py index d1b1d5d2b..b0e5d6b43 100644 --- a/src/toollog/migrations/0001_initial.py +++ b/src/toollog/migrations/0001_initial.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/src/toollog/migrations/0002_auto_20201229_2210.py b/src/toollog/migrations/0002_auto_20201229_2210.py index d78a9ff6d..0a00a4759 100644 --- a/src/toollog/migrations/0002_auto_20201229_2210.py +++ b/src/toollog/migrations/0002_auto_20201229_2210.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("toollog", "0001_initial"), ] diff --git a/src/toollog/migrations/0003_alter_logentry_id.py b/src/toollog/migrations/0003_alter_logentry_id.py index af1995b62..c2572f988 100644 --- a/src/toollog/migrations/0003_alter_logentry_id.py +++ b/src/toollog/migrations/0003_alter_logentry_id.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("toollog", "0002_auto_20201229_2210"), ] diff --git a/src/toollog/migrations/0004_alter_logentry_message.py b/src/toollog/migrations/0004_alter_logentry_message.py index 3aecfc8ee..95b558618 100644 --- a/src/toollog/migrations/0004_alter_logentry_message.py +++ b/src/toollog/migrations/0004_alter_logentry_message.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("toollog", "0003_alter_logentry_id"), ] diff --git a/src/toolsettings/migrations/0001_squashed_0003_auto_20180708_1917.py b/src/toolsettings/migrations/0001_squashed_0003_auto_20180708_1917.py index 892309677..092b6b767 100644 --- a/src/toolsettings/migrations/0001_squashed_0003_auto_20180708_1917.py +++ b/src/toolsettings/migrations/0001_squashed_0003_auto_20180708_1917.py @@ -8,7 +8,6 @@ class Migration(migrations.Migration): - replaces = [ ("toolsettings", "0001_initial"), ("toolsettings", "0002_auto_20180624_1505"), diff --git a/src/toolsettings/migrations/0002_auto_20180624_1505.py b/src/toolsettings/migrations/0002_auto_20180624_1505.py index af4d85bcb..03bde6e76 100644 --- a/src/toolsettings/migrations/0002_auto_20180624_1505.py +++ b/src/toolsettings/migrations/0002_auto_20180624_1505.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("toolsettings", "0001_initial"), ] From 46302fe05a11152b7bbf4adb3ac21f5747b11a1d Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sun, 23 Apr 2023 14:49:00 +0200 Subject: [PATCH 15/92] update to django 4.2 --- src/badges/models/badge.py | 2 +- src/badges/models/settings.py | 16 +++++++++++++--- src/registration/models/event.py | 2 +- src/requirements.txt | 10 +++++----- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/badges/models/badge.py b/src/badges/models/badge.py index e54a1a652..13451bc8a 100644 --- a/src/badges/models/badge.py +++ b/src/badges/models/badge.py @@ -122,7 +122,7 @@ def save(self, *args, **kwargs): if not self.barcode: self.barcode = self.pk + 1000 # prevent barcodes like "10" - self.save() + self.save(update_fields=["barcode"]) if self._old_photo != self.photo and self.photo: # pylint: disable=no-member diff --git a/src/badges/models/settings.py b/src/badges/models/settings.py index 718187a75..77f727968 100644 --- a/src/badges/models/settings.py +++ b/src/badges/models/settings.py @@ -108,14 +108,24 @@ class BadgeSettings(models.Model): verbose_name=_("Print barcodes on badges to avoid duplicates"), ) - def save(self, *args, **kwargs): + def __str__(self): + return "Badge settings - {}".format(self.event) + + def save(self, force_insert=False, force_update=False, using=None, update_fields=None): if not hasattr(self, "defaults"): defaults = BadgeDefaults() defaults.save() self.defaults = defaults - - super(BadgeSettings, self).save(*args, **kwargs) + if update_fields is not None: + update_fields = {"defaults"}.union(update_fields) + + super(BadgeSettings, self).save( + force_insert=force_insert, + force_update=force_update, + using=using, + update_fields=update_fields, + ) def creation_possible(self): if not self.latex_template: diff --git a/src/registration/models/event.py b/src/registration/models/event.py index 69c623e06..c27353e71 100644 --- a/src/registration/models/event.py +++ b/src/registration/models/event.py @@ -316,7 +316,7 @@ def save(self, *args, **kwargs): if initial_save: self.logo = logo_original self.logo_social = logo_social_original - self.save() + self.save(update_fields=["logo", "logo_social"]) def get_shirt_choices(self, internal=True): """ diff --git a/src/requirements.txt b/src/requirements.txt index 6808d7317..eb54d4b83 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -1,17 +1,17 @@ # django release -django==4.1.* +django==4.2.* # packages pinned to compatible version django_compressor~=4.1 django_ical~=1.8 -django_select2~=7.10 +django_select2~=8.1.1 django-auth-ldap~=4.1 django-axes~=5.39 django-bleach~=3.0 -django-bootstrap5~=22.1 +django-bootstrap5~=23.1 django-ckeditor~=6.5 django-countries~=7.3 -django-icons~=22.1 +django-icons~=23.1 django-libsass~=0.9 django-modeltranslation~=0.18 django-multiselectfield~=0.1 @@ -19,7 +19,7 @@ celery~=5.2.7 django-celery-results~=2.5.0 csscompressor~=0.9 jmespath~=1.0 -mozilla-django-oidc~=2.0 +mozilla-django-oidc~=3.0.0 pillow~=9.2 python-dateutil~=2.8 python-magic~=0.4 From 38c619511aa9c3f0072fb1ffdb650a3bdfc629cd Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sun, 23 Apr 2023 15:08:49 +0200 Subject: [PATCH 16/92] update names of badge objects in django admin --- src/badges/admin.py | 3 ++- src/badges/models/defaults.py | 5 +++++ src/badges/models/design.py | 2 +- src/badges/models/permission.py | 2 +- src/badges/models/role.py | 2 +- src/badges/models/settings.py | 2 +- 6 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/badges/admin.py b/src/badges/admin.py index 850bc3aab..5c4d97fec 100644 --- a/src/badges/admin.py +++ b/src/badges/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from .models import BadgeSettings, BadgeDesign, BadgePermission, BadgeRole, Badge, SpecialBadges +from .models import BadgeSettings, BadgeDesign, BadgePermission, BadgeRole, BadgeDefaults, Badge, SpecialBadges class SpecialBadgesAdmin(admin.ModelAdmin): @@ -12,4 +12,5 @@ class SpecialBadgesAdmin(admin.ModelAdmin): admin.site.register(BadgeDesign) admin.site.register(BadgePermission) admin.site.register(BadgeRole) +admin.site.register(BadgeDefaults) admin.site.register(SpecialBadges, SpecialBadgesAdmin) diff --git a/src/badges/models/defaults.py b/src/badges/models/defaults.py index 41c32b4d7..9e5034271 100644 --- a/src/badges/models/defaults.py +++ b/src/badges/models/defaults.py @@ -28,6 +28,11 @@ class BadgeDefaults(models.Model): verbose_name=_("Do not print default roles on badges"), ) + def __str__(self): + if hasattr(self, "badgesettings"): + return str(self.badgesettings.event) + return "Badge defaults without settings" + def duplicate(self): new_defaults = deepcopy(self) new_defaults.pk = None diff --git a/src/badges/models/design.py b/src/badges/models/design.py index d6f7f5b1d..cdd0af10b 100644 --- a/src/badges/models/design.py +++ b/src/badges/models/design.py @@ -77,7 +77,7 @@ def get_event(self): ) def __str__(self): - return self.name + return "{} - {}".format(self.badge_settings.event, self.name) def duplicate(self, settings): new_design = deepcopy(self) diff --git a/src/badges/models/permission.py b/src/badges/models/permission.py index 0d38720d3..be6dad39d 100644 --- a/src/badges/models/permission.py +++ b/src/badges/models/permission.py @@ -24,7 +24,7 @@ class BadgePermission(models.Model): ) def __str__(self): - return self.name + return "{} - {}".format(self.badge_settings.event, self.name) def duplicate(self, settings): new_permission = deepcopy(self) diff --git a/src/badges/models/role.py b/src/badges/models/role.py index d52b7f24d..83a88f6b7 100644 --- a/src/badges/models/role.py +++ b/src/badges/models/role.py @@ -31,7 +31,7 @@ class BadgeRole(models.Model): ) def __str__(self): - return self.name + return "{} - {}".format(self.badge_settings.event, self.name) def duplicate(self, settings, permission_map): new_role = deepcopy(self) diff --git a/src/badges/models/settings.py b/src/badges/models/settings.py index 77f727968..f57c5fb81 100644 --- a/src/badges/models/settings.py +++ b/src/badges/models/settings.py @@ -109,7 +109,7 @@ class BadgeSettings(models.Model): ) def __str__(self): - return "Badge settings - {}".format(self.event) + return str(self.event) def save(self, force_insert=False, force_update=False, using=None, update_fields=None): if not hasattr(self, "defaults"): From 4cfbe221182140bf9b08a19193ce5db0deee17aa Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Sun, 23 Apr 2023 15:21:12 +0200 Subject: [PATCH 17/92] use python 3.11 for github action --- .github/workflows/check-codestyle.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-codestyle.yml b/.github/workflows/check-codestyle.yml index 230a4826a..91575a29a 100644 --- a/.github/workflows/check-codestyle.yml +++ b/.github/workflows/check-codestyle.yml @@ -13,10 +13,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up Python 3.9 + - name: Set up Python 3.11 uses: actions/setup-python@v2 with: - python-version: 3.9 + python-version: 3.11 - name: Install dependencies via apt run: | From c61cf050a4f45043906ddad8714e2e16b051d4a7 Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Fri, 16 Jun 2023 19:38:45 +0200 Subject: [PATCH 18/92] make container.sh macos compatible --- scripts/container.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/container.sh b/scripts/container.sh index 4412135f9..9bbbda3ac 100755 --- a/scripts/container.sh +++ b/scripts/container.sh @@ -63,7 +63,7 @@ set -u # command: build if [ "$action" = "build" ] ; then # build without cache and with updated base image - container_version="$(date --utc --iso-8601=seconds)" + container_version="$(date -u -Iseconds)" podman build --no-cache --pull \ --build-arg CONTAINER_VERSION="$container_version" \ --format docker \ From bebb0735534c43f28ff8b56ddd312fdf3f91df0d Mon Sep 17 00:00:00 2001 From: Sven Hertle Date: Fri, 8 Sep 2023 20:25:20 +0200 Subject: [PATCH 19/92] remove "Helfertool" branding on main pages --- .gitignore | 3 + src/helfertool.yaml | 3 + src/helfertool/settings.py | 3 + .../static/helfertool/img/logo/logo.svg | 154 ------------------ src/helfertool/templates/helfertool/base.html | 6 +- 5 files changed, 10 insertions(+), 159 deletions(-) delete mode 100644 src/helfertool/static/helfertool/img/logo/logo.svg diff --git a/.gitignore b/.gitignore index 92c20b272..ac9198088 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,9 @@ Session.vim # PyCharm .idea +# macOS +.DS_Store + # python/django *.pyc *.pyo diff --git a/src/helfertool.yaml b/src/helfertool.yaml index ccc569f17..8b4468f6d 100644 --- a/src/helfertool.yaml +++ b/src/helfertool.yaml @@ -273,6 +273,9 @@ features: # Custom URLs, mail addresses, ... customization: + # Title for all pages + title: "Helfertool" + # Modify certain properties for the general helfertool to display display: # Maximum years of events to be displayed by default on the main page diff --git a/src/helfertool/settings.py b/src/helfertool/settings.py index 50e8b9ace..28d7e935f 100644 --- a/src/helfertool/settings.py +++ b/src/helfertool/settings.py @@ -435,6 +435,9 @@ # announcement on every page ANNOUNCEMENT_TEXT = dict_get(config, None, "announcement") +# title for all pages +PAGE_TITLE = dict_get(config, "Helfertool", "customization", "title") + # external URLs PRIVACY_URL = dict_get(config, "https://app.helfertool.org/datenschutz/", "customization", "urls", "privacy") IMPRINT_URL = dict_get(config, "https://app.helfertool.org/impressum/", "customization", "urls", "imprint") diff --git a/src/helfertool/static/helfertool/img/logo/logo.svg b/src/helfertool/static/helfertool/img/logo/logo.svg deleted file mode 100644 index fe04c824a..000000000 --- a/src/helfertool/static/helfertool/img/logo/logo.svg +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - - - Helfertool--.. - - - - - - - - - - - - - - - - - image/svg+xml - - - - - Openclipart - - - - - - - - - - - - diff --git a/src/helfertool/templates/helfertool/base.html b/src/helfertool/templates/helfertool/base.html index 72d4694a6..7a8d0cb11 100644 --- a/src/helfertool/templates/helfertool/base.html +++ b/src/helfertool/templates/helfertool/base.html @@ -21,7 +21,7 @@ {% block adminheader %}{% endblock %} {% block socialheader %}{% endblock %} - {% block title %}{% trans "Helfertool" %}{% endblock %} + {% djangosetting "PAGE_TITLE" %} @@ -29,10 +29,6 @@