diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-10-15 19:03:22 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-10-24 18:32:21 +0200 | 
| commit | 3b0ba2784032b835b82a5336c373c1acaa8b0914 (patch) | |
| tree | 6dd7a0d51c4e53e6b747e0f1552761835b7fd171 | |
| parent | f00b330c99da66acf43219a2ab762b967fac6deb (diff) | |
| download | Ishtar-3b0ba2784032b835b82a5336c373c1acaa8b0914.tar.bz2 Ishtar-3b0ba2784032b835b82a5336c373c1acaa8b0914.zip | |
♻️  django 3.2 deprecation: url -> re_path ; ugettext_lazy -> gettext_lazy
68 files changed, 547 insertions, 550 deletions
| diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py index 11d4cbbb1..4ecb40386 100644 --- a/archaeological_context_records/forms.py +++ b/archaeological_context_records/forms.py @@ -29,7 +29,7 @@ from django import forms  from django.conf import settings  from django.core import validators  from django.forms.formsets import formset_factory -from ishtar_common.utils import get_current_profile, ugettext_lazy as _ +from ishtar_common.utils import get_current_profile, gettext_lazy as _  from ishtar_common.models import (      Area, diff --git a/archaeological_context_records/ishtar_menu.py b/archaeological_context_records/ishtar_menu.py index 13fe18db4..820630baf 100644 --- a/archaeological_context_records/ishtar_menu.py +++ b/archaeological_context_records/ishtar_menu.py @@ -17,7 +17,7 @@  # See the file COPYING for details. -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import gettext_lazy as _  from ishtar_common.menu_base import SectionItem, MenuItem diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 21981fc78..29deae5ee 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -30,7 +30,7 @@ from django.db.models import Q  from django.db.models.signals import post_delete, post_save, m2m_changed  from django.urls import reverse, reverse_lazy -from ishtar_common.utils import ugettext_lazy as _, pgettext_lazy, pgettext +from ishtar_common.utils import gettext_lazy as _, pgettext_lazy, pgettext  from django.utils.text import slugify  from ishtar_common.utils import ( diff --git a/archaeological_context_records/urls.py b/archaeological_context_records/urls.py index 17c4dc419..bb06e9945 100644 --- a/archaeological_context_records/urls.py +++ b/archaeological_context_records/urls.py @@ -17,8 +17,7 @@  # See the file COPYING for details. -from django.conf.urls import url -from django.urls import path +from django.urls import path, re_path  from ishtar_common.utils import check_permissions  from ishtar_common.views import QALinkView @@ -29,7 +28,7 @@ from archaeological_context_records import models, views, views_api  # forms  urlpatterns = [      # Context records -    url( +    re_path(          r"record_search/(?P<step>.+)?$",          check_permissions(["archaeological_context_records.view_contextrecord",                             "archaeological_context_records.view_own_contextrecord"])( @@ -37,7 +36,7 @@ urlpatterns = [          ),          name="record_search",      ), -    url( +    re_path(          r"contextrecord_search/(?P<step>.+)?$",          check_permissions(["archaeological_context_records.view_contextrecord",                             "archaeological_context_records.view_own_contextrecord"])( @@ -45,14 +44,14 @@ urlpatterns = [          ),          name="contextrecord_search",      ), -    url( +    re_path(          r"record_creation/(?P<step>.+)?$",          check_permissions(["archaeological_context_records.add_contextrecord"])(              views.record_creation_wizard          ),          name="record_creation",      ), -    url( +    re_path(          r"record_modification/(?P<step>.+)?$",          check_permissions(["archaeological_context_records.change_contextrecord",                             "archaeological_context_records.change_own_contextrecord"])( @@ -60,8 +59,8 @@ urlpatterns = [          ),          name="record_modification",      ), -    url(r"record_modify/(?P<pk>.+)/$", views.record_modify, name="record_modify"), -    url( +    re_path(r"record_modify/(?P<pk>.+)/$", views.record_modify, name="record_modify"), +    re_path(          r"record_deletion/(?P<step>.+)?$",          check_permissions(["archaeological_context_records.change_contextrecord",                             "archaeological_context_records.change_own_contextrecord"])( @@ -69,92 +68,92 @@ urlpatterns = [          ),          name="record_deletion",      ), -    url( +    re_path(          r"record_delete/(?P<pk>.+)/$", views.record_delete, name="delete-contextrecord"      ), -    url( +    re_path(          r"autocomplete-contextrecord/$",          views.autocomplete_contextrecord,          name="autocomplete-contextrecord",      ), -    url( +    re_path(          r"show-contextrecord(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_contextrecord,          name=models.ContextRecord.SHOW_URL,      ),      # show-contextrecordrelation is only a view the id point to a context record -    url( +    re_path(          r"show-contextrecord(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_contextrecord,          name="show-contextrecordrelation",      ), -    url( +    re_path(          r"show-historized-contextrecord/(?P<pk>.+)?/(?P<date>.+)?$",          views.show_contextrecord,          name="show-historized-contextrecord",      ), -    url( +    re_path(          r"revert-contextrecord/(?P<pk>.+)/(?P<date>.+)$",          views.revert_contextrecord,          name="revert-contextrecord",      ), -    url( +    re_path(          r"generate-relation-image-contextrecord/(?P<pk>.+)/("          r"?P<type>(below)|(above)|(full))?",          views.GenerateRelationImage.as_view(),          name="generate-relation-image-contextrecord",      ), -    url( +    re_path(          r"get-contextrecord/own/(?P<type>.+)?$",          views.get_contextrecord,          name="get-own-contextrecord",          kwargs={"force_own": True},      ), -    url( +    re_path(          r"get-contextrecord/(?P<type>.+)?$",          views.get_contextrecord,          name="get-contextrecord",      ), -    url( +    re_path(          r"get-contextrecord-for-ope/own/(?P<type>.+)?$",          views.get_contextrecord_for_ope,          name="get-own-contextrecord-for-ope",          kwargs={"force_own": True},      ), -    url( +    re_path(          r"get-contextrecord-for-ope/(?P<type>.+)?$",          views.get_contextrecord_for_ope,          name="get-contextrecord-for-ope",      ), -    url( +    re_path(          r"get-contextrecord-full/own/(?P<type>.+)?$",          views.get_contextrecord,          name="get-own-contextrecord-full",          kwargs={"full": True, "force_own": True},      ), -    url( +    re_path(          r"get-contextrecord-full/(?P<type>.+)?$",          views.get_contextrecord,          name="get-contextrecord-full",          kwargs={"full": True},      ), -    url( +    re_path(          r"get-contextrecord-shortcut/(?P<type>.+)?$",          views.get_contextrecord,          name="get-contextrecord-shortcut",          kwargs={"full": "shortcut"},      ), -    url( +    re_path(          r"get-contextrecordrelation/(?P<type>.+)?$",          views.get_contextrecordrelation,          name="get-contextrecordrelation",      ), -    url( +    re_path(          r"get-contextrecordrelationdetail/(?P<type>.+)?$",          views.get_contextrecordrelationdetail,          name="get-contextrecordrelationdetail",      ), -    url( +    re_path(          r"^context-record-relations-modify/(?P<pk>.+)/$",          check_permissions(["archaeological_context_records.change_contextrecord",                             "archaeological_context_records.change_own_contextrecord"])( @@ -162,26 +161,26 @@ urlpatterns = [          ),          name="context-record-relation-modify",      ), -    url( +    re_path(          r"^operation-qa-contextrecord/(?P<pks>[0-9]+)/$",          check_permissions(["archaeological_context_records.add_contextrecord"])(              views.QAOperationContextRecordView.as_view()          ),          name="operation-qa-contextrecord",      ), -    url( +    re_path(          r"^contextrecord-qa-lock/(?P<pks>[0-9-]+)?/$",          views.QAContextRecordLockView.as_view(),          name="contextrecord-qa-lock",          kwargs={"model": models.ContextRecord},      ), -    url( +    re_path(          r"^contextrecord-qa-link/(?P<pks>[0-9-]+)?/$",          QALinkView.as_view(),          name="contextrecord-qa-link",          kwargs={"model": models.ContextRecord, "url": "contextrecord-qa-link"},      ), -    url( +    re_path(          r"^contextrecord-qa-duplicate/(?P<pks>[0-9-]+)?/$",          check_permissions(["archaeological_context_records.change_contextrecord",                             "archaeological_context_records.change_own_contextrecord"])( @@ -189,7 +188,7 @@ urlpatterns = [          ),          name="contextrecord-qa-duplicate",      ), -    url( +    re_path(          r"^contextrecord-qa-bulk-update/(?P<pks>[0-9-]+)?/$",          check_permissions(["archaeological_context_records.change_contextrecord",                             "archaeological_context_records.change_own_contextrecord"])( @@ -197,7 +196,7 @@ urlpatterns = [          ),          name="contextrecord-qa-bulk-update",      ), -    url( +    re_path(          r"^contextrecord-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$",          check_permissions(["archaeological_context_records.change_contextrecord",                             "archaeological_context_records.change_own_contextrecord"])( @@ -206,11 +205,11 @@ urlpatterns = [          name="contextrecord-qa-bulk-update-confirm",          kwargs={"confirm": True},      ), -    url( +    re_path(          r"api/facets/contextrecord/$", views_api.FacetContextRecordAPIView.as_view(),          name="api-facets-contextrecord"      ), -    url( +    re_path(          r"api/search/context-record/$", views_api.SearchContextRecordAPI.as_view(),          name="api-search-contextrecord"      ), diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py index 811a9ad2d..d833792b7 100644 --- a/archaeological_context_records/views.py +++ b/archaeological_context_records/views.py @@ -23,7 +23,7 @@ from django.db.models import Q  from django.http import HttpResponse, HttpResponseRedirect, Http404  from django.shortcuts import redirect  from django.urls import reverse -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import gettext_lazy as _  from django.views.generic import RedirectView  from ishtar_common.models import QuickAction diff --git a/archaeological_context_records/wizards.py b/archaeological_context_records/wizards.py index 8de29a695..1d7a106ec 100644 --- a/archaeological_context_records/wizards.py +++ b/archaeological_context_records/wizards.py @@ -18,7 +18,7 @@  # See the file COPYING for details.  from django.core.exceptions import ObjectDoesNotExist -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import gettext_lazy as _  from . import models  from ishtar_common.forms import reverse_lazy diff --git a/archaeological_files/admin.py b/archaeological_files/admin.py index e74dbbbff..5b9839637 100644 --- a/archaeological_files/admin.py +++ b/archaeological_files/admin.py @@ -19,11 +19,10 @@  from django import forms  from django.conf import settings -from django.conf.urls import url  from django.http import HttpResponseRedirect  from django.shortcuts import get_object_or_404, render -from django.urls import reverse -from django.utils.translation import ugettext_lazy as _ +from django.urls import re_path, reverse +from django.utils.translation import gettext_lazy as _  from ishtar_common.apps import admin_site  from ishtar_common.admin import ( @@ -170,7 +169,7 @@ class CopyPriceAgreementAdmin(GeneralTypeAdmin):      def get_urls(self):          urls = super(CopyPriceAgreementAdmin, self).get_urls()          my_urls = [ -            url(r"^copy-price-agreement/$", self.copy_price_agreement), +            re_path(r"^copy-price-agreement/$", self.copy_price_agreement),          ]          return my_urls + urls diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index b1c3d691b..353880075 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -30,7 +30,7 @@ from django.core import validators  from django.db.models import Q  from django.forms.formsets import formset_factory  from django.utils.safestring import mark_safe -from ishtar_common.utils import add_business_days, ugettext_lazy as _ +from ishtar_common.utils import add_business_days, gettext_lazy as _  from ishtar_common.models import (      Area, diff --git a/archaeological_files/ishtar_menu.py b/archaeological_files/ishtar_menu.py index d32335167..84a0bee01 100644 --- a/archaeological_files/ishtar_menu.py +++ b/archaeological_files/ishtar_menu.py @@ -17,7 +17,7 @@  # See the file COPYING for details. -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import gettext_lazy as _  from ishtar_common.menu_base import SectionItem, MenuItem diff --git a/archaeological_files/models.py b/archaeological_files/models.py index 01fb4f554..a03c353eb 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -32,7 +32,7 @@ from django.db.models.signals import post_save, m2m_changed, post_delete  from django.urls import reverse, reverse_lazy  from ishtar_common.models_common import OrderedHierarchicalType -from ishtar_common.utils import ugettext_lazy as _, pgettext_lazy, get_current_profile, \ +from ishtar_common.utils import gettext_lazy as _, pgettext_lazy, get_current_profile, \                                  InlineClass  from ishtar_common.utils import ( diff --git a/archaeological_files/tests.py b/archaeological_files/tests.py index 89a84f64f..53e29c1cc 100644 --- a/archaeological_files/tests.py +++ b/archaeological_files/tests.py @@ -37,7 +37,7 @@ from ishtar_common.tests import (  from ishtar_common.models import Town, IshtarSiteProfile, Person, PersonType, \      Organization, OrganizationType -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import gettext_lazy as _  from archaeological_files import models, views  from archaeological_operations.views import RELATION_FORMSET_EXTRA_FORM diff --git a/archaeological_files/urls.py b/archaeological_files/urls.py index 25d1186a0..11e4c8ff0 100644 --- a/archaeological_files/urls.py +++ b/archaeological_files/urls.py @@ -17,8 +17,7 @@  # See the file COPYING for details. -from django.conf.urls import url -from django.urls import path +from django.urls import path, re_path  from ishtar_common.utils import check_permissions  from ishtar_common.views import QALinkView @@ -29,13 +28,13 @@ from archaeological_operations.views import administrativeactfile_document  # forms:  urlpatterns = [ -    url( +    re_path(          r"^file-qa-link/(?P<pks>[0-9-]+)?/$",          QALinkView.as_view(),          name="file-qa-link",          kwargs={"model": models.File, "url": "file-qa-link"},      ), -    url( +    re_path(          r"file_administrativeactfile_search/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.view_administrativeact", @@ -44,7 +43,7 @@ urlpatterns = [          ),          name="file_administrativeactfile_search",      ), -    url( +    re_path(          r"^file_administrativeactfile/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.add_administrativeact"])( @@ -52,12 +51,12 @@ urlpatterns = [          ),          name="file_administrativeactfile",      ), -    url( +    re_path(          r"file_administrativeactfile_modify/(?P<pk>.+)/$",          views.file_administrativeactfile_modify,          name="file_administrativeactfile_modify",      ), -    url( +    re_path(          r"file_administrativeactfile_deletion/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.delete_administrativeact", @@ -66,7 +65,7 @@ urlpatterns = [          ),          name="file_administrativeactfile_deletion",      ), -    url( +    re_path(          r"file_administrativeactfile_modification/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.change_administrativeact", @@ -75,24 +74,24 @@ urlpatterns = [          ),          name="file_administrativeactfile_modification",      ), -    url( +    re_path(          r"file_administrativeactfile_delete/(?P<pk>.+)/$",          views.file_administrativeact_delete,          name="delete-administrativeact-file",      ), -    url( +    re_path(          r"file_search/(?P<step>.+)?$",          check_permissions([              "archaeological_files.view_file",              "archaeological_files.view_own_file"])(views.file_search_wizard),          name="file_search",      ), -    url( +    re_path(          r"^file_creation/(?P<step>.+)?$",          check_permissions(["archaeological_files.add_file"])(views.file_creation_wizard),          name="file_creation",      ), -    url( +    re_path(          r"^file_modification/(?P<step>.+)?$",          check_permissions(["archaeological_files.change_file",                             "archaeological_files.change_own_file"])( @@ -100,8 +99,8 @@ urlpatterns = [          ),          name="file_modification",      ), -    url(r"^file_modify/(?P<pk>.+)/$", views.file_modify, name="file_modify"), -    url( +    re_path(r"^file_modify/(?P<pk>.+)/$", views.file_modify, name="file_modify"), +    re_path(          r"^file_closing/(?P<step>.+)?$",          check_permissions(["archaeological_files.change_file",                             "archaeological_files.change_own_file"])( @@ -109,61 +108,61 @@ urlpatterns = [          ),          name="file_closing",      ), -    url( +    re_path(          r"file_deletion/(?P<step>.+)?$",          check_permissions(              ["archaeological_files.delete_file", "archaeological_files.delete_own_file"]          )(views.file_deletion_wizard),          name="file_deletion",      ), -    url(r"^file_delete/(?P<pk>.+)/$", views.file_delete, name="delete-file"), -    url(r"autocomplete-file/$", views.autocomplete_file, name="autocomplete-file"), -    url(r"get-file/(?P<type>.+)?$", views.get_file, name="get-file"), -    url( +    re_path(r"^file_delete/(?P<pk>.+)/$", views.file_delete, name="delete-file"), +    re_path(r"autocomplete-file/$", views.autocomplete_file, name="autocomplete-file"), +    re_path(r"get-file/(?P<type>.+)?$", views.get_file, name="get-file"), +    re_path(          r"get-file-full/(?P<type>.+)?$",          views.get_file,          name="get-file-full",          kwargs={"full": True},      ), -    url( +    re_path(          r"get-file-shortcut/(?P<type>.+)?$",          views.get_file,          name="get-file-shortcut",          kwargs={"full": "shortcut"},      ), -    url( +    re_path(          r"get-administrativeactfile/(?P<type>.+)?$",          views.get_administrativeactfile,          name="get-administrativeactfile",      ), -    url(r"show-file(?:/(?P<pk>.+))?/(?P<type>.+)?$", views.show_file, name="show-file"), -    url( +    re_path(r"show-file(?:/(?P<pk>.+))?/(?P<type>.+)?$", views.show_file, name="show-file"), +    re_path(          r"show-historized-file/(?P<pk>.+)?/(?P<date>.+)?$",          views.show_file,          name="show-historized-file",      ), -    url(r"revert-file/(?P<pk>.+)/(?P<date>.+)$", views.revert_file, name="revert-file"), -    url( +    re_path(r"revert-file/(?P<pk>.+)/(?P<date>.+)$", views.revert_file, name="revert-file"), +    re_path(          r"^file-add-adminact/(?P<pk>[0-9-]+)/$",          check_permissions(["archaeological_operations.add_administrativeact"])(              views.file_adminact_add          ),          name="file-add-adminact",      ), -    url( +    re_path(          r"file_administrativeact_document/$",          administrativeactfile_document,          name="file-administrativeact-document",          kwargs={"file": True},      ), -    url( +    re_path(          r"^file-add-operation/(?P<pk>[0-9-]+)/$",          check_permissions(["archaeological_operations.add_operation"])(              views.file_add_operation          ),          name="file-add-operation",      ), -    url( +    re_path(          r'^file/edit-preventive-price/(?P<pk>\d+)/$',          check_permissions(["archaeological_files.change_file",                             "archaeological_files.change_own_file"])( @@ -171,12 +170,12 @@ urlpatterns = [          ),          name="file-edit-preventive-price",      ), -    url( +    re_path(          r"^file-parcels-modify/(?P<pk>.+)/$",          views.file_modify_parcels,          name="file-parcels-modify",      ), -    url( +    re_path(          r'^file/edit-preventive/(?P<pk>\d+)/$',          check_permissions(["archaeological_files.change_file",                             "archaeological_files.change_own_file"])( @@ -184,7 +183,7 @@ urlpatterns = [          ),          name="file-edit-preventive",      ), -    url( +    re_path(          r'^file/edit-preventive/add-default-cost/(?P<pk>\d+)/$',          check_permissions(["archaeological_files.change_file",                             "archaeological_files.change_own_file"])( @@ -192,7 +191,7 @@ urlpatterns = [          ),          name="file-edit-preventive-default-cost",      ), -    url( +    re_path(          r'^file/edit-preventive/copy-planned/(?P<pk>\d+)/$',          check_permissions(["archaeological_files.change_file",                             "archaeological_files.change_own_file"])( @@ -200,21 +199,21 @@ urlpatterns = [          ),          name="file-edit-preventive-copy-planned",      ), -    url( +    re_path(          r"townplanning-edit/$",          views.TownPlanningCreate.as_view(),          name="townplanning_create",      ), -    url( +    re_path(          r"townplanning-edit/(?P<pk>\d+)$",          views.TownPlanningEdit.as_view(),          name="townplanning_edit",      ), -    url( +    re_path(          r"api/facets/file/$", views_api.FacetFileAPIView.as_view(),          name="api-facets-file"      ), -    url( +    re_path(          r"api/search/file/$", views_api.SearchFileAPI.as_view(),          name="api-search-file"      ), diff --git a/archaeological_files/views.py b/archaeological_files/views.py index eaf886dba..65214f948 100644 --- a/archaeological_files/views.py +++ b/archaeological_files/views.py @@ -26,7 +26,7 @@ from django.forms.formsets import formset_factory  from django.views.generic.edit import UpdateView  from django.shortcuts import redirect  from django.urls import reverse -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import gettext_lazy as _  from ishtar_common.views import wizard_is_available, OrganizationPersonCreate, \      OrganizationPersonEdit diff --git a/archaeological_files/wizards.py b/archaeological_files/wizards.py index 2b8a86ab2..4f4709b7b 100644 --- a/archaeological_files/wizards.py +++ b/archaeological_files/wizards.py @@ -19,7 +19,7 @@  from django.conf import settings  from django.db.models import Max -from ishtar_common.utils import ugettext_lazy as _, get_generated_id +from ishtar_common.utils import gettext_lazy as _  from ishtar_common.forms import reverse_lazy  from ishtar_common.wizards import ClosingWizard, SearchWizard, MultipleDeletionWizard diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 35c6ba6fb..0cabfd53a 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -30,7 +30,7 @@ from django.core import validators  from django.core.exceptions import PermissionDenied  from django.db.models import Q  from django.forms.formsets import formset_factory -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import gettext_lazy as _  from . import models  from archaeological_operations.models import CulturalAttributionType, RemainType diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py index 8122f75ad..34cec6eb3 100644 --- a/archaeological_finds/forms_treatments.py +++ b/archaeological_finds/forms_treatments.py @@ -24,7 +24,7 @@ from collections import OrderedDict  from bootstrap_datepicker.widgets import DateField  from django import forms  from django.core import validators -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import gettext_lazy as _  from ishtar_common.forms import FormHeader  from archaeological_finds import models diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py index c76bea061..4521c4077 100644 --- a/archaeological_finds/ishtar_menu.py +++ b/archaeological_finds/ishtar_menu.py @@ -17,7 +17,7 @@  # See the file COPYING for details. -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import gettext_lazy as _  from ishtar_common.menu_base import SectionItem, MenuItem diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 7f345efd8..c3241afa3 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -38,7 +38,7 @@ from ishtar_common.utils import (      pgettext_lazy,      post_save_geo,      SearchAltName, -    ugettext_lazy as _ +    gettext_lazy as _  )  from ishtar_common.alternative_configs import ALTERNATE_CONFIGS diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index faf448b63..2675e3ec6 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -32,7 +32,7 @@ from django.db.models import Max, Q  from django.db.models.signals import post_save, post_delete, pre_delete, m2m_changed  from django.template.defaultfilters import slugify  from django.urls import reverse -from ishtar_common.utils import ugettext_lazy as _, pgettext_lazy, SheetItem +from ishtar_common.utils import gettext_lazy as _, pgettext_lazy, SheetItem  from archaeological_finds.models_finds import Find, FindBasket, TreatmentType, \                                                FindTreatment diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py index af6b5285a..a690b8698 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -17,8 +17,7 @@  # See the file COPYING for details. -from django.conf.urls import url -from django.urls import path, register_converter +from django.urls import path, re_path, register_converter  from ishtar_common.utils import check_permissions, get_urls_for_model @@ -35,21 +34,21 @@ register_converter(urls_converters.DateTimeConverter, "datetime")  # forms  urlpatterns = [ -    url( +    re_path(          r"find_search/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.view_find", "archaeological_finds.view_own_find"]          )(views.find_search_wizard),          name="find_search",      ), -    url( +    re_path(          r"find_creation/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.add_find"]          )(views.find_creation_wizard),          name="find_creation",      ), -    url( +    re_path(          r"find_modification/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.change_find", @@ -57,9 +56,9 @@ urlpatterns = [          )(views.find_modification_wizard),          name="find_modification",      ), -    url(r"find_modify/(?P<pk>.+)/$", views.find_modify, name="find_modify"), -    url(r"find_create/(?P<pk>.+)/$", views.find_create, name="find_create"), -    url( +    re_path(r"find_modify/(?P<pk>.+)/$", views.find_modify, name="find_modify"), +    re_path(r"find_create/(?P<pk>.+)/$", views.find_create, name="find_create"), +    re_path(          r"find_deletion/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.delete_find", @@ -67,8 +66,8 @@ urlpatterns = [          )(views.find_deletion_wizard),          name="find_deletion",      ), -    url(r"find_delete/(?P<pk>.+)/$", views.find_delete, name="delete-find"), -    url( +    re_path(r"find_delete/(?P<pk>.+)/$", views.find_delete, name="delete-find"), +    re_path(          r"^find-qa-duplicate/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["archaeological_finds.change_find", @@ -76,13 +75,13 @@ urlpatterns = [          )(views.QAFindDuplicateFormView.as_view()),          name="find-qa-duplicate",      ), -    url(r"get-findbasket/$", views.get_find_basket, name="get-findbasket"), -    url( +    re_path(r"get-findbasket/$", views.get_find_basket, name="get-findbasket"), +    re_path(          r"get-findbasket-write/$",          views.get_find_basket_for_write,          name="get-findbasket-write",      ), -    url( +    re_path(          r"find_basket_search/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.view_find", @@ -90,7 +89,7 @@ urlpatterns = [          )(views.basket_search_wizard),          name="find_basket_search",      ), -    url( +    re_path(          r"^find_basket_creation/$",          check_permissions(              ["archaeological_finds.view_find", @@ -98,7 +97,7 @@ urlpatterns = [          )(views.NewFindBasketView.as_view()),          name="new_findbasket",      ), -    url( +    re_path(          r"^find_basket_modification/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.view_find", @@ -106,12 +105,12 @@ urlpatterns = [          )(views.basket_modify_wizard),          name="find_basket_modification",      ), -    url( +    re_path(          r"find_basket_modify/(?P<pk>.+)/$",          views.find_basket_modify,          name="find_basket_modify",      ), -    url( +    re_path(          r"^find_basket_modification_add/$",          check_permissions(              ["archaeological_finds.view_find", @@ -119,7 +118,7 @@ urlpatterns = [          )(views.SelectBasketForManagement.as_view()),          name="select_findbasketforadd",      ), -    url( +    re_path(          r"^find_basket_modification_add/(?P<pk>[0-9]+)?/$",          check_permissions(              ["archaeological_finds.view_find", @@ -127,7 +126,7 @@ urlpatterns = [          )(views.SelectItemsInBasket.as_view()),          name="select_itemsinbasket",      ), -    url( +    re_path(          r"^find_basket_modification_add_item/$",          check_permissions(              ["archaeological_finds.view_find", @@ -135,7 +134,7 @@ urlpatterns = [          )(views.FindBasketAddItemView.as_view()),          name="add_iteminbasket",      ), -    url( +    re_path(          r"^find_basket_modification_delete_item/(?P<basket>[0-9]+)?"          r"/(?P<find_pk>[0-9]+)?/$",          check_permissions( @@ -144,7 +143,7 @@ urlpatterns = [          )(views.FindBasketDeleteItemView.as_view()),          name="delete_iteminbasket",      ), -    url( +    re_path(          r"^find_basket_list/(?P<pk>[0-9]+)?/$",          check_permissions(              ["archaeological_finds.view_find", @@ -152,7 +151,7 @@ urlpatterns = [          )(views.FindBasketListView.as_view()),          name="list_iteminbasket",      ), -    url( +    re_path(          r"^find_basket_deletion/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.view_find", @@ -160,7 +159,7 @@ urlpatterns = [          )(views.basket_delete_wizard),          name="find_basket_deletion",      ), -    url( +    re_path(          r"^findbasket-qa-duplicate/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["archaeological_finds.view_find", @@ -168,63 +167,63 @@ urlpatterns = [          )(views.QAFindbasketDuplicateFormView.as_view()),          name="findbasket-qa-duplicate",      ), -    url( +    re_path(          r"^findbasket-add-treatment/(?P<pk>[0-9-]+)/$",          check_permissions(              ["archaeological_finds.add_treatment"]          )(views.findbasket_treatment_add),          name="findbasket-add-treatment",      ), -    url( +    re_path(          r"^findbasket-add-treatmentfile/(?P<pk>[0-9-]+)/$",          check_permissions(              ["archaeological_finds.add_treatmentfile"]          )(views.findbasket_treatmentfile_add),          name="findbasket-add-treatmentfile",      ), -    url( +    re_path(          r"^findbasket-add-exhibition/(?P<pk>[0-9-]+)/$",          check_permissions(              ["archaeological_finds.add_exhibition"]          )(views.findbasket_exhibition_add),          name="findbasket-add-exhibition",      ), -    url( +    re_path(          r"^find-add-treatment/(?P<pk>[0-9-]+)/$",          check_permissions(              ["archaeological_finds.add_treatment"]          )(views.find_treatment_add),          name="find-add-treatment",      ), -    url( +    re_path(          r"^find-add-divide-treatment/(?P<pk>[0-9-]+)/$",          check_permissions(              ["archaeological_finds.add_treatment"]          )(views.find_divide_treatment_add),          name="find-add-divide-treatment",      ), -    url( +    re_path(          r"^treatmentfile-add-treatment/(?P<pk>[0-9-]+)/$",          check_permissions(              ["archaeological_finds.add_treatment"]          )(views.treatmentfile_treatment_add),          name="treatmentfile-add-treatment",      ), -    url( +    re_path(          r"^treatment-add-adminact/(?P<pk>[0-9-]+)/$",          check_permissions(              ["archaeological_operations.add_administrativeact"]          )(views.treatment_adminact_add),          name="treatment-add-adminact",      ), -    url( +    re_path(          r"^treatmentfile-add-adminact/(?P<pk>[0-9-]+)/$",          check_permissions(              ["archaeological_operations.add_administrativeact"]          )(views.treatmentfile_adminact_add),          name="treatmentfile-add-adminact",      ), -    url( +    re_path(          r"^find-qa-bulk-update/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["archaeological_finds.change_find", @@ -232,7 +231,7 @@ urlpatterns = [          )(views.QAFindForm.as_view()),          name="find-qa-bulk-update",      ), -    url( +    re_path(          r"^find-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$",          check_permissions(              ["archaeological_finds.change_find", @@ -241,7 +240,7 @@ urlpatterns = [          name="find-qa-bulk-update-confirm",          kwargs={"confirm": True},      ), -    url( +    re_path(          r"^find-qa-basket/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["archaeological_finds.change_find", @@ -249,7 +248,7 @@ urlpatterns = [          )(views.QAFindBasketFormView.as_view()),          name="find-qa-basket",      ), -    url( +    re_path(          r"findbasket-qa-bulk-update/(?P<pks>[0-9-]+)?/$",          check_permissions([              "archaeological_finds.change_find", @@ -257,7 +256,7 @@ urlpatterns = [          ])(views.QAFindBasketModifyView.as_view()),          name="findbasket-qa-bulk-update",      ), -    url( +    re_path(          r"findbasket-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$",          check_permissions([              "archaeological_finds.change_find", @@ -266,7 +265,7 @@ urlpatterns = [          name="findbasket-qa-bulk-update-confirm",          kwargs={"confirm": True},      ), -    url( +    re_path(          r"^find-qa-packaging/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["archaeological_finds.change_find", @@ -274,45 +273,45 @@ urlpatterns = [              )(views.QAFindTreatmentFormView.as_view()),          name="find-qa-packaging",      ), -    url( +    re_path(          r"^find-qa-lock/(?P<pks>[0-9-]+)?/$",          views.QAFindLockView.as_view(),          name="find-qa-lock",          kwargs={"model": models.Find},      ), -    url( +    re_path(          r"^find-qa-link/(?P<pks>[0-9-]+)?/$",          QALinkView.as_view(),          name="find-qa-link",          kwargs={"model": models.Find, "url": "find-qa-link"},      ), -    url( +    re_path(          r"^treatment_creation/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.add_treatment"]              )(views.treatment_creation_wizard),          name="treatment_creation",      ), -    url( +    re_path(          r"^treatment_creation_n1/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.add_treatment"]          )(views.treatment_creation_n1_wizard),          name="treatment_creation_n1",      ), -    url( +    re_path(          r"treatment_n1_create/(?P<pks>[-0-9]+)/$",          views.treatment_n1_create,          name="treatment-n1-create",      ), -    url( +    re_path(          r"^treatment_creation_1n/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.add_treatment"]          )(views.treatment_creation_1n_wizard),          name="treatment_creation_1n",      ), -    url( +    re_path(          r"^treatment_modification/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.change_treatment", @@ -320,12 +319,12 @@ urlpatterns = [          )(views.treatment_modification_wizard),          name="treatment_modification",      ), -    url( +    re_path(          r"^treatment_modify/(?P<pk>.+)/$",          views.treatment_modify,          name="treatment_modify",      ), -    url( +    re_path(          r"^treatment_search/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.view_treatment", @@ -333,7 +332,7 @@ urlpatterns = [          )(views.treatment_search_wizard),          name="treatment_search",      ), -    url( +    re_path(          r"^treatment_deletion/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.delete_treatment", @@ -341,12 +340,12 @@ urlpatterns = [          )(views.treatment_deletion_wizard),          name="treatment_deletion",      ), -    url( +    re_path(          r"^treatment_delete/(?P<pk>.+)/$",          views.treatment_delete,          name="delete-treatment",      ), -    url( +    re_path(          r"^treatment_admacttreatment_search/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.view_administrativeact", @@ -355,7 +354,7 @@ urlpatterns = [          ),          name="treatment_admacttreatment_search",      ), -    url( +    re_path(          r"^treatment_admacttreatment/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.add_administrativeact"])( @@ -363,7 +362,7 @@ urlpatterns = [          ),          name="treatment_admacttreatment",      ), -    url( +    re_path(          r"^treatment_admacttreatment_modification/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.change_administrativeact", @@ -373,12 +372,12 @@ urlpatterns = [          ),          name="treatment_admacttreatment_modification",      ), -    url( +    re_path(          r"^treatment_administrativeacttreatment_modify/(?P<pk>.+)/$",          views.treatment_administrativeacttreatment_modify,          name="treatment_administrativeacttreatment_modify",      ), -    url( +    re_path(          r"^treatment_admacttreatment_deletion/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.delete_administrativeact", @@ -387,17 +386,17 @@ urlpatterns = [          ),          name="treatment_admacttreatment_deletion",      ), -    url( +    re_path(          r"^get-administrativeacttreatment/(?P<type>.+)?$",          views.get_administrativeacttreatment,          name="get-administrativeacttreatment",      ), -    url( +    re_path(          r"^treatment_administrativeacttreatment_delete/(?P<pk>.+)/$",          views.treatment_administrativeacttreatment_delete,          name="delete-administrativeact-treatment",      ), -    url( +    re_path(          r"^treatmentfle_admacttreatmentfle_search/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.view_administrativeact", @@ -407,7 +406,7 @@ urlpatterns = [          ),          name="treatmentfle_admacttreatmentfle_search",      ), -    url( +    re_path(          r"^treatmentfle_admacttreatmentfle_modification/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.change_administrativeact", @@ -416,19 +415,19 @@ urlpatterns = [          ),          name="treatmentfle_admacttreatmentfle_modification",      ), -    url( +    re_path(          r"^treatmentfle_admacttreatmentfle/(?P<step>.+)?$",          check_permissions(["archaeological_operations.add_administrativeact"])(              views.treatmentfile_admacttreatmentfile_wizard          ),          name="treatmentfle_admacttreatmentfle",      ), -    url( +    re_path(          r"^treatmentfile_administrativeacttreatmentfile_modify/(?P<pk>.+)/$",          views.treatmentfile_administrativeacttreatmentfile_modify,          name="treatmentfile_administrativeacttreatmentfile_modify",      ), -    url( +    re_path(          r"^treatmentfle_admacttreatmentfle_deletion/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.delete_administrativeact", @@ -437,7 +436,7 @@ urlpatterns = [          ),          name="treatmentfle_admacttreatmentfle_deletion",      ), -    url( +    re_path(          r"^treatmentfile_administrativeacttreatmentfile_delete/(?P<pk>.+)/$",          views.treatmentfile_administrativeacttreatmentfile_delete,          name="delete-administrativeact-treatmentfile", @@ -516,7 +515,7 @@ urlpatterns = [           views.show_exhibition, name="show-exhibition"),      path("display-exhibition/<int:pk>/",           views.display_exhibition, name="display-exhibition"), -    url( +    re_path(          r"^treatmentfle_search/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.view_treatmentfile", @@ -524,14 +523,14 @@ urlpatterns = [          )(views.treatmentfile_search_wizard),          name="treatmentfile_search",      ), -    url( +    re_path(          r"treatmentfle_creation/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.add_treatmentfile"]          )(views.treatmentfile_creation_wizard),          name="treatmentfile_creation",      ), -    url( +    re_path(          r"treatmentfle_modification/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.change_treatmentfile", @@ -539,12 +538,12 @@ urlpatterns = [          )(views.treatmentfile_modification_wizard),          name="treatmentfile_modification",      ), -    url( +    re_path(          r"^treatmentfile_modify/(?P<pk>.+)/$",          views.treatmentfile_modify,          name="treatmentfile_modify",      ), -    url( +    re_path(          r"^treatmentfle_deletion/(?P<step>.+)?$",          check_permissions(              ["archaeological_finds.delete_treatmentfile", @@ -552,214 +551,214 @@ urlpatterns = [              )(views.treatmentfile_deletion_wizard),          name="treatmentfile_deletion",      ), -    url( +    re_path(          r"^treatmentfle_delete/(?P<pk>.+)/$",          views.treatmentfile_delete,          name="delete-treatmentfile",      ), -    url( +    re_path(          r"get-administrativeacttreatmentfile/(?P<type>.+)?$",          views.get_administrativeacttreatmentfile,          name="get-administrativeacttreatmentfile",      ), -    url( +    re_path(          r"get-upstreamtreatment/(?P<type>.+)?$",          views.get_upstreamtreatment,          name="get-upstreamtreatment",      ), -    url( +    re_path(          r"get-downstreamtreatment/(?P<type>.+)?$",          views.get_downstreamtreatment,          name="get-downstreamtreatment",      ), -    url( +    re_path(          r"autocomplete-objecttype/$",          views.autocomplete_objecttype,          name="autocomplete-objecttype",      ), -    url( +    re_path(          r"autocomplete-functionalarea/$",          views.autocomplete_functionalarea,          name="autocomplete-functionalarea",      ), -    url( +    re_path(          r"autocomplete-technicalarea/$",          views.autocomplete_technicalarea,          name="autocomplete-technicalarea",      ), -    url( +    re_path(          r"autocomplete-technicalprocess/$",          views.autocomplete_technicalprocess,          name="autocomplete-technicalprocess",      ), -    url( +    re_path(          r"autocomplete-materialtype/$",          views.autocomplete_materialtype,          name="autocomplete-materialtype",      ), -    url( +    re_path(          r"autocomplete-treatmenttype/$",          views.autocomplete_treatmenttype,          name="autocomplete-treatmenttype",      ), -    url( +    re_path(          r"autocomplete-integritytype/$",          views.autocomplete_integritytype,          name="autocomplete-integritytype",      ), -    url( +    re_path(          r"autocomplete-treatmentfile/$",          views.autocomplete_treatmentfile,          name="autocomplete-treatmentfile",      ), -    url( +    re_path(          r"autocomplete-exhibition/$",          views.autocomplete_exhibition,          name="autocomplete-exhibition",      ), -    url( +    re_path(          r"get-find-for-ope/own/(?P<type>.+)?$",          views.get_find_for_ope,          name="get-own-find-for-ope",          kwargs={"force_own": True},      ), -    url( +    re_path(          r"get-find-for-ope/(?P<type>.+)?$",          views.get_find_for_ope,          name="get-find-for-ope",      ), -    url( +    re_path(          r"get-find-for-cr/cr/(?P<type>.+)?$",          views.get_find_for_cr,          name="get-own-find-for-cr",          kwargs={"force_own": True},      ), -    url( +    re_path(          r"get-find-for-cr/(?P<type>.+)?$", views.get_find_for_cr, name="get-find-for-cr"      ), -    url( +    re_path(          r"get-find-for-treatment/own/(?P<type>.+)?$",          views.get_find_for_treatment,          name="get-own-find-for-treatment",          kwargs={"force_own": True},      ), -    url( +    re_path(          r"get-find-for-treatment/(?P<type>.+)?$",          views.get_find_for_treatment,          name="get-find-for-treatment",      ), -    url( +    re_path(          r"get-find-inside-container/own/(?P<type>.+)?$",          views.get_find_inside_container,          name="get-find-inside-container",          kwargs={"force_own": True},      ), -    url( +    re_path(          r"get-find-inside-container/(?P<type>.+)?$",          views.get_find_inside_container,          name="get-find-inside-container",      ), -    url( +    re_path(          r"get-find-full/own/(?P<type>.+)?$",          views.get_find,          name="get-own-find-full",          kwargs={"full": True, "force_own": True},      ), -    url( +    re_path(          r"get-find-full/(?P<type>.+)?$",          views.get_find,          name="get-find-full",          kwargs={"full": True},      ), -    url( +    re_path(          r"get-find-shortcut/(?P<type>.+)?$",          views.get_find,          name="get-find-shortcut",          kwargs={"full": "shortcut"},      ), -    url( +    re_path(          r"^show-findbasket/(?:(?P<pk>.+)/(?P<type>.+)?)?$",          views.show_findbasket,          name="show-findbasket",      ), -    url( +    re_path(          r"^show-basefind/(?:(?P<pk>.+)/(?P<type>.+)?)?$",          views.show_basefind,          name="show-basefind",      ), -    url( +    re_path(          r"^display-find/basket-(?P<pk>.+)/$",          views.display_findbasket,          name="display-findbasket",      ), -    url( +    re_path(          r"^show-historized-find/(?P<pk>.+)?/(?P<date>.+)?$",          views.show_find,          name="show-historized-find",      ), -    url( +    re_path(          r"^revert-find/(?P<pk>.+)/(?P<date>.+)$", views.revert_find, name="revert-find"      ), -    url( +    re_path(          r"get-treatment-shortcut/(?P<type>.+)?$",          views.get_treatment,          name="get-treatment-shortcut",          kwargs={"full": "shortcut"},      ), -    url( +    re_path(          r"show-historized-treatment/(?P<pk>.+)?/(?P<date>.+)?$",          views.show_treatment,          name="show-historized-treatment",      ), -    url( +    re_path(          r"^revert-treatment/(?P<pk>.+)/(?P<date>.+)$",          views.revert_treatment,          name="revert-treatment",      ), -    url( +    re_path(          r"get-treatmentfile/(?P<type>.+)?$",          views.get_treatmentfile,          name="get-treatmentfile",      ), -    url( +    re_path(          r"get-exhibition/(?P<type>.+)?$",          views.get_exhibition,          name="get-exhibition",      ), -    url( +    re_path(          r"get-treatmentfile-shortcut/(?P<type>.+)?$",          views.get_treatmentfile,          name="get-treatmentfile-shortcut",          kwargs={"full": "shortcut"},      ), -    url( +    re_path(          r"^show-treatmentfile(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_treatmentfile,          name=models.TreatmentFile.SHOW_URL,      ), -    url( +    re_path(          r"show-historized-treatmentfile/(?P<pk>.+)?/(?P<date>.+)?$",          views.show_treatmentfile,          name="show-historized-treatmentfile",      ), -    url( +    re_path(          r"^revert-treatmentfile/(?P<pk>.+)/(?P<date>.+)$",          views.revert_treatmentfile,          name="revert-treatmentfile",      ), -    url( +    re_path(          r"^treatment_administrativeact_document/$",          administrativeactfile_document,          name="treatment-administrativeact-document",          kwargs={"treatment": True},      ), -    url( +    re_path(          r"^treatmentfle_administrativeact_document/$",          administrativeactfile_document,          name="treatmentfle-administrativeact-document",          kwargs={"treatment_file": True},      ), -    url( +    re_path(          r"autocomplete-findbasket/$",          check_permissions(              ["archaeological_finds.change_find", @@ -767,7 +766,7 @@ urlpatterns = [          )(views.autocomplete_findbasket),          name="autocomplete-findbasket",      ), -    url( +    re_path(          r"autocomplete-findbasket-write/$",          check_permissions(              ["archaeological_finds.change_find", @@ -775,10 +774,10 @@ urlpatterns = [          )(views.autocomplete_findbasket_write),          name="autocomplete-findbasket-write",      ), -    url( +    re_path(          r"api/public/find/$", views_api.PublicFindAPI.as_view(), name="api-public-find"      ), -    url( +    re_path(          r"api/ishtar/base-finds/get-geo$",          check_permissions(              ["archaeological_finds.view_find", @@ -786,11 +785,11 @@ urlpatterns = [          )(views.get_geo_items),          name="api-get-geo",      ), -    url( +    re_path(          r"api/facets/find/$", views_api.FacetFindAPIView.as_view(),          name="api-facets-find"      ), -    url( +    re_path(          r"api/search/find/$", views_api.SearchFindAPI.as_view(),          name="api-search-find"      ), @@ -803,7 +802,7 @@ urlpatterns = [          "api/get/find/<int:pk>/", views_api.GetFindAPI.as_view(),          name="api-get-find"      ), -    url( +    re_path(          r"autocomplete-basefind/$",          check_permissions(              ["archaeological_finds.view_basefind", diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index d8b5a3c64..751a6d973 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -27,7 +27,7 @@ from django.http import HttpResponseRedirect, HttpResponse, Http404  from django.shortcuts import redirect, render  from django.urls import reverse -from ishtar_common.utils import ugettext_lazy as _, BSMessage +from ishtar_common.utils import gettext_lazy as _, BSMessage  from django.views.generic import TemplateView  from django.views.generic.edit import CreateView, FormView, UpdateView diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index 34e9e9ca4..51768cc9a 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -19,7 +19,7 @@  from django.contrib import messages  from django.core.exceptions import ObjectDoesNotExist, PermissionDenied -from ishtar_common.utils import ugettext_lazy as _, pgettext, get_current_profile +from ishtar_common.utils import gettext_lazy as _, pgettext, get_current_profile  from ishtar_common.forms import reverse_lazy  from ishtar_common.wizards import ( diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index ca84d697e..e499d8805 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -33,7 +33,7 @@ from django.forms.formsets import formset_factory, DELETION_FIELD_NAME, \      TOTAL_FORM_COUNT  from django.utils.functional import lazy  from django.utils.safestring import mark_safe -from ishtar_common.utils import ugettext_lazy as _, pgettext_lazy, parse_parcels +from ishtar_common.utils import gettext_lazy as _, pgettext_lazy, parse_parcels  from . import models  from archaeological_files.models import File diff --git a/archaeological_operations/ishtar_menu.py b/archaeological_operations/ishtar_menu.py index 21ef06e38..40663c6a8 100644 --- a/archaeological_operations/ishtar_menu.py +++ b/archaeological_operations/ishtar_menu.py @@ -17,7 +17,7 @@  # See the file COPYING for details. -from ishtar_common.utils import ugettext_lazy as _, pgettext_lazy +from ishtar_common.utils import gettext_lazy as _, pgettext_lazy  from ishtar_common.menu_base import SectionItem, MenuItem diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index 849376958..6ef6ced88 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -36,7 +36,7 @@ from django.db.models.signals import post_save, m2m_changed, post_delete  from django.forms import ValidationError  from django.urls import reverse, reverse_lazy  from ishtar_common.data_importer import post_importer_action -from ishtar_common.utils import ugettext_lazy as _, pgettext_lazy, get_generated_id +from ishtar_common.utils import gettext_lazy as _, pgettext_lazy, get_generated_id  from ishtar_common.models import (      Area, diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index b9d28cd62..4add8ea4b 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -45,7 +45,7 @@ from django.utils.text import slugify  from django.utils.translation import activate  from django.contrib.auth.models import User, Permission -from django.utils.translation import ugettext_lazy as _, pgettext, pgettext_lazy +from django.utils.translation import gettext_lazy as _, pgettext, pgettext_lazy  from rest_framework.test import APITestCase  from rest_framework.authtoken.models import Token diff --git a/archaeological_operations/urls.py b/archaeological_operations/urls.py index 46461a2bd..65e2e6bda 100644 --- a/archaeological_operations/urls.py +++ b/archaeological_operations/urls.py @@ -17,8 +17,7 @@  # See the file COPYING for details. -from django.conf.urls import url -from django.urls import path, register_converter +from django.urls import path, re_path, register_converter  from ishtar_common import urls_converters  from ishtar_common.views import QALinkView @@ -34,7 +33,7 @@ register_converter(urls_converters.UnderscoreSlug, "uslug")  # forms  urlpatterns = [ -    url( +    re_path(          r"operation_administrativeactop_search/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.view_administrativeact", @@ -43,14 +42,14 @@ urlpatterns = [          ),          name="operation_administrativeactop_search",      ), -    url( +    re_path(          r"operation_administrativeactop/(?P<step>.+)?$",          check_permissions(["archaeological_operations.add_administrativeact"])(              views.operation_administrativeactop_wizard          ),          name="operation_administrativeactop",      ), -    url( +    re_path(          r"operation_administrativeactop_modification/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.change_administrativeact", @@ -59,12 +58,12 @@ urlpatterns = [          ),          name="operation_administrativeactop_modification",      ), -    url( +    re_path(          r"operation_administrativeactop_modify/(?P<pk>.+)/$",          views.operation_administrativeactop_modify,          name="operation_administrativeactop_modify",      ), -    url( +    re_path(          r"operation_administrativeactop_deletion/(?P<step>.+)?$",          check_permissions([              "archaeological_operations.delete_administrativeact", @@ -73,12 +72,12 @@ urlpatterns = [          ),          name="operation_administrativeactop_deletion",      ), -    url( +    re_path(          r"operation_administrativeactop_delete/(?P<pk>.+)/$",          views.operation_administrativeactop_delete,          name="delete-administrativeact-operation",      ), -    url( +    re_path(          r"operation_search/(?P<step>.+)?$",          check_permissions(              ["archaeological_operations.view_operation", @@ -86,22 +85,22 @@ urlpatterns = [          )(views.operation_search_wizard),          name="operation_search",      ), -    url( +    re_path(          r"^operation-add-adminact/(?P<pk>[0-9-]+)/$",          check_permissions(              ["archaeological_operations.add_administrativeact"]          )(views.operation_adminact_add),          name="operation-add-adminact",      ), -    url( +    re_path(          r"operation_creation/(?P<step>.+)?$",          check_permissions(              ["archaeological_operations.add_operation"]          )(views.operation_creation_wizard),          name="operation_creation",      ), -    url(r"operation_add/(?P<file_id>\d+)$", views.operation_add, name="operation_add"), -    url( +    re_path(r"operation_add/(?P<file_id>\d+)$", views.operation_add, name="operation_add"), +    re_path(          r"operation_modification/(?P<step>.+)?$",          check_permissions(              ["archaeological_operations.change_operation", @@ -109,12 +108,12 @@ urlpatterns = [          )(views.operation_modification_wizard),          name="operation_modification",      ), -    url( +    re_path(          r"operation_modify/(?P<pk>.+)/$",          views.operation_modify,          name="operation_modify",      ), -    url( +    re_path(          r"operation_closing/(?P<step>.+)?$",          check_permissions(              ["archaeological_operations.change_operation", @@ -122,7 +121,7 @@ urlpatterns = [          )(views.operation_closing_wizard),          name="operation_closing",      ), -    url( +    re_path(          r"operation_deletion/(?P<step>.+)?$",          check_permissions(              ["archaeological_operations.change_operation", @@ -130,12 +129,12 @@ urlpatterns = [          )(views.operation_deletion_wizard),          name="operation_deletion",      ), -    url( +    re_path(          r"operation_delete/(?P<pk>.+)/$",          views.operation_delete,          name="delete-operation",      ), -    url( +    re_path(          r"administrativact_register/(?P<step>.+)?$",          check_permissions(              ["archaeological_operations.view_administrativeact", @@ -143,145 +142,145 @@ urlpatterns = [          )(views.administrativact_register_wizard),          name="administrativact_register",      ), -    url( +    re_path(          r"autocomplete-operation/$",          views.autocomplete_operation,          name="autocomplete-operation",      ), -    url( +    re_path(          r"get-operation/own/(?P<type>.+)?$",          views.get_operation,          name="get-own-operation",          kwargs={"force_own": True},      ), -    url(r"get-operation/(?P<type>.+)?$", views.get_operation, name="get-operation"), -    url( +    re_path(r"get-operation/(?P<type>.+)?$", views.get_operation, name="get-operation"), +    re_path(          r"get-operation-full/own/(?P<type>.+)?$",          views.get_operation,          name="get-own-operation-full",          kwargs={"full": True, "force_own": True},      ), -    url( +    re_path(          r"get-operation-full/(?P<type>.+)?$",          views.get_operation,          name="get-operation-full",          kwargs={"full": True},      ), -    url( +    re_path(          r"get-operation-shortcut/(?P<type>.+)?$",          views.get_operation,          name="get-operation-shortcut",          kwargs={"full": "shortcut"},      ), -    url( +    re_path(          r"get-available-operation-code/(?P<year>.+)?$",          views.get_available_operation_code,          name="get_available_operation_code",      ), -    url( +    re_path(          r"revert-operation/(?P<pk>.+)/(?P<date>.+)$",          views.revert_operation,          name="revert-operation",      ), -    url( +    re_path(          r"show-operation(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_operation,          name=models.Operation.SHOW_URL,      ), -    url( +    re_path(          r"show-historized-operation/(?P<pk>.+)?/(?P<date>.+)?$",          views.show_operation,          name="show-historized-operation",      ), -    url( +    re_path(          r"get-administrativeactop/(?P<type>.+)?$",          views.get_administrativeactop,          name="get-administrativeactop",      ), -    url( +    re_path(          r"get-administrativeact/(?P<type>.+)?$",          views.get_administrativeact,          name="get-administrativeact",      ), -    url( +    re_path(          r"get-administrativeact-full/(?P<type>.+)?$",          views.get_administrativeact,          name="get-administrativeact-full",          kwargs={"full": True},      ), -    url( +    re_path(          r"show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_administrativeact,          name="show-administrativeact",      ),      # allow specialization for operations -    url( +    re_path(          r"show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_administrativeact,          name="show-administrativeactop",      ),      # allow specialization for files, treatment, treatment request -    url( +    re_path(          r"show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_administrativeact,          name="show-administrativeactfile",      ), -    url( +    re_path(          r"show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_administrativeact,          name="show-administrativeacttreatment",      ), -    url( +    re_path(          r"show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_administrativeact,          name="show-administrativeacttreatmentfile",      ), -    url( +    re_path(          r"generatedoc-administrativeactop/(?P<pk>.+)?/(?P<template_pk>.+)?$",          views.generatedoc_administrativeactop,          name="generatedoc-administrativeactop",      ), -    url( +    re_path(          r"autocomplete-administrativeact/$",          views.autocomplete_administrativeact,          name="autocomplete-administrativeact",      ), -    url( +    re_path(          r"autocomplete-archaeologicalsite/$",          views.autocomplete_archaeologicalsite,          name="autocomplete-archaeologicalsite",      ), -    url( +    re_path(          r"new-archaeologicalsite/(?:(?P<parent_name>[^/]+)/)?"          r"(?:(?P<limits>[^/]+)/)?$",          views.new_archaeologicalsite,          name="new-archaeologicalsite",      ), -    url(r"get-site/(?P<type>.+)?$", views.get_site, name="get-site"), -    url( +    re_path(r"get-site/(?P<type>.+)?$", views.get_site, name="get-site"), +    re_path(          r"get-site-full/(?P<type>.+)?$",          views.get_site,          name="get-site-full",          kwargs={"full": True},      ), -    url( +    re_path(          r"get-site-shortcut/(?P<type>.+)?$",          views.get_site,          name="get-site-shortcut",          kwargs={"full": "shortcut"},      ), -    url(r"revert-site/(?P<pk>.+)/(?P<date>.+)$", views.revert_site, name="revert-site"), -    url( +    re_path(r"revert-site/(?P<pk>.+)/(?P<date>.+)$", views.revert_site, name="revert-site"), +    re_path(          r"show-site(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_site,          name=models.ArchaeologicalSite.SHOW_URL,      ), -    url( +    re_path(          r"show-historized-site/(?P<pk>.+)?/(?P<date>.+)?$",          views.show_site,          name="show-historized-site",      ), -    url( +    re_path(          r"site_search/(?P<step>.+)?$",          check_permissions(              ["archaeological_operations.view_archaeologicalsite", @@ -289,14 +288,14 @@ urlpatterns = [          )(views.site_search_wizard),          name="site_search",      ), -    url( +    re_path(          r"site_creation/(?P<step>.+)?$",          check_permissions(              ["archaeological_operations.add_archaeologicalsite"]          )(views.site_creation_wizard),          name="site_creation",      ), -    url( +    re_path(          r"site_modification/(?P<step>.+)?$",          check_permissions(              ["archaeological_operations.change_archaeologicalsite", @@ -304,31 +303,31 @@ urlpatterns = [          )(views.site_modification_wizard),          name="site_modification",      ), -    url(r"site_modify/(?P<pk>.+)/$", views.site_modify, name="site_modify"), -    url( +    re_path(r"site_modify/(?P<pk>.+)/$", views.site_modify, name="site_modify"), +    re_path(          r"site_deletion/(?P<step>.+)?$",          check_permissions(              ["archaeological_operations.change_archaeologicalsite"]          )(views.site_deletion_wizard),          name="site_deletion",      ), -    url(r"site_delete/(?P<pk>.+)/$", views.site_delete, name="delete-site"), -    url( +    re_path(r"site_delete/(?P<pk>.+)/$", views.site_delete, name="delete-site"), +    re_path(          r"autocomplete-patriarche/$",          views.autocomplete_patriarche,          name="autocomplete-patriarche",      ), -    url( +    re_path(          r"operation_administrativeact_document/$",          views.administrativeactfile_document,          name="operation-administrativeact-document",      ), -    url( +    re_path(          r"^operation-parcels-modify/(?P<pk>.+)/$",          views.operation_modify_parcels,          name="operation-parcels-modify",      ), -    url( +    re_path(          r"^operation-relations-modify/(?P<pk>.+)/$",          check_permissions(              ["archaeological_operations.change_operation", @@ -368,7 +367,7 @@ urlpatterns = [          )(views.site_operation_modify_relations),          name="site-operation-relations-modify",      ), -    url( +    re_path(          r"^operation-qa-bulk-update/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["archaeological_operations.change_operation", @@ -376,7 +375,7 @@ urlpatterns = [          )(views.QAOperationForm.as_view()),          name="operation-qa-bulk-update",      ), -    url( +    re_path(          r"^operation-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$",          check_permissions(              ["archaeological_operations.change_operation", @@ -385,7 +384,7 @@ urlpatterns = [          name="operation-qa-bulk-update-confirm",          kwargs={"confirm": True},      ), -    url( +    re_path(          r"^operation-qa-duplicate/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["archaeological_operations.change_operation", @@ -393,19 +392,19 @@ urlpatterns = [          )(views.QAOperationdDuplicateFormView.as_view()),          name="operation-qa-duplicate",      ), -    url( +    re_path(          r"^operation-qa-lock/(?P<pks>[0-9-]+)?/$",          views.QAOperationLockView.as_view(),          name="operation-qa-lock",          kwargs={"model": models.Operation},      ), -    url( +    re_path(          r"^operation-qa-link/(?P<pks>[0-9-]+)?/$",          QALinkView.as_view(),          name="operation-qa-link",          kwargs={"model": models.Operation, "url": "operation-qa-link"},      ), -    url( +    re_path(          r"^site-qa-duplicate/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["archaeological_operations.change_archaeologicalsite", @@ -413,19 +412,19 @@ urlpatterns = [          )(views.QAArchaeologicalSiteDuplicateFormView.as_view()),          name="site-qa-duplicate",      ), -    url( +    re_path(          r"^site-qa-lock/(?P<pks>[0-9-]+)?/$",          views.QASiteLockView.as_view(),          name="site-qa-lock",          kwargs={"model": models.ArchaeologicalSite},      ), -    url( +    re_path(          r"^site-qa-link/(?P<pks>[0-9-]+)?/$",          QALinkView.as_view(),          name="site-qa-link",          kwargs={"model": models.ArchaeologicalSite, "url": "site-qa-link"},      ), -    url( +    re_path(          r"^site-qa-bulk-update/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["archaeological_operations.change_archaeologicalsite", @@ -433,7 +432,7 @@ urlpatterns = [          )(views.QAArchaeologicalSiteForm.as_view()),          name="site-qa-bulk-update",      ), -    url( +    re_path(          r"^site-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$",          check_permissions(              ["archaeological_operations.change_archaeologicalsite", @@ -442,20 +441,20 @@ urlpatterns = [          name="site-qa-bulk-update-confirm",          kwargs={"confirm": True},      ), -    url( +    re_path(          r"generate-stats-operation/(?P<pk>.+)/",          views.GenerateStatsOperation.as_view(),          name="generate-stats-operation",      ), -    url( +    re_path(          r"api/facets/operation/$", views_api.FacetOperationAPIView.as_view(),          name="api-facets-operation"      ), -    url( +    re_path(          r"api/search/operation/$", views_api.SearchOperationAPI.as_view(),          name="api-search-operation"      ), -    url( +    re_path(          r"api/search/archaeologicalsite/$", views_api.SearchSiteAPI.as_view(),          name="api-search-archaeologicalsite"      ), diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index 385061c0a..1d3e87f90 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -28,7 +28,7 @@ from django.http import HttpResponse, HttpResponseRedirect, Http404  from django.shortcuts import render, redirect  from django.urls import reverse  from django.views.generic import RedirectView -from ishtar_common.utils import ugettext_lazy as _, pgettext_lazy, parse_parcels +from ishtar_common.utils import gettext_lazy as _, pgettext_lazy, parse_parcels  from django.forms import ValidationError  from archaeological_operations import models diff --git a/archaeological_operations/widgets.py b/archaeological_operations/widgets.py index 98e7169ab..16bd69545 100644 --- a/archaeological_operations/widgets.py +++ b/archaeological_operations/widgets.py @@ -22,7 +22,7 @@ from django.forms import widgets  from django.forms.utils import flatatt  from django.template import loader  from django.utils.safestring import mark_safe -from ishtar_common.utils import ugettext_lazy as _, get_current_profile +from ishtar_common.utils import gettext_lazy as _, get_current_profile  class ParcelWidget(widgets.MultiWidget): diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py index 94d6b49f9..eab5596fb 100644 --- a/archaeological_operations/wizards.py +++ b/archaeological_operations/wizards.py @@ -23,7 +23,7 @@ from django.conf import settings  from django.core.exceptions import ObjectDoesNotExist  from django.shortcuts import render  from django.urls import reverse -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import gettext_lazy as _  from archaeological_files.models import File  from archaeological_operations import models diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py index 5b22362c4..07c10ba91 100644 --- a/archaeological_warehouse/forms.py +++ b/archaeological_warehouse/forms.py @@ -27,7 +27,7 @@ from django.conf import settings  from django.core.validators import validate_slug  from django.forms.formsets import formset_factory -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import gettext_lazy as _  from ishtar_common.models import (      Area, diff --git a/archaeological_warehouse/ishtar_menu.py b/archaeological_warehouse/ishtar_menu.py index ae66e165c..5c758341a 100644 --- a/archaeological_warehouse/ishtar_menu.py +++ b/archaeological_warehouse/ishtar_menu.py @@ -17,7 +17,7 @@  # See the file COPYING for details. -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import gettext_lazy as _  from ishtar_common.menu_base import SectionItem, MenuItem diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index 993ab3362..e9588668c 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -29,7 +29,7 @@ from django.db.models import Q, Max  from django.db.models.signals import post_save, post_delete, m2m_changed, pre_delete  from django.template.defaultfilters import slugify  from django.urls import reverse, reverse_lazy -from ishtar_common.utils import ugettext_lazy as _, pgettext_lazy +from ishtar_common.utils import gettext_lazy as _, pgettext_lazy  from django.apps import apps  from ishtar_common.data_importer import post_importer_action, pre_importer_action, \ diff --git a/archaeological_warehouse/urls.py b/archaeological_warehouse/urls.py index 395204c19..47f08099e 100644 --- a/archaeological_warehouse/urls.py +++ b/archaeological_warehouse/urls.py @@ -17,8 +17,7 @@  # See the file COPYING for details. -from django.conf.urls import url -from django.urls import path +from django.urls import path, re_path  from ishtar_common.utils import check_permissions  from ishtar_common.views import QALinkView @@ -29,7 +28,7 @@ from archaeological_warehouse import models, views, views_api  # forms  urlpatterns = [ -    url( +    re_path(          r"warehouse_packaging/(?P<step>.+)?$",  # AFAC          check_permissions(              ["archaeological_finds.change_find", @@ -37,75 +36,75 @@ urlpatterns = [          )(views.warehouse_packaging_wizard),          name="warehouse_packaging",      ), -    url( +    re_path(          r"new-warehouse/(?P<parent_name>.+)?/$",          views.new_warehouse,          name="new-warehouse",      ), -    url( +    re_path(          r"^show-warehouse(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_warehouse,          name=models.Warehouse.SHOW_URL,      ), -    url( +    re_path(          r"^show-historized-warehouse/(?P<pk>.+)?/(?P<date>.+)?$",          views.show_warehouse,          name="show-historized-warehouse",      ), -    url( +    re_path(          r"^revert-warehouse/(?P<pk>.+)/(?P<date>.+)$",          views.revert_warehouse,          name="revert-warehouse",      ), -    url( +    re_path(          r"autocomplete-warehouse/$",          views.autocomplete_warehouse,          name="autocomplete-warehouse",      ), -    url( +    re_path(          r"new-container/(?P<parent_name>.+)?/$",          views.new_container,          name="new-container",      ), -    url(r"get-container/(?P<type>.+)?$", views.get_container, name="get-container"), -    url( +    re_path(r"get-container/(?P<type>.+)?$", views.get_container, name="get-container"), +    re_path(          r"get-divisions-container/(?P<type>.+)?$",          views.get_divisions_container,          name="get-divisions-container",      ), -    url( +    re_path(          r"get-non-divisions-container/(?P<type>.+)?$",          views.get_non_divisions_container,          name="get-non-divisions-container",      ), -    url(r"get-warehouse/(?P<type>.+)?$", views.get_warehouse, name="get-warehouse"), -    url( +    re_path(r"get-warehouse/(?P<type>.+)?$", views.get_warehouse, name="get-warehouse"), +    re_path(          r"get-warehouse-shortcut/(?P<type>.+)?$",          views.get_warehouse,          name="get-warehouse-shortcut",          kwargs={"full": "shortcut"},      ), -    url( +    re_path(          r"autocomplete-container/(?P<warehouse_id>\d+)?(?:/)?$",          views.autocomplete_container,          name="autocomplete-container",      ), -    url( +    re_path(          r"^show-container(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_container,          name=models.Container.SHOW_URL,      ), -    url( +    re_path(          r"^show-historized-container/(?P<pk>.+)?/(?P<date>.+)?$",          views.show_container,          name="show-historized-container",      ), -    url( +    re_path(          r"^revert-container/(?P<pk>.+)/(?P<date>.+)$",          views.revert_container,          name="revert-container",      ), -    url( +    re_path(          r"^warehouse_search/(?P<step>.+)?$",          check_permissions(              ["archaeological_warehouse.view_warehouse", @@ -113,14 +112,14 @@ urlpatterns = [          )(views.warehouse_search_wizard),          name="warehouse_search",      ), -    url( +    re_path(          r"^warehouse_creation/(?P<step>.+)?$",          check_permissions(              ["archaeological_warehouse.add_warehouse"]          )(views.warehouse_creation_wizard),          name="warehouse_creation",      ), -    url( +    re_path(          r"^warehouse_modification/(?P<step>.+)?$",          check_permissions(              ["archaeological_warehouse.change_warehouse", @@ -128,12 +127,12 @@ urlpatterns = [          )(views.warehouse_modification_wizard),          name="warehouse_modification",      ), -    url( +    re_path(          r"warehouse-modify/(?P<pk>.+)/$",          views.warehouse_modify,          name="warehouse_modify",      ), -    url( +    re_path(          r"^warehouse_deletion/(?P<step>.+)?$",          check_permissions(              ["archaeological_warehouse.delete_warehouse", @@ -141,24 +140,24 @@ urlpatterns = [          )(views.warehouse_deletion_wizard),          name="warehouse_deletion",      ), -    url( +    re_path(          r"warehouse-delete/(?P<pk>.+)/$",          views.warehouse_delete,          name="delete-warehouse",      ), -    url( +    re_path(          r"^warehouse-qa-lock/(?P<pks>[0-9-]+)?/$",          views.QAWarehouseLockView.as_view(),          name="warehouse-qa-lock",          kwargs={"model": models.Warehouse},      ), -    url( +    re_path(          r"^warehouse-qa-link/(?P<pks>[0-9-]+)?/$",          QALinkView.as_view(),          name="warehouse-qa-link",          kwargs={"model": models.Warehouse, "url": "warehouse-qa-link"},      ), -    url( +    re_path(          r"^warehouse-qa-bulk-update/(?P<pks>[0-9-]+)?/$",          check_permissions([              "archaeological_warehouse.change_warehouse", @@ -166,7 +165,7 @@ urlpatterns = [          ])(views.QAWarehouseForm.as_view()),          name="warehouse-qa-bulk-update",      ), -    url( +    re_path(          r"^warehouse-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$",          check_permissions([              "archaeological_warehouse.change_warehouse", @@ -175,7 +174,7 @@ urlpatterns = [          name="warehouse-qa-bulk-update-confirm",          kwargs={"confirm": True},      ), -    url( +    re_path(          r"^container-add-treatment/(?P<pk>[0-9-]+)/$",          check_permissions(              ["archaeological_finds.change_find", @@ -183,7 +182,7 @@ urlpatterns = [          )(views.container_treatment_add),          name="container-add-treatment",      ), -    url( +    re_path(          r"^container_search/(?P<step>.+)?$",          check_permissions(              ["archaeological_warehouse.view_container", @@ -191,14 +190,14 @@ urlpatterns = [          )(views.container_search_wizard),          name="container_search",      ), -    url( +    re_path(          r"^container_creation/(?P<step>.+)?$",          check_permissions(              ["archaeological_warehouse.add_container"]          )(views.container_creation_wizard),          name="container_creation",      ), -    url( +    re_path(          r"^container_modification/(?P<step>.+)?$",          check_permissions(              ["archaeological_warehouse.change_container", @@ -206,12 +205,12 @@ urlpatterns = [          )(views.container_modification_wizard),          name="container_modification",      ), -    url( +    re_path(          r"container-modify/(?P<pk>.+)/$",          views.container_modify,          name="container_modify",      ), -    url( +    re_path(          r"^container_deletion/(?P<step>.+)?$",          check_permissions(              ["archaeological_warehouse.delete_container", @@ -219,12 +218,12 @@ urlpatterns = [          )(views.container_deletion_wizard),          name="container_deletion",      ), -    url( +    re_path(          r"container-delete/(?P<pk>.+)/$",          views.container_delete,          name="delete-container",      ), -    url( +    re_path(          r"^container-qa-bulk-update/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["archaeological_warehouse.change_container", @@ -232,7 +231,7 @@ urlpatterns = [          )(views.QAContainerForm.as_view()),          name="container-qa-bulk-update",      ), -    url( +    re_path(          r"^container-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$",          check_permissions(              ["archaeological_warehouse.change_container", @@ -241,7 +240,7 @@ urlpatterns = [          name="container-qa-bulk-update-confirm",          kwargs={"confirm": True},      ), -    url( +    re_path(          r"^container-qa-move/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["archaeological_warehouse.change_container", @@ -249,52 +248,52 @@ urlpatterns = [          )(views.QAContainerMoveForm.as_view()),          name="container-qa-move",      ), -    url( +    re_path(          r"^container-qa-lock/(?P<pks>[0-9-]+)?/$",          views.QAContainerLockView.as_view(),          name="container-qa-lock",          kwargs={"model": models.Container},      ), -    url( +    re_path(          r"^container-qa-link/(?P<pks>[0-9-]+)?/$",          QALinkView.as_view(),          name="container-qa-link",          kwargs={"model": models.Container, "url": "container-qa-link"},      ), -    url( +    re_path(          r"container-merge/(?:(?P<page>\d+)/)?$",          views.container_merge,          name="container_merge",      ), -    url( +    re_path(          r"container-manual-merge/$",          views.ContainerManualMerge.as_view(),          name="container_manual_merge",      ), -    url( +    re_path(          r"container-manual-merge-items/(?P<pks>[0-9_]+?)/$",          views.ContainerManualMergeItems.as_view(),          name="container_manual_merge_items",      ), -    url( +    re_path(          r"generate-stats-container/(?P<pk>.+)/",          views.GenerateStatsContainer.as_view(),          name="generate-stats-container",      ), -    url( +    re_path(          r"generate-stats-warehouse/(?P<pk>.+)/",          views.GenerateStatsWarehouse.as_view(),          name="generate-stats-warehouse",      ), -    url( +    re_path(          r"api/facets/warehouse/$", views_api.FacetWarehouseAPIView.as_view(),          name="api-facets-warehouse"      ), -    url( +    re_path(          r"api/search/warehouse/$", views_api.SearchWarehouseAPI.as_view(),          name="api-search-warehouse"      ), -    url( +    re_path(          r"api/search/container/$", views_api.SearchContainerAPI.as_view(),          name="api-search-container"      ), diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py index bab0140b6..2d77cfe92 100644 --- a/archaeological_warehouse/views.py +++ b/archaeological_warehouse/views.py @@ -27,7 +27,7 @@ from django.views.generic.edit import FormView  from django.http import HttpResponse, Http404, HttpResponseRedirect  from django.shortcuts import redirect  from django.urls import reverse -from ishtar_common.utils import ugettext_lazy as _, pgettext_lazy +from ishtar_common.utils import gettext_lazy as _, pgettext_lazy  from archaeological_warehouse import models  from archaeological_warehouse import forms diff --git a/docs/generate_values_doc.py b/docs/generate_values_doc.py index e71278ded..c2dfe1b9b 100644 --- a/docs/generate_values_doc.py +++ b/docs/generate_values_doc.py @@ -1,6 +1,6 @@  from django.apps import apps  from django.conf import settings -from django.utils.translation import activate, ugettext as _ +from django.utils.translation import activate, gettext as _  import datetime  from jinja2 import Template diff --git a/example_project/__init__.py.base.sample b/example_project/__init__.py.base.sample index 6631c46d5..7a9846b1b 100644 --- a/example_project/__init__.py.base.sample +++ b/example_project/__init__.py.base.sample @@ -1,5 +1,5 @@  # force the retranslation of generated strings and external module -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  _("username")  _("email address") diff --git a/example_project/__init__.py.celery.sample b/example_project/__init__.py.celery.sample index 3cda63729..357afe22a 100644 --- a/example_project/__init__.py.celery.sample +++ b/example_project/__init__.py.celery.sample @@ -1,5 +1,5 @@  # force the retranslation of generated strings and external module -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  from .celery_app import app as celery_app diff --git a/example_project/urls.py b/example_project/urls.py index 9615afd5b..528d47259 100644 --- a/example_project/urls.py +++ b/example_project/urls.py @@ -1,5 +1,6 @@  from django.conf import settings -from django.conf.urls import include, url +from django.conf.urls import include +from django.urls import re_path  from django.contrib import admin  from ishtar_common.apps import admin_site @@ -16,13 +17,13 @@ APP_LIST = ['archaeological_files',              'archaeological_warehouse', 'archaeological_finds']  for app in APP_LIST:      urlpatterns += [ -        url('', include(app + '.urls')), +        re_path('', include(app + '.urls')),      ]  urlpatterns += [ -    url(r'^admin/', include(admin_site.urls[:2])), -    url(r'', include('ishtar_common.urls')), -    url(r'^$', index, name='start'), +    re_path(r'^admin/', include(admin_site.urls[:2])), +    re_path(r'', include('ishtar_common.urls')), +    re_path(r'^$', index, name='start'),  ]  if settings.DEBUG: @@ -35,6 +36,6 @@ if settings.DEBUG:  if settings.DEBUG_TOOLBAR:      import debug_toolbar      urlpatterns = [ -        url(r'^__debug__/', include(debug_toolbar.urls)), +        re_path(r'^__debug__/', include(debug_toolbar.urls)),      ] + urlpatterns diff --git a/ishtar_common/__init__.py b/ishtar_common/__init__.py index fd8fb9357..d398224aa 100644 --- a/ishtar_common/__init__.py +++ b/ishtar_common/__init__.py @@ -2,7 +2,7 @@  # -*- coding: utf-8 -*-  # Copyright (C) 2014-2025  Étienne Loks  <etienne.loks at iggdrasil dot net> -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  # overload of translation of registration module  _("username") diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index dbce4670f..fd1b4e5c3 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -34,7 +34,6 @@ from rest_framework.authtoken.models import Token  from axes import models as axes_models  from axes.admin import AccessAttemptAdmin, AccessLogAdmin  from django.conf import settings -from django.conf.urls import url  from django.contrib import admin, messages  from django.contrib.admin.views.main import ChangeList  from django.contrib.auth.admin import GroupAdmin, UserAdmin @@ -61,11 +60,11 @@ from django.db.models.fields.related import ForeignKey  from django.forms import BaseInlineFormSet  from django.http import HttpResponseRedirect, HttpResponse, Http404  from django.shortcuts import render -from django.urls import reverse +from django.urls import re_path, reverse  from django.utils.decorators import method_decorator  from django.utils.text import slugify  from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  from django.views.decorators.csrf import csrf_protect  from django import forms @@ -1120,7 +1119,7 @@ class ImportActionAdmin(admin.ModelAdmin):      def get_urls(self):          urls = super(ImportActionAdmin, self).get_urls()          my_urls = [ -            url(r"^import-from-csv/$", self.import_generic), +            re_path(r"^import-from-csv/$", self.import_generic),          ]          return my_urls + urls @@ -1278,7 +1277,7 @@ class ImportGEOJSONActionAdmin(object):      def get_urls(self):          urls = super(ImportGEOJSONActionAdmin, self).get_urls()          my_urls = [ -            url(r"^import-from-geojson/$", self.import_geojson), +            re_path(r"^import-from-geojson/$", self.import_geojson),          ]          return my_urls + urls @@ -1504,7 +1503,7 @@ class ImportJSONActionAdmin(admin.ModelAdmin):      def get_urls(self):          urls = super(ImportJSONActionAdmin, self).get_urls()          my_urls = [ -            url(r"^import-from-json/$", self.import_json), +            re_path(r"^import-from-json/$", self.import_json),          ]          return my_urls + urls @@ -1773,7 +1772,7 @@ class CreateDepartmentActionAdmin(GeneralTypeAdmin):      def get_urls(self):          urls = super(CreateDepartmentActionAdmin, self).get_urls()          my_urls = [ -            url(r"^create-department/$", self.create_area), +            re_path(r"^create-department/$", self.create_area),          ]          return my_urls + urls diff --git a/ishtar_common/apps.py b/ishtar_common/apps.py index 2a726dd4c..0c37c6370 100644 --- a/ishtar_common/apps.py +++ b/ishtar_common/apps.py @@ -4,7 +4,7 @@ from django.http import Http404  from django.template.response import TemplateResponse  from django.urls import NoReverseMatch, reverse  from django.utils.text import capfirst -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  class IshtarAdminSite(AdminSite): diff --git a/ishtar_common/context_processors.py b/ishtar_common/context_processors.py index ce379a4cd..5442b08fe 100644 --- a/ishtar_common/context_processors.py +++ b/ishtar_common/context_processors.py @@ -25,7 +25,7 @@ from django.conf import settings  from django.core.cache import cache  from django.contrib.sites.models import Site  from django.urls import reverse -from django.utils.translation import ugettext_lazy as _, get_language +from django.utils.translation import gettext_lazy as _, get_language  from ishtar_common.version import __version__  from ishtar_common.models import get_current_profile diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py index 9dbe0b3e9..253cd593e 100644 --- a/ishtar_common/data_importer.py +++ b/ishtar_common/data_importer.py @@ -36,7 +36,7 @@ from django.core.files import File  from django.db import IntegrityError, DatabaseError, transaction  from django.db.models import Q  from django.template.defaultfilters import slugify -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  from ishtar_common.utils import (      get_all_field_names, diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index f16a3eeb9..ac0c638e1 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -39,7 +39,7 @@ from django.utils import formats, translation  from django.utils.functional import lazy  from django.utils.safestring import mark_safe  from django.utils.text import slugify -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  from bootstrap_datepicker.widgets import DatePicker, DATE_FORMAT  from ishtar_common import models diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 56942fbe0..a77b94618 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -49,7 +49,7 @@ from django.forms.models import BaseModelFormSet, BaseFormSet  from django.shortcuts import reverse  from django.utils.text import slugify  from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _, pgettext +from django.utils.translation import gettext_lazy as _, pgettext  from . import models, models_rest  from .models_imports import FORMATER_WIDGETS_DCT diff --git a/ishtar_common/ishtar_menu.py b/ishtar_common/ishtar_menu.py index 8eb9c5932..0235db8d1 100644 --- a/ishtar_common/ishtar_menu.py +++ b/ishtar_common/ishtar_menu.py @@ -17,7 +17,7 @@  # See the file COPYING for details. -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  from ishtar_common.menu_base import SectionItem, MenuItem diff --git a/ishtar_common/management/commands/migrate_to_geo_v4.py b/ishtar_common/management/commands/migrate_to_geo_v4.py index 343fc85f3..d432e33b6 100644 --- a/ishtar_common/management/commands/migrate_to_geo_v4.py +++ b/ishtar_common/management/commands/migrate_to_geo_v4.py @@ -12,7 +12,7 @@ from django.conf import settings  from django.contrib.contenttypes.models import ContentType  from django.core.management.base import BaseCommand -from ishtar_common.utils import ugettext_lazy as _, get_log_time, get_percent, get_eta +from ishtar_common.utils import gettext_lazy as _, get_log_time, get_percent, get_eta  from ishtar_common import models_common, models  from archaeological_operations.models import Operation, ArchaeologicalSite diff --git a/ishtar_common/models.py b/ishtar_common/models.py index da827f99b..4ae11a777 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -82,8 +82,8 @@ from django.utils.functional import lazy  from django.utils.safestring import mark_safe  from ishtar_common.data_importer import ImporterError, post_importer_action  from ishtar_common.utils import ( -    ugettext_lazy as _, -    ugettext, +    gettext_lazy as _, +    gettext,      pgettext_lazy,      format_date,      get_generated_id, @@ -5291,9 +5291,9 @@ class Document(          verbose_name_plural = _("Documents")          ordering = ("title",)          permissions = ( -            ("view_own_document", ugettext("Can view own Document")), -            ("change_own_document", ugettext("Can change own Document")), -            ("delete_own_document", ugettext("Can delete own Document")), +            ("view_own_document", gettext("Can view own Document")), +            ("change_own_document", gettext("Can change own Document")), +            ("delete_own_document", gettext("Can delete own Document")),          )          indexes = [              GinIndex(fields=["data"]), diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py index daf2d9885..ea7303089 100644 --- a/ishtar_common/models_common.py +++ b/ishtar_common/models_common.py @@ -47,7 +47,7 @@ from django.utils.safestring import SafeText, mark_safe  from django.utils.translation import activate, deactivate  from ishtar_common.utils import (      BColors, -    ugettext_lazy as _, +    gettext_lazy as _,      pgettext_lazy,      get_image_path,      get_columns_from_class, diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index a935c0e21..3ebbb8068 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -53,7 +53,7 @@ from django.db.models.base import ModelBase  from django.db.models.signals import pre_delete  from django.template.defaultfilters import slugify  from django.utils.functional import cached_property -from django.utils.translation import ugettext_lazy as _, pgettext_lazy +from django.utils.translation import gettext_lazy as _, pgettext_lazy  UnoCalc = None  ITALIC = None diff --git a/ishtar_common/models_rest.py b/ishtar_common/models_rest.py index 8f6f8d40c..9ed9abd3e 100644 --- a/ishtar_common/models_rest.py +++ b/ishtar_common/models_rest.py @@ -14,7 +14,7 @@ from django.apps import apps  from django.template import loader  from ishtar_common.models_common import BaseSheetFilter -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import gettext_lazy as _  UnoCalc = None  ITALIC = None diff --git a/ishtar_common/tasks.py b/ishtar_common/tasks.py index ba5a346e1..55c704ab1 100644 --- a/ishtar_common/tasks.py +++ b/ishtar_common/tasks.py @@ -25,7 +25,7 @@ import sys  from django.conf import settings  from django.core.files import File  from django.db.models import Q -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  from ishtar_common.models_common import Town, Department  from ishtar_common.utils import task diff --git a/ishtar_common/templatetags/date_formating.py b/ishtar_common/templatetags/date_formating.py index 8d81fc578..f0504318b 100644 --- a/ishtar_common/templatetags/date_formating.py +++ b/ishtar_common/templatetags/date_formating.py @@ -4,7 +4,7 @@  from datetime import datetime  from django.template import Library -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _  register = Library() diff --git a/ishtar_common/templatetags/table_form.py b/ishtar_common/templatetags/table_form.py index 01bb5679c..f1c3f688f 100644 --- a/ishtar_common/templatetags/table_form.py +++ b/ishtar_common/templatetags/table_form.py @@ -2,7 +2,7 @@  # -*- coding: utf-8 -*-  from django.template import Library -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  register = Library() diff --git a/ishtar_common/templatetags/window_field.py b/ishtar_common/templatetags/window_field.py index 576a7d3cc..721f39ef5 100644 --- a/ishtar_common/templatetags/window_field.py +++ b/ishtar_common/templatetags/window_field.py @@ -2,7 +2,7 @@ import os  from django import template  from django.template import loader -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _  from django.utils.safestring import mark_safe  from ishtar_common.models import HistoryModel, Town diff --git a/ishtar_common/templatetags/window_tables.py b/ishtar_common/templatetags/window_tables.py index 5685fbc93..bcd3a7b8c 100644 --- a/ishtar_common/templatetags/window_tables.py +++ b/ishtar_common/templatetags/window_tables.py @@ -7,7 +7,7 @@ from django.template.defaultfilters import slugify  from django.template.loader import get_template  from django.urls import resolve  from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  from ishtar_common.forms import reverse_lazy  from ishtar_common.widgets import DataTable diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index 18e1d9c38..bbe5db892 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -56,7 +56,7 @@ from django.template.defaultfilters import slugify  from django.test import TestCase as BaseTestCase  from django.test.client import Client  from django.test.runner import DiscoverRunner -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  from django.urls import reverse  from ishtar_common import models, models_common, forms_common diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index b9eb88c2b..a66947183 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -18,9 +18,9 @@  # See the file COPYING for details.  from django.conf import settings -from django.conf.urls import include, url +from django.conf.urls import include  from django.conf.urls.static import static -from django.urls import path +from django.urls import path, re_path  from django.views.generic import TemplateView  from .menus import Menu @@ -32,37 +32,37 @@ from ishtar_common.utils import check_permissions, get_urls_for_model  # forms  urlpatterns = [ -    url(r"^status/$", views.status, name="status"), -    url(r"^raise-error/$", views.raise_error, name="raise-error"), -    url(r"^raise-task-error/$", views.raise_task_error, name="raise-task-error"), -    url(r"^ty/(?P<url_id>[a-zA-Z0-9]+)$", views.tiny_redirect, name="tiny-redirect"), -    url( +    re_path(r"^status/$", views.status, name="status"), +    re_path(r"^raise-error/$", views.raise_error, name="raise-error"), +    re_path(r"^raise-task-error/$", views.raise_task_error, name="raise-task-error"), +    re_path(r"^ty/(?P<url_id>[a-zA-Z0-9]+)$", views.tiny_redirect, name="tiny-redirect"), +    re_path(          r"^robots\.txt$",          TemplateView.as_view(template_name="robots.txt", content_type="text/plain"),      ),      # internationalization -    url(r"^i18n/", include("django.conf.urls.i18n")), -    url(r"^js/settings.js", views.settings_js, name="settings-js"), +    re_path(r"^i18n/", include("django.conf.urls.i18n")), +    re_path(r"^js/settings.js", views.settings_js, name="settings-js"),      # General -    url(r"shortcut_menu/", views.shortcut_menu, name="shortcut-menu"), -    url(r"news-feed/", views.display_news_feed, name="news-feed"), -    url( +    re_path(r"shortcut_menu/", views.shortcut_menu, name="shortcut-menu"), +    re_path(r"news-feed/", views.display_news_feed, name="news-feed"), +    re_path(          r"display/(?P<item_type>\w+)/(?P<pk>\d+)/",          views.DisplayItemView.as_view(),          name="display-item",      ), -    url(r"qrcode/search/", views.QRCodeForSearchView.as_view(), name="search-qrcode"), -    url( +    re_path(r"qrcode/search/", views.QRCodeForSearchView.as_view(), name="search-qrcode"), +    re_path(          r"qrcode/(?P<app>[-a-z]+)/(?P<model_name>[-a-z]+)/(?P<pk>\d+)/",          views.QRCodeView.as_view(),          name="qrcode-item",      ), -    url( +    re_path(          r"^generate-labels/(?P<template_slug>[-a-z0-9]+)/",          views.GenerateLabelView.as_view(),          name="generate-labels",      ), -    url( +    re_path(          r"^generate-document/(?P<template_slug>[-a-z0-9]+)/(" r"?P<item_pk>\d+)/",          views.GenerateView.as_view(),          name="generate-document", @@ -72,54 +72,54 @@ urlpatterns = [          views.ExportMediaView.as_view(),          name="export-media"      ), -    url( +    re_path(          r"person_search/(?P<step>.+)?$",          check_permissions(              ["ishtar_common.view_person", "ishtar_common.view_own_person"]          )(views.person_search_wizard),          name="person_search",      ), -    url( +    re_path(          r"person_creation/(?P<step>.+)?$",          check_permissions(["ishtar_common.add_person"])(views.person_creation_wizard),          name="person_creation",      ), -    url( +    re_path(          r"person_modification/(?P<step>.+)?$",          check_permissions(              ["ishtar_common.change_person", "ishtar_common.change_own_person"]          )(views.person_modification_wizard),          name="person_modification",      ), -    url(r"person_modify/(?P<pk>.+)/$", views.person_modify, name="person_modify"), -    url( +    re_path(r"person_modify/(?P<pk>.+)/$", views.person_modify, name="person_modify"), +    re_path(          r"person_deletion/(?P<step>.+)?$",          check_permissions(              ["ishtar_common.delete_person", "ishtar_common.delete_own_person"]          )(views.person_deletion_wizard),          name="person_deletion",      ), -    url(r"person_delete/(?P<pk>.+)/$", views.person_delete, name="person_delete"), -    url( +    re_path(r"person_delete/(?P<pk>.+)/$", views.person_delete, name="person_delete"), +    re_path(          r"^person-edit/$",          check_permissions(["ishtar_common.add_person"])(views.PersonCreate.as_view()),          name="person_create",      ), -    url( +    re_path(          r"^person-edit/(?P<pk>\d+)$",          check_permissions(              ["ishtar_common.change_person", "ishtar_common.change_own_person"]          )(views.PersonEdit.as_view()),          name="person_edit",      ), -    url( +    re_path(          r"^person-qa-bulk-update/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["ishtar_common.change_person", "ishtar_common.change_own_person"]          )(views.QAPersonForm.as_view()),          name="person-qa-bulk-update",      ), -    url( +    re_path(          r"^person-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$",          check_permissions(              ["ishtar_common.change_person", "ishtar_common.change_own_person"] @@ -127,52 +127,52 @@ urlpatterns = [          name="person-qa-bulk-update-confirm",          kwargs={"confirm": True},      ), -    url( +    re_path(          r"organization_search/(?P<step>.+)?$",          check_permissions(              ["ishtar_common.view_organization", "ishtar_common.view_own_organization"]          )(views.organization_search_wizard),          name="organization_search",      ), -    url( +    re_path(          r"organization_creation/(?P<step>.+)?$",          check_permissions(              ["ishtar_common.add_organization"]          )(views.organization_creation_wizard),          name="organization_creation",      ), -    url( +    re_path(          r"organization_modification/(?P<step>.+)?$",          check_permissions(              ["ishtar_common.change_organization", "ishtar_common.change_own_organization"]          )(views.organization_modification_wizard),          name="organization_modification",      ), -    url( +    re_path(          r"organization_modify/(?P<pk>.+)/$",          views.organization_modify,          name="organization_modify",      ), -    url( +    re_path(          r"organization_deletion/(?P<step>.+)?$",          check_permissions(              ["ishtar_common.delete_organization", "ishtar_common.delete_own_organization"]          )(views.organization_deletion_wizard),          name="organization_deletion",      ), -    url( +    re_path(          r"organization_delete/(?P<pk>.+)/$",          views.organization_delete,          name="delete-organization",      ), -    url( +    re_path(          r"organization-edit/$",          check_permissions(              ["ishtar_common.add_organization"]          )(views.OrganizationCreate.as_view()),          name="organization_create",      ), -    url( +    re_path(          r"organization-edit/(?P<pk>\d+)$",          check_permissions(              ["ishtar_common.change_organization", @@ -180,28 +180,28 @@ urlpatterns = [          )(views.OrganizationEdit.as_view()),          name="organization_edit",      ), -    url( +    re_path(          r"organization-person-edit/$",          check_permissions(              ["ishtar_common.add_organization"]          )(views.OrganizationPersonCreate.as_view()),          name="organization_person_create",      ), -    url( +    re_path(          r"organization-person-edit/(?P<pk>\d+)$",          check_permissions(              ["ishtar_common.change_organization", "ishtar_common.change_own_organization"]          )(views.OrganizationPersonEdit.as_view()),          name="organization_person_edit",      ), -    url( +    re_path(          r"^organization-qa-bulk-update/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["ishtar_common.change_organization", "ishtar_common.change_own_organization"]          )(views.QAOrganizationForm.as_view()),          name="organization-qa-bulk-update",      ), -    url( +    re_path(          r"^organization-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$",          check_permissions(              ["ishtar_common.change_organization", "ishtar_common.change_own_organization"] @@ -209,55 +209,55 @@ urlpatterns = [          name="organization-qa-bulk-update-confirm",          kwargs={"confirm": True},      ), -    url(r"get-ishtaruser/(?P<type>.+)?$", views.get_ishtaruser, name="get-ishtaruser"), -    url( +    re_path(r"get-ishtaruser/(?P<type>.+)?$", views.get_ishtaruser, name="get-ishtaruser"), +    re_path(          r"account_management/(?P<step>.+)?$",          check_permissions(              ["ishtar_common.add_ishtaruser"]          )(views.account_management_wizard),          name="account_management",      ), -    url( +    re_path(          r"account_manage/(?P<pk>\d+)$",          views.account_manage,          name="account-manage",      ), -    url( +    re_path(          r"account_deletion/(?P<step>.+)?$",          check_permissions(              ["ishtar_common.add_ishtaruser"]          )(views.account_deletion_wizard),          name="account_deletion",      ), -    url( +    re_path(          r"^import-new/$",          check_permissions(              ["ishtar_common.add_import", "ishtar_common.add_own_import"]          )(views.NewImportView.as_view()),          name="new_import",      ), -    url( +    re_path(          r"^import-edit/(?P<pk>[0-9]+)/$",          check_permissions(              ["ishtar_common.change_import", "ishtar_common.change_own_import"]          )(views.EditImportView.as_view()),          name="edit_import",      ), -    url( +    re_path(          r"^import-new-gis/$",          check_permissions(              ["ishtar_common.add_import", "ishtar_common.add_own_import"]          )(views.NewImportGISView.as_view()),          name="new_import_gis",      ), -    url( +    re_path(          r"^import-new-group/$",          check_permissions(              ["ishtar_common.add_import", "ishtar_common.add_own_import"]          )(views.NewImportGroupView.as_view()),          name="new_import_group",      ), -    url( +    re_path(          r"^import-list/$",          check_permissions(              ["ishtar_common.view_import", "ishtar_common.view_own_import", @@ -265,7 +265,7 @@ urlpatterns = [          )(views.ImportListView.as_view()),          name="current_imports",      ), -    url( +    re_path(          r"^import-list-table/$",          check_permissions(              ["ishtar_common.view_import", "ishtar_common.view_own_import", @@ -273,7 +273,7 @@ urlpatterns = [          )(views.ImportListTableView.as_view()),          name="current_imports_table",      ), -    url( +    re_path(         r"^import-get-status/$",         check_permissions(             ["ishtar_common.view_import", "ishtar_common.view_own_import", @@ -281,7 +281,7 @@ urlpatterns = [         )(views.import_get_status),         name="import_get_status",      ), -    url( +    re_path(          r"^import-list-old/$",          check_permissions(              ["ishtar_common.view_import", "ishtar_common.view_own_import", @@ -289,78 +289,78 @@ urlpatterns = [          )(views.ImportOldListView.as_view()),          name="old_imports",      ), -    url( +    re_path(          r"^import-delete/(?P<pk>[0-9]+)/$",          check_permissions(              ["ishtar_common.delete_import", "ishtar_common.delete_own_import"]          )(views.ImportDeleteView.as_view()),          name="import_delete",      ), -    url( +    re_path(          r"^import-group-delete/(?P<pk>[0-9]+)/$",          check_permissions(              ["ishtar_common.delete_import", "ishtar_common.delete_own_import"]          )(views.ImportGroupDeleteView.as_view()),          name="import_group_delete",      ), -    url( +    re_path(          r"^import-link-unmatched/(?P<pk>[0-9]+)/$",          check_permissions(              ["ishtar_common.change_import", "ishtar_common.change_own_import"]          )(views.ImportMatchView.as_view()),          name="import_link_unmatched",      ), -    url( +    re_path(          r"^import-csv-view/(?P<target>source|result|match|error)/(?P<group>group\-)?(?P<pk>[0-9]+)/$",          check_permissions(              ["ishtar_common.view_import", "ishtar_common.view_own_import"]          )(views.ImportCSVView.as_view()),          name="import_display_csv",      ), -    url( +    re_path(          r"^import-step-by-step/all/(?P<pk>[0-9]+)/(?P<line_number>[0-9]+)/$",          views.ImportStepByStepView.as_view(),          name="import_step_by_step_all",          kwargs={"all_pages": True},      ), -    url( +    re_path(          r"^import-step-by-step/(?P<pk>[0-9]+)/(?P<line_number>[0-9]+)/$",          views.ImportStepByStepView.as_view(),          name="import_step_by_step",      ), -    url( +    re_path(          r"^import-pre-form/(?P<import_id>[0-9]+)/$",          check_permissions(              ["ishtar_common.change_import", "ishtar_common.change_own_import"]          )(views.ImportPreFormView.as_view()),          name="import_pre_import_form",      ), -    url( +    re_path(          r"^import-ignore-line/(?P<line_id>[0-9]+)/$",          check_permissions(              ["ishtar_common.change_import", "ishtar_common.change_own_import"]          )(views.line_error),          name="import_ignore_line",      ), -    url(r"^profile(?:/(?P<pk>[0-9]+))?/$", views.ProfileEdit.as_view(), name="profile"), -    url( +    re_path(r"^profile(?:/(?P<pk>[0-9]+))?/$", views.ProfileEdit.as_view(), name="profile"), +    re_path(          r"^save-search/(?P<app_label>[a-z-]+)/(?P<model>[a-z-]+)/$",          views.SearchQueryEdit.as_view(),          name="save-search-query",      ), -    url( +    re_path(          r"^bookmarks/(?P<app_label>[a-z-]+)/(?P<model>[a-z-]+)/$",          views.BookmarkList.as_view(),          name="bookmark-list",      ), -    url(r"^bookmark/(?P<pk>[0-9]+)/$", views.get_bookmark, name="bookmark"), -    url( +    re_path(r"^bookmark/(?P<pk>[0-9]+)/$", views.get_bookmark, name="bookmark"), +    re_path(          r"^bookmark/delete/(?P<pk>[0-9]+)/$",          views.SearchQueryDelete.as_view(),          name="bookmark-delete",      ), -    url(r"^alerts/$", views.AlertList.as_view(), name="alert-list"), -    url( +    re_path(r"^alerts/$", views.AlertList.as_view(), name="alert-list"), +    re_path(          r"^success(?:/(?P<context>[a-z-]+)(?:/(?P<arg>[0-9a-z-|]+))?)?/$",          views.SuccessView.as_view(),          name="success", @@ -382,77 +382,77 @@ actions = r"|".join(actions)  # other views  urlpatterns += [      # General -    url( +    re_path(          r"update-current-item/$", views.update_current_item, name="update-current-item"      ), -    url( +    re_path(          r"pin/(?P<item_type>[a-z-]+)/(?P<pk>\d+)/$",          views.update_current_item,          name="pin",      ), -    url(r"pin-search/(?P<item_type>[a-z-]+)/$", views.pin_search, name="pin-search"), -    url(r"unpin/(?P<item_type>[a-z-]+)/$", views.unpin, name="unpin"), -    url( +    re_path(r"pin-search/(?P<item_type>[a-z-]+)/$", views.pin_search, name="pin-search"), +    re_path(r"unpin/(?P<item_type>[a-z-]+)/$", views.unpin, name="unpin"), +    re_path(          r"get-by-importer/(?P<slug>[\w-]+)/(?P<type>[a-z-]+)?$",          views.get_by_importer,          name="get-by-importer",      ), -    url( +    re_path(          r"new-person/(?:(?P<parent_name>[^/]+)/)?(?:(?P<limits>[^/]+)/)?$",          views.new_person,          name="new-person",      ), -    url( +    re_path(          r"modify-person/(?:(?P<parent_name>[^/]+)/)?(?P<pk>[\d+]+)/$",          views.modify_person,          name="modify-person",      ), -    url(r"detail-person/(?P<pk>[\d+]+)/$", views.detail_person, name="detail-person"), -    url( +    re_path(r"detail-person/(?P<pk>[\d+]+)/$", views.detail_person, name="detail-person"), +    re_path(          r"modify-organization/(?:(?P<parent_name>[^/]+)/)?(?P<pk>[\d+]+)/$",          views.modify_organization,          name="modify-organization",      ), -    url( +    re_path(          r"detail-organization/(?P<pk>[\d+]+)/$",          views.detail_organization,          name="detail-organization",      ), -    url( +    re_path(          r"new-person-noorga/" r"(?:(?P<parent_name>[^/]+)/)?(?:(?P<limits>[^/]+)/)?$",          views.new_person_noorga,          name="new-person-noorga",      ), -    url(r"autocomplete-area/$", views.autocomplete_area, name="autocomplete-area"), -    url(r"autocomplete-user/$", views.autocomplete_user, name="autocomplete-user"), -    url( +    re_path(r"autocomplete-area/$", views.autocomplete_area, name="autocomplete-area"), +    re_path(r"autocomplete-user/$", views.autocomplete_user, name="autocomplete-user"), +    re_path(          r"autocomplete-ishtaruser/$",          views.autocomplete_ishtaruser,          name="autocomplete-ishtaruser",      ), -    url( +    re_path(          r"autocomplete-person(?:/([0-9_]+))?(?:/([0-9_]*))?/(user)?$",          views.autocomplete_person,          name="autocomplete-person",      ), -    url( +    re_path(          r"autocomplete-person-permissive(?:/([0-9_]+))?(?:/([0-9_]*))?" r"/(user)?$",          views.autocomplete_person_permissive,          name="autocomplete-person-permissive",      ), -    url(r"get-person/(?P<type>.+)?$", views.get_person, name="get-person"), -    url( +    re_path(r"get-person/(?P<type>.+)?$", views.get_person, name="get-person"), +    re_path(          r"get-person-full/(?P<type>.+)?$",          views.get_person,          name="get-person-full",          kwargs={"full": True},      ), -    url( +    re_path(          r"get-person-for-account/(?P<type>.+)?$",          views.get_person_for_account,          name="get-person-for-account",      ), -    url( +    re_path(          r"show-person(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_person,          name="show-person", @@ -467,17 +467,17 @@ urlpatterns += [          check_permissions(["ishtaradmin"])(views.show_ishtaruser),          name="show-ishtaruser",      ), -    url( +    re_path(          r"show-biographicalnote(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_biographical_note,          name="show-biographicalnote",      ), -    url( +    re_path(          r"new-biographicalnote/(?:(?P<parent_name>[^/]+)/)?(?:(?P<limits>[^/]+)/)?$",          views.new_biographical_note,          name="new-biographicalnote",      ), -    url( +    re_path(          r"^biographicalnote-qa-edit/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["ishtar_common.change_biographicalnote", @@ -485,129 +485,129 @@ urlpatterns += [          )(views.QABiographicalNoteForm.as_view()),          name="biographicalnote-qa-edit",      ), -    url( +    re_path(          r"department-by-state/(?P<state_id>.+)?$",          views.department_by_state,          name="department-by-state",      ), -    url( +    re_path(          r"show-area(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_area,          name="show-area",      ), -    url( +    re_path(          r"show-town(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_town,          name="show-town",      ), -    url(r"autocomplete-town/?$", views.autocomplete_town, name="autocomplete-town"), -    url( +    re_path(r"autocomplete-town/?$", views.autocomplete_town, name="autocomplete-town"), +    re_path(          r"autocomplete-advanced-town/(?P<department_id>[0-9]+[ABab]?)?$",          views.autocomplete_advanced_town,          name="autocomplete-advanced-town",      ), -    url( +    re_path(          r"autocomplete-department/?$",          views.autocomplete_department,          name="autocomplete-department",      ), -    url( +    re_path(          r"new-author/(?:(?P<parent_name>[^/]+)/)?(?:(?P<limits>[^/]+)/)?$",          views.new_author,          name="new-author",      ), -    url( +    re_path(          r"autocomplete-author/$", views.autocomplete_author, name="autocomplete-author"      ), -    url( +    re_path(          r"new-organization/(?:(?P<parent_name>[^/]+)/)?" r"(?:(?P<limits>[^/]+)/)?$",          views.new_organization,          name="new-organization",      ), -    url( +    re_path(          r"get-organization/(?P<type>.+)?$",          views.get_organization,          name="get-organization",      ), -    url( +    re_path(          r"get-organization-full/(?P<type>.+)?$",          views.get_organization,          name="get-organization-full",          kwargs={"full": True},      ), -    url( +    re_path(          r"show-organization(?:/(?P<pk>.+))?/(?P<type>.+)?$",          views.show_organization,          name="show-organization",      ), -    url( +    re_path(          r"show-import(?:/(?P<pk>\d+))?/(?P<type>odt|pdf)?$",          views.show_import,          name="show-import",      ), -    url(r"autocomplete-import/$", views.autocomplete_import, name="autocomplete-import"), -    url( +    re_path(r"autocomplete-import/$", views.autocomplete_import, name="autocomplete-import"), +    re_path(          r"show-importgroup(?:/(?P<pk>\d+))?/(?P<type>odt|pdf)?$",          views.show_import_group,          name="show-importgroup",      ), -    url( +    re_path(          r"autocomplete-organization/([0-9_]+)?$",          views.autocomplete_organization,          name="autocomplete-organization",      ), -    url( +    re_path(          r"autocomplete-biographical-note/$",          views.autocomplete_biographical_note,          name="autocomplete-biographicalnote"      ), -    url(r"changelog/(?:(?P<page>\d+)/)?", views.ChangelogView.as_view(), name="changelog"), -    url(r"person-merge/(?:(?P<page>\d+)/)?$", views.person_merge, name="person_merge"), -    url( +    re_path(r"changelog/(?:(?P<page>\d+)/)?", views.ChangelogView.as_view(), name="changelog"), +    re_path(r"person-merge/(?:(?P<page>\d+)/)?$", views.person_merge, name="person_merge"), +    re_path(          r"person-manual-merge/$",          views.PersonManualMerge.as_view(),          name="person_manual_merge",      ), -    url( +    re_path(          r"person-manual-merge-items/(?P<pks>[0-9_]+?)/$",          views.PersonManualMergeItems.as_view(),          name="person_manual_merge_items",      ), -    url( +    re_path(          r"organization-merge/(?:(?P<page>\d+)/)?$",          views.organization_merge,          name="organization_merge",      ), -    url( +    re_path(          r"orga-manual-merge/$",          views.OrgaManualMerge.as_view(),          name="orga_manual_merge",      ), -    url( +    re_path(          r"orga-manual-merge-items/(?P<pks>[0-9_]+?)/$",          views.OrgaManualMergeItems.as_view(),          name="orga_manual_merge_items",      ), -    url(r"reset/$", views.reset_wizards, name="reset_wizards"), -    url( +    re_path(r"reset/$", views.reset_wizards, name="reset_wizards"), +    re_path(          r"activate-all-search/$", views.activate_all_search, name="activate-all-search"      ), -    url( +    re_path(          r"activate-own-search/$", views.activate_own_search, name="activate-own-search"      ), -    url( +    re_path(          r"activate-advanced-menu/$",          views.activate_advanced_shortcut_menu,          name="activate-advanced-menu",      ), -    url( +    re_path(          r"activate-simple-menu/$",          views.activate_simple_shortcut_menu,          name="activate-simple-menu",      ), -    url(r"hide-shortcut-menu/$", views.hide_shortcut_menu, name="hide-shortcut-menu"), -    url(r"show-shortcut-menu/$", views.show_shortcut_menu, name="show-shortcut-menu"), -    url( +    re_path(r"hide-shortcut-menu/$", views.hide_shortcut_menu, name="hide-shortcut-menu"), +    re_path(r"show-shortcut-menu/$", views.show_shortcut_menu, name="show-shortcut-menu"), +    re_path(          r"regenerate-external-id/$",          views.regenerate_external_id,          name="regenerate-external-id", @@ -617,66 +617,66 @@ urlpatterns += [          views.regenerate_permissions,          name="regenerate-permissions",      ), -    url( +    re_path(          r"document/search/(?P<step>.+)?$",          check_permissions(              ["ishtar_common.view_document", "ishtar_common.view_own_document"]          )(views.document_search_wizard),          name="search-document",      ), -    url( +    re_path(          r"document/search/(?P<step>.+)?$",          check_permissions(              ["ishtar_common.view_document", "ishtar_common.view_own_document"]          )(views.document_search_wizard),          name="document_search",      ), -    url( +    re_path(          r"document/create/$",          check_permissions(              ["ishtar_common.add_document"]          )(views.DocumentCreateView.as_view()),          name="create-document",      ), -    url( +    re_path(          r"document/edit/$",          check_permissions(              ["ishtar_common.change_document", "ishtar_common.change_own_document"]          )(views.DocumentSelectView.as_view()),          name="edit-document",      ), -    url( +    re_path(          r"document/edit/(?P<pk>.+)/$",          check_permissions(              ["ishtar_common.change_document", "ishtar_common.change_own_document"]          )(views.DocumentEditView.as_view()),          name="edit-document",      ), -    url( +    re_path(          r"document/delete/(?P<step>.+)?$",          check_permissions(              ["ishtar_common.delete_document", "ishtar_common.delete_own_document"]          )(views.document_deletion_wizard),          name="document_deletion",      ), -    url( +    re_path(          r"autocomplete-document/$",          views.autocomplete_document,          name="autocomplete-document",      ), -    url( +    re_path(          r"document/shortcut/delete/(?P<pk>.+)/$",          views.document_delete,          name="delete-document",      ), -    url( +    re_path(          r"^document-qa-bulk-update/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["ishtar_common.change_document", "ishtar_common.change_own_document"]          )(views.QADocumentForm.as_view()),          name="document-qa-bulk-update",      ), -    url( +    re_path(          r"^document-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$",          check_permissions(              ["ishtar_common.change_document", "ishtar_common.change_own_document"] @@ -684,7 +684,7 @@ urlpatterns += [          name="document-qa-bulk-update-confirm",          kwargs={"confirm": True},      ), -    url( +    re_path(          r"^document-qa-duplicate/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["ishtar_common.change_document", "ishtar_common.change_own_document"] @@ -698,38 +698,38 @@ urlpatterns += [          )(views.QADocumentUnlink.as_view()),          name="document-qa-unlink",      ), -    url( +    re_path(          r"^document-qa-packaging/(?P<pks>[0-9-]+)?/$",          check_permissions(              ["ishtar_common.change_document", "ishtar_common.change_own_document"]          )(views.QADocumentPackagingFormView.as_view()),          name="document-qa-packaging",      ), -    url( +    re_path(          r"autocomplete-documenttag/$",          views.autocomplete_documenttag,          name="autocomplete-documenttag",      ), -    url( +    re_path(          r"new-documenttag/(?:(?P<parent_name>[^/]+)/)?" r"(?:(?P<limits>[^/]+)/)?$",          views.new_document_tag,          name="new-documenttag",      ), -    url( +    re_path(          r"geo/create/(?P<app_source>[-\w]+)/(?P<model_source>[-\w]+)/(?P<source_pk>\d+)/$",          check_permissions(              ["ishtar_common.add_geovectordata"]          )(views.GeoPreCreateView.as_view()),          name="create-pre-geo",      ), -    url( +    re_path(          r"geo/create/(?P<app_source>[-\w]+)/(?P<model_source>[-\w]+)/(?P<source_pk>\d+)/(?P<geom_type>[-\w]+)/$",          check_permissions(              ["ishtar_common.add_geovectordata"]          )(views.GeoCreateView.as_view()),          name="create-geo",      ), -    url( +    re_path(          r"geo/edit/(?P<pk>\d+)/$",          check_permissions(              ["ishtar_common.change_geovectordata", @@ -737,7 +737,7 @@ urlpatterns += [          )(views.GeoEditView.as_view()),          name="edit-geo",      ), -    url( +    re_path(          r"geo/delete/(?P<pk>\d+)/$",          check_permissions(              ["ishtar_common.delete_geovectordata", @@ -745,7 +745,7 @@ urlpatterns += [          )(views.GeoDeleteView.as_view()),          name="delete-geo",      ), -    url( +    re_path(          r"^qa-not-available(?:/(?P<context>[0-9a-z-]+))?/$",          views.QANotAvailable.as_view(),          name="qa-not-available", @@ -770,7 +770,7 @@ urlpatterns += [  urlpatterns += get_urls_for_model(models.Document, views, own=True)  urlpatterns += [ -    url(r"(?P<action_slug>" + actions + r")/$", views.action, name="action"), +    re_path(r"(?P<action_slug>" + actions + r")/$", views.action, name="action"),  ] diff --git a/ishtar_common/urls_registration.py b/ishtar_common/urls_registration.py index 556bf6f95..a3bc5efb1 100644 --- a/ishtar_common/urls_registration.py +++ b/ishtar_common/urls_registration.py @@ -1,5 +1,4 @@ -from django.conf.urls import url -from django.urls import path +from django.urls import path, re_path  from django.views.generic.base import TemplateView  try: @@ -12,7 +11,8 @@ from django.contrib.auth import views as auth_views  from ishtar_common import views  urlpatterns = [ -    url(r'^accounts/activate/complete/$', +    re_path( +        r'^accounts/activate/complete/$',          TemplateView.as_view(              template_name='registration/activation_complete.html'          ), @@ -21,23 +21,27 @@ urlpatterns = [      # [a-fA-F0-9]{40} because a bad activation key should still get to      # the view; that way it can return a sensible "invalid key"      # message instead of a confusing 404. -    url(r'^accounts/activate/(?P<activation_key>\w+)/$', +    re_path( +        r'^accounts/activate/(?P<activation_key>\w+)/$',          registration_views.ActivationView.as_view(),          name='registration_activate'), -    url(r'^accounts/register/$', +    re_path( +        r'^accounts/register/$',          views.RegistrationView.as_view(),          name='registration_register'), -    url(r'^accounts/register/complete/$', +    re_path( +        r'^accounts/register/complete/$',          TemplateView.as_view(              template_name='registration/registration_complete.html'          ),          name='registration_complete'), -    url(r'^accounts/register/closed/$', +    re_path( +        r'^accounts/register/closed/$',          TemplateView.as_view(              template_name='registration/registration_closed.html'          ),          name='registration_disallowed'), -    # url("^accounts/", include('django.contrib.auth.urls')), +    # re_path("^accounts/", include('django.contrib.auth.urls')),      path('accounts/login/', views.LoginView.as_view(), name='login'),      path('accounts/logout/', views.LogoutView.as_view(), name='logout'),      path('accounts/password_change/', views.PasswordChangeView.as_view(), @@ -45,4 +49,4 @@ urlpatterns = [      path('accounts/password_reset/', views.PasswordResetView.as_view(), name='password_reset'),      path('accounts/reset/<uidb64>/<token>/', views.PasswordResetConfirmView.as_view(),           name='password_reset_confirm'), -]
\ No newline at end of file +] diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index 65c0128ab..bd20e4919 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -54,7 +54,6 @@ import zipfile  from django import forms  from django.apps import apps  from django.conf import settings -from django.conf.urls import url  from django.contrib.auth.models import Permission, User, Group  from django.contrib.auth.hashers import Argon2PasswordHasher as BaseArgon2PasswordHasher  from django.contrib.contenttypes.models import ContentType @@ -70,7 +69,7 @@ from django.db import models  from django.db.models import Q  from django.db.models.functions import Length  from django.http import HttpResponseRedirect -from django.urls import reverse, NoReverseMatch +from django.urls import re_path, reverse, NoReverseMatch  from django.utils.crypto import get_random_string  from django.utils.datastructures import MultiValueDict as BaseMultiValueDict  from django.utils.formats import date_format @@ -84,20 +83,20 @@ from .jinja_filters import capfirst_filter, capitalize_filter, \  if settings.USE_TRANSLATION_OVERLOAD:      from overload_translation.utils import ( -        ugettext_lazy, -        ugettext, +        gettext_lazy, +        gettext,          pgettext_lazy,          pgettext,      )  else:      from django.utils.translation import ( -        ugettext_lazy, -        ugettext, +        gettext_lazy, +        gettext,          pgettext_lazy,          pgettext,      ) -_ = ugettext_lazy +_ = gettext_lazy  logger = logging.getLogger(__name__) @@ -1300,7 +1299,7 @@ def _external_id_changed(sender, **kwargs):  def shortify(lbl, number=20): -    SHORTIFY_STR = ugettext(" (...)") +    SHORTIFY_STR = gettext(" (...)")      if not lbl:          lbl = ""      if len(lbl) <= number: @@ -2301,7 +2300,7 @@ def get_urls_for_model(      app_label = model._meta.app_label      model_name = model._meta.model_name      urls = [ -        url( +        re_path(              r"show-{}(?:/(?P<pk>.+))?/(?P<type>.+)?$".format(model.SLUG),              check_permissions(                  [f"{app_label}.view_{model_name}", @@ -2310,7 +2309,7 @@ def get_urls_for_model(              ),              name="show-" + model.SLUG,          ), -        url( +        re_path(              r"^display-{}/(?P<pk>.+)/$".format(model.SLUG),              check_permissions(                  [f"{app_label}.view_{model_name}", @@ -2322,7 +2321,7 @@ def get_urls_for_model(      ]      if own:          urls += [ -            url( +            re_path(                  r"get-{}/own/(?P<type>.+)?$".format(model.SLUG),                  check_permissions(                      [f"{app_label}.view_{model_name}", @@ -2335,7 +2334,7 @@ def get_urls_for_model(          ]      urls += [ -        url( +        re_path(              r"get-{}/(?P<type>.+)?$".format(model.SLUG),              check_permissions(                  [f"{app_label}.view_{model_name}", @@ -2348,7 +2347,7 @@ def get_urls_for_model(      if autocomplete:          urls += [ -            url( +            re_path(                  r"autocomplete-{}/$".format(model.SLUG),                  check_permissions(                      [f"{app_label}.view_{model_name}", diff --git a/ishtar_common/utils_migrations.py b/ishtar_common/utils_migrations.py index 21de2fefa..f11428e3c 100644 --- a/ishtar_common/utils_migrations.py +++ b/ishtar_common/utils_migrations.py @@ -8,9 +8,9 @@ import uuid  from django.core.files import File  from django.core.management import call_command  from django.db import connection -from django.utils.translation import ugettext_lazy +from django.utils.translation import gettext_lazy -HOMEPAGE_TITLE = ugettext_lazy("Welcome in Ishtar, open source software for management and inventory of archaeological data") +HOMEPAGE_TITLE = gettext_lazy("Welcome in Ishtar, open source software for management and inventory of archaeological data")  def migrations_load_data(module_name, migration_filename): diff --git a/ishtar_common/views.py b/ishtar_common/views.py index a4242aa3b..50c16419c 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -57,7 +57,7 @@ from django.shortcuts import redirect, render, get_object_or_404  from django.urls import reverse, NoReverseMatch  from django.utils import translation  from django.utils.decorators import method_decorator -from django.utils.translation import ugettext, ugettext_lazy as _ +from django.utils.translation import gettext, gettext_lazy as _  from django.views.generic import ListView, TemplateView, View  from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateView  from extra_views import ModelFormSetView @@ -1256,7 +1256,7 @@ def action(request, action_slug, obj_id=None, *args, **kwargs):      Action management      """      if not check_permission(request, action_slug): -        not_permitted_msg = ugettext("Operation not permitted.") +        not_permitted_msg = gettext("Operation not permitted.")          if obj_id:              model_name = action.split('_')[0].split("-")[0].split("/")[0]              if model_name not in ACTION_MODEL_DICT: diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 6c7b85130..95ef1d8ad 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -61,8 +61,8 @@ from django.utils.translation import (      deactivate,      get_language,      pgettext_lazy, -    ugettext, -    ugettext_lazy as _, +    gettext, +    gettext_lazy as _,  )  from guardian.models import UserObjectPermission  from tidylib import tidy_document as tidy @@ -262,7 +262,7 @@ def new_qa_item(      callback=None  ):      def func(request, parent_name=None, limits=""): -        not_permitted_msg = ugettext("Operation not permitted.") +        not_permitted_msg = gettext("Operation not permitted.")          meta = model._meta          permission = f"{meta.app_label}.add_{meta.model_name}"          if not check_permission(request, permission): @@ -308,7 +308,7 @@ def new_qa_item(  def get_short_html_detail(model):      def func(request, pk): -        not_permitted_msg = ugettext("Operation not permitted.") +        not_permitted_msg = gettext("Operation not permitted.")          try:              item = model.objects.get(pk=pk)          except model.DoesNotExist: @@ -327,7 +327,7 @@ def modify_qa_item(model, frm, callback=None):      def func(request, parent_name="", pk=None):          template = "ishtar/forms/qa_new_item.html"          model_name = model._meta.object_name -        not_permitted_msg = ugettext("Operation not permitted.") +        not_permitted_msg = gettext("Operation not permitted.")          try:              item = model.objects.get(pk=pk)          except model.DoesNotExist: diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index 97ed7deec..1c0b23c13 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -38,7 +38,7 @@ from django.utils.functional import lazy  from django.utils.html import escape  from django.utils.safestring import mark_safe  from json import JSONEncoder -from django.utils.translation import ugettext_lazy as _, get_language +from django.utils.translation import gettext_lazy as _, get_language  from ishtar_common import models  from ishtar_common.utils import get_columns_from_class, reverse_coordinates diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index 1d5e95647..8d58b4146 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -47,7 +47,7 @@ from django.http import HttpResponseRedirect, Http404  from django.forms import ValidationError  from django.shortcuts import redirect, render, reverse  from django.template import loader -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  from django.utils.safestring import mark_safe  from ishtar_common import models, models_rest diff --git a/overload_translation/models.py b/overload_translation/models.py index 723c22836..fb40a63b9 100644 --- a/overload_translation/models.py +++ b/overload_translation/models.py @@ -1,6 +1,6 @@  from django.conf import settings  from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _  class TranslationOverload(models.Model): diff --git a/overload_translation/utils.py b/overload_translation/utils.py index 575de0102..6a95dc52c 100644 --- a/overload_translation/utils.py +++ b/overload_translation/utils.py @@ -3,7 +3,7 @@ from django.core.cache import cache  from django.db import connection  from django.db.utils import DatabaseError  from django.utils.functional import lazy -from django.utils.translation import ugettext as _, pgettext as _p, get_language +from django.utils.translation import gettext as _, pgettext as _p, get_language  import hashlib @@ -56,7 +56,7 @@ def simple_trans(message, context):      return s -def ugettext(message, context=""): +def gettext(message, context=""):      has_translation_key = "{}-has-dynamic-translation".format(          settings.PROJECT_SLUG)      has_translations = cache.get(has_translation_key) @@ -97,11 +97,11 @@ def ugettext(message, context=""):      return value -ugettext_lazy = lazy(ugettext, str) +gettext_lazy = lazy(gettext, str)  def pgettext(context, message): -    return ugettext(message, context=context) +    return gettext(message, context=context) -pgettext_lazy = lazy(pgettext, str)
\ No newline at end of file +pgettext_lazy = lazy(pgettext, str) | 
