#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright (C) 2010-2025 Étienne Loks # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # See the file COPYING for details. from django.urls import path, re_path, register_converter from ishtar_common.utils import check_permissions, get_urls_for_model from ishtar_common import urls_converters from ishtar_common.views import QALinkView from archaeological_finds import views from archaeological_finds import views_api from archaeological_operations.views import administrativeactfile_document from archaeological_finds import models register_converter(urls_converters.DateTimeConverter, "datetime") # be careful: each check_permissions must be relevant with ishtar_menu # forms urlpatterns = [ re_path( r"find_search/(?P.+)?$", check_permissions( ["archaeological_finds.view_find", "archaeological_finds.view_own_find"] )(views.find_search_wizard), name="find_search", ), re_path( r"find_creation/(?P.+)?$", check_permissions( ["archaeological_finds.add_find"] )(views.find_creation_wizard), name="find_creation", ), re_path( r"find_modification/(?P.+)?$", check_permissions( ["archaeological_finds.change_find", "archaeological_finds.change_own_find"] )(views.find_modification_wizard), name="find_modification", ), re_path(r"find_modify/(?P.+)/$", views.find_modify, name="find_modify"), re_path(r"find_create/(?P.+)/$", views.find_create, name="find_create"), re_path( r"find_deletion/(?P.+)?$", check_permissions( ["archaeological_finds.delete_find", "archaeological_finds.delete_own_find"] )(views.find_deletion_wizard), name="find_deletion", ), re_path(r"find_delete/(?P.+)/$", views.find_delete, name="delete-find"), re_path( r"^find-qa-duplicate/(?P[0-9-]+)?/$", check_permissions( ["archaeological_finds.change_find", "archaeological_finds.change_own_find"] )(views.QAFindDuplicateFormView.as_view()), name="find-qa-duplicate", ), 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", ), re_path( r"find_basket_search/(?P.+)?$", check_permissions( ["archaeological_finds.view_find", "archaeological_finds.view_own_find"] )(views.basket_search_wizard), name="find_basket_search", ), re_path( r"^find_basket_creation/$", check_permissions( ["archaeological_finds.view_find", "archaeological_finds.view_own_find"] )(views.NewFindBasketView.as_view()), name="new_findbasket", ), re_path( r"^find_basket_modification/(?P.+)?$", check_permissions( ["archaeological_finds.view_find", "archaeological_finds.view_own_find"] )(views.basket_modify_wizard), name="find_basket_modification", ), re_path( r"find_basket_modify/(?P.+)/$", views.find_basket_modify, name="find_basket_modify", ), re_path( r"^find_basket_modification_add/$", check_permissions( ["archaeological_finds.view_find", "archaeological_finds.view_own_find"] )(views.SelectBasketForManagement.as_view()), name="select_findbasketforadd", ), re_path( r"^find_basket_modification_add/(?P[0-9]+)?/$", check_permissions( ["archaeological_finds.view_find", "archaeological_finds.view_own_find"] )(views.SelectItemsInBasket.as_view()), name="select_itemsinbasket", ), re_path( r"^find_basket_modification_add_item/$", check_permissions( ["archaeological_finds.view_find", "archaeological_finds.view_own_find"] )(views.FindBasketAddItemView.as_view()), name="add_iteminbasket", ), re_path( r"^find_basket_modification_delete_item/(?P[0-9]+)?" r"/(?P[0-9]+)?/$", check_permissions( ["archaeological_finds.view_find", "archaeological_finds.view_own_find"] )(views.FindBasketDeleteItemView.as_view()), name="delete_iteminbasket", ), re_path( r"^find_basket_list/(?P[0-9]+)?/$", check_permissions( ["archaeological_finds.view_find", "archaeological_finds.view_own_find"] )(views.FindBasketListView.as_view()), name="list_iteminbasket", ), re_path( r"^find_basket_deletion/(?P.+)?$", check_permissions( ["archaeological_finds.view_find", "archaeological_finds.view_own_find"] )(views.basket_delete_wizard), name="find_basket_deletion", ), re_path( r"^findbasket-qa-duplicate/(?P[0-9-]+)?/$", check_permissions( ["archaeological_finds.view_find", "archaeological_finds.view_own_find"] )(views.QAFindbasketDuplicateFormView.as_view()), name="findbasket-qa-duplicate", ), re_path( r"^findbasket-add-treatment/(?P[0-9-]+)/$", check_permissions( ["archaeological_finds.add_treatment"] )(views.findbasket_treatment_add), name="findbasket-add-treatment", ), re_path( r"^findbasket-add-treatmentfile/(?P[0-9-]+)/$", check_permissions( ["archaeological_finds.add_treatmentfile"] )(views.findbasket_treatmentfile_add), name="findbasket-add-treatmentfile", ), re_path( r"^findbasket-add-exhibition/(?P[0-9-]+)/$", check_permissions( ["archaeological_finds.add_exhibition"] )(views.findbasket_exhibition_add), name="findbasket-add-exhibition", ), re_path( r"^find-add-treatment/(?P[0-9-]+)/$", check_permissions( ["archaeological_finds.add_treatment"] )(views.find_treatment_add), name="find-add-treatment", ), re_path( r"^find-add-divide-treatment/(?P[0-9-]+)/$", check_permissions( ["archaeological_finds.add_treatment"] )(views.find_divide_treatment_add), name="find-add-divide-treatment", ), re_path( r"^treatmentfile-add-treatment/(?P[0-9-]+)/$", check_permissions( ["archaeological_finds.add_treatment"] )(views.treatmentfile_treatment_add), name="treatmentfile-add-treatment", ), re_path( r"^treatment-add-adminact/(?P[0-9-]+)/$", check_permissions( ["archaeological_operations.add_administrativeact"] )(views.treatment_adminact_add), name="treatment-add-adminact", ), re_path( r"^treatmentfile-add-adminact/(?P[0-9-]+)/$", check_permissions( ["archaeological_operations.add_administrativeact"] )(views.treatmentfile_adminact_add), name="treatmentfile-add-adminact", ), re_path( r"^find-qa-bulk-update/(?P[0-9-]+)?/$", check_permissions( ["archaeological_finds.change_find", "archaeological_finds.change_own_find"] )(views.QAFindForm.as_view()), name="find-qa-bulk-update", ), re_path( r"^find-qa-bulk-update/(?P[0-9-]+)?/confirm/$", check_permissions( ["archaeological_finds.change_find", "archaeological_finds.change_own_find"] )(views.QAFindForm.as_view()), name="find-qa-bulk-update-confirm", kwargs={"confirm": True}, ), re_path( r"^find-qa-basket/(?P[0-9-]+)?/$", check_permissions( ["archaeological_finds.change_find", "archaeological_finds.change_own_find"] )(views.QAFindBasketFormView.as_view()), name="find-qa-basket", ), re_path( r"findbasket-qa-bulk-update/(?P[0-9-]+)?/$", check_permissions([ "archaeological_finds.change_find", "archaeological_finds.change_own_find", ])(views.QAFindBasketModifyView.as_view()), name="findbasket-qa-bulk-update", ), re_path( r"findbasket-qa-bulk-update/(?P[0-9-]+)?/confirm/$", check_permissions([ "archaeological_finds.change_find", "archaeological_finds.change_own_find", ])(views.QAFindBasketModifyView.as_view()), name="findbasket-qa-bulk-update-confirm", kwargs={"confirm": True}, ), re_path( r"^find-qa-packaging/(?P[0-9-]+)?/$", check_permissions( ["archaeological_finds.change_find", "archaeological_finds.change_own_find"] )(views.QAFindTreatmentFormView.as_view()), name="find-qa-packaging", ), re_path( r"^find-qa-lock/(?P[0-9-]+)?/$", views.QAFindLockView.as_view(), name="find-qa-lock", kwargs={"model": models.Find}, ), re_path( r"^find-qa-link/(?P[0-9-]+)?/$", QALinkView.as_view(), name="find-qa-link", kwargs={"model": models.Find, "url": "find-qa-link"}, ), re_path( r"^treatment_creation/(?P.+)?$", check_permissions( ["archaeological_finds.add_treatment"] )(views.treatment_creation_wizard), name="treatment_creation", ), re_path( r"^treatment_creation_n1/(?P.+)?$", check_permissions( ["archaeological_finds.add_treatment"] )(views.treatment_creation_n1_wizard), name="treatment_creation_n1", ), re_path( r"treatment_n1_create/(?P[-0-9]+)/$", views.treatment_n1_create, name="treatment-n1-create", ), re_path( r"^treatment_creation_1n/(?P.+)?$", check_permissions( ["archaeological_finds.add_treatment"] )(views.treatment_creation_1n_wizard), name="treatment_creation_1n", ), re_path( r"^treatment_modification/(?P.+)?$", check_permissions( ["archaeological_finds.change_treatment", "archaeological_finds.change_own_treatment"] )(views.treatment_modification_wizard), name="treatment_modification", ), re_path( r"^treatment_modify/(?P.+)/$", views.treatment_modify, name="treatment_modify", ), re_path( r"^treatment_search/(?P.+)?$", check_permissions( ["archaeological_finds.view_treatment", "archaeological_finds.view_own_treatment"] )(views.treatment_search_wizard), name="treatment_search", ), re_path( r"^treatment_deletion/(?P.+)?$", check_permissions( ["archaeological_finds.delete_treatment", "archaeological_finds.delete_own_treatment"] )(views.treatment_deletion_wizard), name="treatment_deletion", ), re_path( r"^treatment_delete/(?P.+)/$", views.treatment_delete, name="delete-treatment", ), re_path( r"^treatment_admacttreatment_search/(?P.+)?$", check_permissions([ "archaeological_operations.view_administrativeact", "archaeological_operations.view_own_administrativeact"])( views.treatment_administrativeact_search_wizard ), name="treatment_admacttreatment_search", ), re_path( r"^treatment_admacttreatment/(?P.+)?$", check_permissions([ "archaeological_operations.add_administrativeact"])( views.treatment_administrativeact_wizard ), name="treatment_admacttreatment", ), re_path( r"^treatment_admacttreatment_modification/(?P.+)?$", check_permissions([ "archaeological_operations.change_administrativeact", "archaeological_operations.change_own_administrativeact", ])( views.treatment_administrativeact_modification_wizard ), name="treatment_admacttreatment_modification", ), re_path( r"^treatment_administrativeacttreatment_modify/(?P.+)/$", views.treatment_administrativeacttreatment_modify, name="treatment_administrativeacttreatment_modify", ), re_path( r"^treatment_admacttreatment_deletion/(?P.+)?$", check_permissions([ "archaeological_operations.delete_administrativeact", "archaeological_operations.delete_own_administrativeact"])( views.treatment_admacttreatment_deletion_wizard ), name="treatment_admacttreatment_deletion", ), re_path( r"^get-administrativeacttreatment/(?P.+)?$", views.get_administrativeacttreatment, name="get-administrativeacttreatment", ), re_path( r"^treatment_administrativeacttreatment_delete/(?P.+)/$", views.treatment_administrativeacttreatment_delete, name="delete-administrativeact-treatment", ), re_path( r"^treatmentfle_admacttreatmentfle_search/(?P.+)?$", check_permissions([ "archaeological_operations.view_administrativeact", "archaeological_operations.view_own_administrativeact", ])( views.treatmentfile_admacttreatmentfile_search_wizard ), name="treatmentfle_admacttreatmentfle_search", ), re_path( r"^treatmentfle_admacttreatmentfle_modification/(?P.+)?$", check_permissions([ "archaeological_operations.change_administrativeact", "archaeological_operations.change_own_administrativeact"])( views.treatmentfile_admacttreatmentfile_modification_wizard ), name="treatmentfle_admacttreatmentfle_modification", ), re_path( r"^treatmentfle_admacttreatmentfle/(?P.+)?$", check_permissions(["archaeological_operations.add_administrativeact"])( views.treatmentfile_admacttreatmentfile_wizard ), name="treatmentfle_admacttreatmentfle", ), re_path( r"^treatmentfile_administrativeacttreatmentfile_modify/(?P.+)/$", views.treatmentfile_administrativeacttreatmentfile_modify, name="treatmentfile_administrativeacttreatmentfile_modify", ), re_path( r"^treatmentfle_admacttreatmentfle_deletion/(?P.+)?$", check_permissions([ "archaeological_operations.delete_administrativeact", "archaeological_operations.delete_own_administrativeact"])( views.treatmentfile_admacttreatmentfile_deletion_wizard ), name="treatmentfle_admacttreatmentfle_deletion", ), re_path( r"^treatmentfile_administrativeacttreatmentfile_delete/(?P.+)/$", views.treatmentfile_administrativeacttreatmentfile_delete, name="delete-administrativeact-treatmentfile", ), path( "exhibition/", check_permissions( ["archaeological_finds.view_exhibition", "archaeological_finds.view_own_exhibition"] )(views.exhibition_wizard), name="exhibition-search", ), path( "exhibition/create//", check_permissions( ["archaeological_finds.add_exhibition"] )(views.ExhibitionCreateView.as_view()), name="exhibition-create-from-basket", ), path( "exhibition/create/", check_permissions( ["archaeological_finds.add_exhibition"] )(views.ExhibitionCreateView.as_view()), name="exhibition-create", ), path( "exhibition/modify//", check_permissions( ["archaeological_finds.change_exhibition", "archaeological_finds.change_own_exhibition"] )(views.ExhibitionEditView.as_view()), name="exhibition-modify", ), path( "exhibition/show//", views.show_exhibition, name="exhibition-show-historized", ), path( "exhibition/show///", views.show_exhibition, name="exhibition-show-historized", ), path( "exhibition/revert///", views.revert_exhibition, name="exhibition-revert" ), path( "exhibition/qa/add-loan//", check_permissions( ["archaeological_finds.add_treatmentfile"] )(views.QAExhibitionLoanFormView.as_view()), name="exhibition-qa-add-loan", ), path( "exhibition/qa/gam-export//", check_permissions( ["archaeological_finds.view_treatmentfile", "archaeological_finds.view_own_treatmentfile"] )(views.qa_gam_export_views), name="exhibition-qa-gam-export", ), path( "exhibition//", check_permissions( ["archaeological_finds.view_exhibition", "archaeological_finds.view_own_exhibition"] )(views.exhibition_wizard), name="exhibition-search", ), path("show-exhibition//", views.show_exhibition, name="show-exhibition"), path("show-exhibition//", views.show_exhibition, name="show-exhibition"), path("display-exhibition//", views.display_exhibition, name="display-exhibition"), re_path( r"^treatmentfle_search/(?P.+)?$", check_permissions( ["archaeological_finds.view_treatmentfile", "archaeological_finds.view_own_treatmentfile"] )(views.treatmentfile_search_wizard), name="treatmentfile_search", ), re_path( r"treatmentfle_creation/(?P.+)?$", check_permissions( ["archaeological_finds.add_treatmentfile"] )(views.treatmentfile_creation_wizard), name="treatmentfile_creation", ), re_path( r"treatmentfle_modification/(?P.+)?$", check_permissions( ["archaeological_finds.change_treatmentfile", "archaeological_finds.change_own_treatmentfile"] )(views.treatmentfile_modification_wizard), name="treatmentfile_modification", ), re_path( r"^treatmentfile_modify/(?P.+)/$", views.treatmentfile_modify, name="treatmentfile_modify", ), re_path( r"^treatmentfle_deletion/(?P.+)?$", check_permissions( ["archaeological_finds.delete_treatmentfile", "archaeological_finds.delete_own_treatmentfile"] )(views.treatmentfile_deletion_wizard), name="treatmentfile_deletion", ), re_path( r"^treatmentfle_delete/(?P.+)/$", views.treatmentfile_delete, name="delete-treatmentfile", ), re_path( r"get-administrativeacttreatmentfile/(?P.+)?$", views.get_administrativeacttreatmentfile, name="get-administrativeacttreatmentfile", ), re_path( r"get-upstreamtreatment/(?P.+)?$", views.get_upstreamtreatment, name="get-upstreamtreatment", ), re_path( r"get-downstreamtreatment/(?P.+)?$", views.get_downstreamtreatment, name="get-downstreamtreatment", ), re_path( r"autocomplete-objecttype/$", views.autocomplete_objecttype, name="autocomplete-objecttype", ), re_path( r"autocomplete-functionalarea/$", views.autocomplete_functionalarea, name="autocomplete-functionalarea", ), re_path( r"autocomplete-technicalarea/$", views.autocomplete_technicalarea, name="autocomplete-technicalarea", ), re_path( r"autocomplete-technicalprocess/$", views.autocomplete_technicalprocess, name="autocomplete-technicalprocess", ), re_path( r"autocomplete-materialtype/$", views.autocomplete_materialtype, name="autocomplete-materialtype", ), re_path( r"autocomplete-treatmenttype/$", views.autocomplete_treatmenttype, name="autocomplete-treatmenttype", ), re_path( r"autocomplete-integritytype/$", views.autocomplete_integritytype, name="autocomplete-integritytype", ), re_path( r"autocomplete-treatmentfile/$", views.autocomplete_treatmentfile, name="autocomplete-treatmentfile", ), re_path( r"autocomplete-exhibition/$", views.autocomplete_exhibition, name="autocomplete-exhibition", ), re_path( r"get-find-for-ope/own/(?P.+)?$", views.get_find_for_ope, name="get-own-find-for-ope", kwargs={"force_own": True}, ), re_path( r"get-find-for-ope/(?P.+)?$", views.get_find_for_ope, name="get-find-for-ope", ), re_path( r"get-find-for-cr/cr/(?P.+)?$", views.get_find_for_cr, name="get-own-find-for-cr", kwargs={"force_own": True}, ), re_path( r"get-find-for-cr/(?P.+)?$", views.get_find_for_cr, name="get-find-for-cr" ), re_path( r"get-find-for-treatment/own/(?P.+)?$", views.get_find_for_treatment, name="get-own-find-for-treatment", kwargs={"force_own": True}, ), re_path( r"get-find-for-treatment/(?P.+)?$", views.get_find_for_treatment, name="get-find-for-treatment", ), re_path( r"get-find-inside-container/own/(?P.+)?$", views.get_find_inside_container, name="get-find-inside-container", kwargs={"force_own": True}, ), re_path( r"get-find-inside-container/(?P.+)?$", views.get_find_inside_container, name="get-find-inside-container", ), re_path( r"get-find-full/own/(?P.+)?$", views.get_find, name="get-own-find-full", kwargs={"full": True, "force_own": True}, ), re_path( r"get-find-full/(?P.+)?$", views.get_find, name="get-find-full", kwargs={"full": True}, ), re_path( r"get-find-shortcut/(?P.+)?$", views.get_find, name="get-find-shortcut", kwargs={"full": "shortcut"}, ), re_path( r"^show-findbasket/(?:(?P.+)/(?P.+)?)?$", views.show_findbasket, name="show-findbasket", ), re_path( r"^show-basefind/(?:(?P.+)/(?P.+)?)?$", views.show_basefind, name="show-basefind", ), re_path( r"^display-find/basket-(?P.+)/$", views.display_findbasket, name="display-findbasket", ), re_path( r"^show-historized-find/(?P.+)?/(?P.+)?$", views.show_find, name="show-historized-find", ), re_path( r"^revert-find/(?P.+)/(?P.+)$", views.revert_find, name="revert-find" ), re_path( r"get-treatment-shortcut/(?P.+)?$", views.get_treatment, name="get-treatment-shortcut", kwargs={"full": "shortcut"}, ), re_path( r"show-historized-treatment/(?P.+)?/(?P.+)?$", views.show_treatment, name="show-historized-treatment", ), re_path( r"^revert-treatment/(?P.+)/(?P.+)$", views.revert_treatment, name="revert-treatment", ), re_path( r"get-treatmentfile/(?P.+)?$", views.get_treatmentfile, name="get-treatmentfile", ), re_path( r"get-exhibition/(?P.+)?$", views.get_exhibition, name="get-exhibition", ), re_path( r"get-treatmentfile-shortcut/(?P.+)?$", views.get_treatmentfile, name="get-treatmentfile-shortcut", kwargs={"full": "shortcut"}, ), re_path( r"^show-treatmentfile(?:/(?P.+))?/(?P.+)?$", views.show_treatmentfile, name=models.TreatmentFile.SHOW_URL, ), re_path( r"show-historized-treatmentfile/(?P.+)?/(?P.+)?$", views.show_treatmentfile, name="show-historized-treatmentfile", ), re_path( r"^revert-treatmentfile/(?P.+)/(?P.+)$", views.revert_treatmentfile, name="revert-treatmentfile", ), re_path( r"^treatment_administrativeact_document/$", administrativeactfile_document, name="treatment-administrativeact-document", kwargs={"treatment": True}, ), re_path( r"^treatmentfle_administrativeact_document/$", administrativeactfile_document, name="treatmentfle-administrativeact-document", kwargs={"treatment_file": True}, ), re_path( r"autocomplete-findbasket/$", check_permissions( ["archaeological_finds.change_find", "archaeological_finds.change_own_find"] )(views.autocomplete_findbasket), name="autocomplete-findbasket", ), re_path( r"autocomplete-findbasket-write/$", check_permissions( ["archaeological_finds.change_find", "archaeological_finds.change_own_find"] )(views.autocomplete_findbasket_write), name="autocomplete-findbasket-write", ), re_path( r"api/public/find/$", views_api.PublicFindAPI.as_view(), name="api-public-find" ), re_path( r"api/ishtar/base-finds/get-geo$", check_permissions( ["archaeological_finds.view_find", "archaeological_finds.view_own_find"] )(views.get_geo_items), name="api-get-geo", ), re_path( r"api/facets/find/$", views_api.FacetFindAPIView.as_view(), name="api-facets-find" ), re_path( r"api/search/find/$", views_api.SearchFindAPI.as_view(), name="api-search-find" ), path( "api/export/find//", views_api.ExportFindAPI.as_view(), name="api-export-find" ), path( "api/get/find//", views_api.GetFindAPI.as_view(), name="api-get-find" ), re_path( r"autocomplete-basefind/$", check_permissions( ["archaeological_finds.view_basefind", "archaeological_finds.view_own_basefind"] )(views.autocomplete_basefind), name="autocomplete-basefind", ), ] urlpatterns += get_urls_for_model(models.Find, views, own=True, autocomplete=True) urlpatterns += get_urls_for_model(models.Treatment, views, autocomplete=True)