diff options
-rw-r--r-- | archaeological_finds/urls.py | 2 | ||||
-rw-r--r-- | archaeological_operations/models.py | 4 | ||||
-rw-r--r-- | archaeological_operations/urls.py | 13 | ||||
-rw-r--r-- | archaeological_operations/views.py | 107 | ||||
-rw-r--r-- | archaeological_warehouse/models.py | 2 | ||||
-rw-r--r-- | archaeological_warehouse/urls.py | 12 | ||||
-rw-r--r-- | archaeological_warehouse/views.py | 73 | ||||
-rw-r--r-- | ishtar_common/models.py | 1 | ||||
-rw-r--r-- | ishtar_common/urls.py | 2 | ||||
-rw-r--r-- | ishtar_common/views.py | 24 |
10 files changed, 143 insertions, 97 deletions
diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py index 893265a4d..b1d268a19 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -195,7 +195,7 @@ urlpatterns = [ url(r'^get-administrativeacttreatment/(?P<type>.+)?$', views.get_administrativeacttreatment, name='get-administrativeacttreatment'), - url(r'^/treatment_administrativeacttreatment_delete(?P<pk>.+)/$', + url(r'^treatment_administrativeacttreatment_delete/(?P<pk>.+)/$', views.treatment_administrativeacttreatment_delete, name='delete-administrativeact-treatment'), diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index 91162f05c..601779e49 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -116,6 +116,7 @@ class ArchaeologicalSite(DocumentItem, BaseHistorizedItem, QRCodeItem, APP = "archaeological-operations" MODEL = "archaeological-site" SHOW_URL = 'show-site' + DELETE_URL = 'delete-site' TABLE_COLS = ['reference', 'name', 'cached_towns_label', 'cached_periods', 'cached_remains'] NEW_QUERY_ENGINE = True @@ -596,6 +597,7 @@ class Operation(ClosedItem, DocumentItem, BaseHistorizedItem, QRCodeItem, APP = "archaeological-operations" MODEL = "operation" SHOW_URL = 'show-operation' + DELETE_URL = 'delete-operation' TABLE_COLS = ['code_patriarche', 'year', 'cached_towns_label', 'common_name', 'operation_type__label', 'start_date', 'excavation_end_date', 'cached_remains'] @@ -2052,6 +2054,8 @@ class AdministrativeAct(BaseHistorizedItem, OwnPerms, ValueGetter): @property def DELETE_URL(self): + if self.operation: + return 'delete-administrativeact-operation' if self.associated_file: return 'delete-administrativeact-file' if self.treatment: diff --git a/archaeological_operations/urls.py b/archaeological_operations/urls.py index 38dbe2cbf..a52aab3de 100644 --- a/archaeological_operations/urls.py +++ b/archaeological_operations/urls.py @@ -46,6 +46,10 @@ urlpatterns = [ check_rights(['change_administrativeact'])( views.operation_administrativeactop_deletion_wizard), name='operation_administrativeactop_deletion'), + url(r'operation_administrativeactop_delete/(?P<pk>.+)/$', + views.operation_administrativeactop_delete, + name='delete-administrativeact-operation'), + url(r'operation_search/(?P<step>.+)?$', check_rights(['view_operation', 'view_own_operation'])( views.operation_search_wizard), name='operation_search'), @@ -67,6 +71,9 @@ urlpatterns = [ url(r'operation_deletion/(?P<step>.+)?$', check_rights(['change_operation', 'change_own_operation'])( views.operation_deletion_wizard), name='operation_deletion'), + url(r'operation_delete/(?P<pk>.+)/$', + views.operation_delete, name='delete-operation'), + url(r'administrativact_register/(?P<step>.+)?$', check_rights(['view_administrativeact', 'view_own_administrativeact'])( views.administrativact_register_wizard), @@ -155,12 +162,14 @@ urlpatterns = [ 'change_own_archaeologicalsite'])( views.site_modification_wizard), name='site_modification'), + url(r'site_modify/(?P<pk>.+)/$', + views.site_modify, name='site_modify'), url(r'site_deletion/(?P<step>.+)?$', check_rights(['change_archaeologicalsite'])( views.site_deletion_wizard), name='site_deletion'), - url(r'site_modify/(?P<pk>.+)/$', - views.site_modify, name='site_modify'), + url(r'site_delete/(?P<pk>.+)/$', + views.site_delete, name='delete-site'), url(r'autocomplete-patriarche/$', views.autocomplete_patriarche, name='autocomplete-patriarche'), diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index ca09510f7..d71bd0d02 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -52,7 +52,8 @@ from ishtar_common.forms import ClosingDateFormSelection, FinalForm, \ from ishtar_common.models import get_current_profile, IshtarSiteProfile, \ DocumentTemplate from ishtar_common.utils import put_session_message, check_rights_condition -from ishtar_common.views import gen_generate_doc, QAItemEditForm, QABaseLockView +from ishtar_common.views import gen_generate_doc, QAItemEditForm, \ + QABaseLockView, wizard_is_available from ishtar_common.views_item import get_item, show_item, revert_item, \ new_qa_item from ishtar_common.wizards import SearchWizard @@ -163,7 +164,8 @@ show_operation = show_item(models.Operation, 'operation') revert_operation = revert_item(models.Operation) get_administrativeactop = get_item( - models.AdministrativeAct, 'get_administrativeactop', 'administrativeactop') + models.AdministrativeAct, 'get_administrativeactop', 'administrativeactop', + base_request={"operation__pk__isnull": False}) get_administrativeact = get_item( models.AdministrativeAct, 'get_administrativeact', 'administrativeact') @@ -299,27 +301,15 @@ operation_modification_wizard = OperationModificationWizard.as_view( def operation_modify(request, pk): - try: - operation_modification_wizard(request) - except IndexError: # no step available - put_session_message( - request.session.session_key, - _(u"You don't have sufficient permissions to do this action."), - 'warning' - ) + if not wizard_is_available(operation_modification_wizard, request, + models.Operation, pk): return HttpResponseRedirect("/") - q = models.Operation.objects.filter(pk=pk) - if not q.count(): - raise Http404() - item = q.all()[0] - if item.locked: - raise Http404() - + wizard_url = 'operation_modification' OperationModificationWizard.session_set_value( - request, 'selec-operation_modification', 'pk', pk, reset=True) - return redirect(reverse('operation_modification', - kwargs={'step': 'general-operation_modification'})) + request, 'selec-' + wizard_url, 'pk', pk, reset=True) + return redirect(reverse(wizard_url, + kwargs={'step': 'general-' + wizard_url})) def operation_add(request, file_id): @@ -352,6 +342,18 @@ operation_deletion_wizard = OperationDeletionWizard.as_view( url_name='operation_deletion',) +def operation_delete(request, pk): + if not wizard_is_available(operation_deletion_wizard, request, + models.Operation, pk): + return HttpResponseRedirect("/") + + wizard_url = 'operation_deletion' + OperationDeletionWizard.session_set_value( + request, 'selec-' + wizard_url, 'pk', pk, reset=True) + return redirect(reverse(wizard_url, + kwargs={'step': 'final-' + wizard_url})) + + # archaeological sites def site_extra_context(request, item): @@ -401,27 +403,14 @@ site_modification_wizard = SiteModificationWizard.as_view( def site_modify(request, pk): - try: - site_modification_wizard(request) - except IndexError: # no step available - put_session_message( - request.session.session_key, - _(u"You don't have sufficient permissions to do this action."), - 'warning' - ) + if not wizard_is_available(site_modification_wizard, request, + models.ArchaeologicalSite, pk): return HttpResponseRedirect("/") - - q = models.ArchaeologicalSite.objects.filter(pk=pk) - if not q.count(): - raise Http404() - item = q.all()[0] - if item.locked: - raise Http404() - + wizard_url = 'site_modification' SiteModificationWizard.session_set_value( - request, 'selec-site_modification', 'pk', pk, reset=True) - return redirect(reverse('site_modification', - kwargs={'step': 'general-site_modification'})) + request, 'selec-' + wizard_url, 'pk', pk, reset=True) + return redirect(reverse(wizard_url, + kwargs={'step': 'general-' + wizard_url})) site_deletion_steps = [ @@ -434,6 +423,17 @@ site_deletion_wizard = SiteDeletionWizard.as_view( label=_(u"Site deletion"), url_name='site_deletion',) + +def site_delete(request, pk): + if not wizard_is_available(site_deletion_wizard, request, + models.ArchaeologicalSite, pk): + return HttpResponseRedirect("/") + wizard_url = 'site_deletion' + SiteDeletionWizard.session_set_value( + request, 'selec-' + wizard_url, 'pk', pk, reset=True) + return redirect(reverse(wizard_url, + kwargs={'step': 'final-' + wizard_url})) + operation_administrativeactop_search_wizard = SearchWizard.as_view([ ('general-operation_administrativeactop_search', AdministrativeActOpeFormSelection)], @@ -465,17 +465,15 @@ operation_administrativeactop_modification_wizard = \ def operation_administrativeactop_modify(request, pk): - operation_administrativeactop_modification_wizard(request) + if not wizard_is_available( + operation_administrativeactop_modification_wizard, request, + models.AdministrativeAct, pk): + return HttpResponseRedirect("/") + wizard_url = 'operation_administrativeactop_modification' OperationEditAdministrativeActWizard.session_set_value( - request, 'selec-operation_administrativeactop_modification', - 'pk', pk, reset=True) + request, 'selec-' + wizard_url, 'pk', pk, reset=True) return redirect( - reverse( - 'operation_administrativeactop_modification', - kwargs={ - 'step': - 'administrativeact-operation_administrativeactop_modification' - })) + reverse(wizard_url, kwargs={'step': 'administrativeact-' + wizard_url})) operation_administrativeactop_deletion_wizard = \ @@ -487,6 +485,19 @@ operation_administrativeactop_deletion_wizard = \ label=_(u"Operation: administrative act deletion"), url_name='operation_administrativeactop_deletion',) + +def operation_administrativeactop_delete(request, pk): + if not wizard_is_available( + operation_administrativeactop_deletion_wizard, request, + models.AdministrativeAct, pk): + return HttpResponseRedirect("/") + wizard_url = 'operation_administrativeactop_deletion' + AdministrativeActDeletionWizard.session_set_value( + request, 'selec-' + wizard_url, 'pk', pk, reset=True) + return redirect( + reverse(wizard_url, kwargs={'step': 'final-' + wizard_url})) + + administrativact_register_wizard = SearchWizard.as_view([ ('general-administrativact_register', AdministrativeActRegisterFormSelection)], diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index f3fd5c3aa..cc3542c79 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -57,6 +57,7 @@ class Warehouse(Address, DocumentItem, GeoItem, QRCodeItem, DashboardFormItem, APP = "archaeological-warehouse" MODEL = "warehouse" SHOW_URL = 'show-warehouse' + DELETE_URL = 'delete-warehouse' TABLE_COLS = ['name', 'warehouse_type__label'] NEW_QUERY_ENGINE = True BASE_SEARCH_VECTORS = [ @@ -425,6 +426,7 @@ class Container(DocumentItem, LightHistorizedItem, QRCodeItem, GeoItem, APP = "archaeological-warehouse" MODEL = "container" SHOW_URL = 'show-container' + DELETE_URL = 'delete-container' NEW_QUERY_ENGINE = True TABLE_COLS = ['reference', 'container_type__label', 'cached_location', 'cached_division', 'old_reference'] diff --git a/archaeological_warehouse/urls.py b/archaeological_warehouse/urls.py index ba1e3342c..6519a5db4 100644 --- a/archaeological_warehouse/urls.py +++ b/archaeological_warehouse/urls.py @@ -61,12 +61,14 @@ urlpatterns = [ check_rights(['change_warehouse'])( views.warehouse_modification_wizard), name='warehouse_modification'), + url(r'warehouse-modify/(?P<pk>.+)/$', + views.warehouse_modify, name='warehouse_modify'), url(r'^warehouse_deletion/(?P<step>.+)?$', check_rights(['change_warehouse'])( views.warehouse_deletion_wizard), name='warehouse_deletion'), - url(r'warehouse-modify/(?P<pk>.+)/$', - views.warehouse_modify, name='warehouse_modify'), + url(r'warehouse-delete/(?P<pk>.+)/$', + views.warehouse_delete, name='delete-warehouse'), url(r'^warehouse-qa-lock/(?P<pks>[0-9-]+)?/$', views.QAWarehouseLockView.as_view(), name='warehouse-qa-lock', @@ -89,12 +91,14 @@ urlpatterns = [ check_rights(['change_container', 'change_own_container'])( views.container_modification_wizard), name='container_modification'), + url(r'container-modify/(?P<pk>.+)/$', + views.container_modify, name='container_modify'), url(r'^container_deletion/(?P<step>.+)?$', check_rights(['change_container', 'change_own_container'])( views.container_deletion_wizard), name='container_deletion'), - url(r'container-modify/(?P<pk>.+)/$', - views.container_modify, name='container_modify'), + url(r'container-delete/(?P<pk>.+)/$', + views.container_delete, name='delete-container'), url(r'^container-qa-lock/(?P<pks>[0-9-]+)?/$', views.QAContainerLockView.as_view(), name='container-qa-lock', diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py index b5ba1a784..f997be842 100644 --- a/archaeological_warehouse/views.py +++ b/archaeological_warehouse/views.py @@ -34,7 +34,7 @@ from archaeological_warehouse.forms import WarehouseForm, ContainerForm, \ ContainerDeletionForm, ContainerSelect, WarehouseSelect from ishtar_common.forms import FinalForm -from ishtar_common.views import QABaseLockView +from ishtar_common.views import QABaseLockView, wizard_is_available from ishtar_common.views_item import get_item, show_item, new_qa_item from archaeological_finds.views import treatment_add @@ -149,28 +149,14 @@ warehouse_modification_wizard = WarehouseModificationWizard.as_view([ def warehouse_modify(request, pk): - try: - warehouse_modification_wizard(request) - except IndexError: # no step available - put_session_message( - request.session.session_key, - _(u"You don't have sufficient permissions to do this action."), - 'warning' - ) + if not wizard_is_available(warehouse_modification_wizard, request, + models.Warehouse, pk): return HttpResponseRedirect("/") - - q = models.Warehouse.objects.filter(pk=pk) - if not q.count(): - raise Http404() - item = q.all()[0] - if item.locked: - raise Http404() - + wizard_url = 'warehouse_modification' WarehouseModificationWizard.session_set_value( - request, 'selec-warehouse_modification', 'pk', pk, reset=True) + request, 'selec-' + wizard_url, 'pk', pk, reset=True) return redirect( - reverse('warehouse_modification', - kwargs={'step': 'warehouse-warehouse_modification'})) + reverse(wizard_url, kwargs={'step': 'warehouse-' + wizard_url})) warehouse_deletion_wizard = WarehouseDeletionWizard.as_view([ @@ -180,6 +166,17 @@ warehouse_deletion_wizard = WarehouseDeletionWizard.as_view([ url_name='warehouse_deletion',) +def warehouse_delete(request, pk): + if not wizard_is_available(warehouse_deletion_wizard, request, + models.Warehouse, pk): + return HttpResponseRedirect("/") + wizard_url = 'warehouse_deletion' + WarehouseDeletionWizard.session_set_value( + request, 'selec-' + wizard_url, 'pk', pk, reset=True) + return redirect( + reverse(wizard_url, kwargs={'step': 'final-' + wizard_url})) + + class QAWarehouseLockView(QABaseLockView): model = models.Warehouse base_url = "warehouse-qa-lock" @@ -213,28 +210,15 @@ container_modification_wizard = ContainerModificationWizard.as_view([ def container_modify(request, pk): - try: - container_modification_wizard(request) - except IndexError: # no step available - put_session_message( - request.session.session_key, - _(u"You don't have sufficient permissions to do this action."), - 'warning' - ) + if not wizard_is_available(container_modification_wizard, request, + models.Container, pk): return HttpResponseRedirect("/") - - q = models.Container.objects.filter(pk=pk) - if not q.count(): - raise Http404() - item = q.all()[0] - if item.locked: - raise Http404() - + wizard_url = 'container_modification' ContainerModificationWizard.session_set_value( - request, 'selec-container_modification', 'pk', pk, reset=True) + request, 'selec-' + wizard_url, 'pk', pk, reset=True) return redirect( - reverse('container_modification', - kwargs={'step': 'container-container_modification'})) + reverse(wizard_url, kwargs={'step': 'container-' + wizard_url})) + container_deletion_wizard = ContainerDeletionWizard.as_view([ ('selec-container_deletion', MainContainerFormSelection), @@ -243,6 +227,17 @@ container_deletion_wizard = ContainerDeletionWizard.as_view([ url_name='container_deletion',) +def container_delete(request, pk): + if not wizard_is_available(container_deletion_wizard, request, + models.Container, pk): + return HttpResponseRedirect("/") + wizard_url = 'container_deletion' + ContainerDeletionWizard.session_set_value( + request, 'selec-' + wizard_url, 'pk', pk, reset=True) + return redirect( + reverse(wizard_url, kwargs={'step': 'final-' + wizard_url})) + + def container_treatment_add(request, pk, current_right=None): try: container = models.Container.objects.get(pk=pk) diff --git a/ishtar_common/models.py b/ishtar_common/models.py index d5450916b..fba1212c7 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -4019,6 +4019,7 @@ class Organization(Address, Merge, OwnPerms, ValueGetter): TABLE_COLS = ('name', 'organization_type', 'town') SLUG = "organization" SHOW_URL = 'show-organization' + DELETE_URL = 'delete-organization' # search parameters EXTRA_REQUEST_KEYS = {} diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index 1c0ddc495..fd9083e91 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -96,6 +96,8 @@ urlpatterns = [ url(r'organization_deletion/(?P<step>.+)?$', check_rights(['change_organization', 'change_own_organization'])( views.organization_deletion_wizard), name='organization_deletion'), + url(r'organization_delete/(?P<pk>.+)/$', views.organization_delete, + name='delete-organization'), url(r'organization-edit/$', check_rights(['add_organization'])( views.OrganizationCreate.as_view()), name='organization_create'), diff --git a/ishtar_common/views.py b/ishtar_common/views.py index abd2b79d8..0f0854720 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -154,7 +154,9 @@ person_modification_wizard = wizards.PersonModifWizard.as_view( def person_modify(request, pk): - person_modification_wizard(request) + if not wizard_is_available(person_modification_wizard, request, + models.Person, pk): + return HttpResponseRedirect("/") wizards.PersonModifWizard.session_set_value( request, 'selec-person_modification', 'pk', pk, reset=True) return redirect(reverse('person_modification', @@ -169,7 +171,9 @@ person_deletion_wizard = wizards.PersonDeletionWizard.as_view( def person_delete(request, pk): - person_deletion_wizard(request) + if not wizard_is_available(person_deletion_wizard, request, + models.Person, pk): + return HttpResponseRedirect("/") wizards.PersonDeletionWizard.session_set_value( request, 'selec-person_deletion', 'pk', pk, reset=True) return redirect(reverse('person_deletion', @@ -195,7 +199,9 @@ organization_modification_wizard = wizards.OrganizationModifWizard.as_view( def organization_modify(request, pk): - organization_modification_wizard(request) + if not wizard_is_available(organization_modification_wizard, request, + models.Organization, pk): + return HttpResponseRedirect("/") wizards.OrganizationModifWizard.session_set_value( request, 'selec-organization_modification', 'pk', pk, reset=True) return redirect( @@ -209,6 +215,18 @@ organization_deletion_wizard = wizards.OrganizationDeletionWizard.as_view( label=_(u"Organization deletion"), url_name='organization_deletion',) + +def organization_delete(request, pk): + if not wizard_is_available(organization_deletion_wizard, request, + models.Organization, pk): + return HttpResponseRedirect("/") + wizard_url = 'organization_deletion' + wizards.OrganizationDeletionWizard.session_set_value( + request, 'selec-' + wizard_url, 'pk', pk, reset=True) + return redirect( + reverse(wizard_url, + kwargs={'step': 'final-' + wizard_url})) + account_wizard_steps = [ ('selec-account_management', forms.PersonUserFormSelection), ('account-account_management', forms.AccountForm), |