diff options
Diffstat (limited to 'archaeological_warehouse')
-rw-r--r-- | archaeological_warehouse/models.py | 2 | ||||
-rw-r--r-- | archaeological_warehouse/urls.py | 12 | ||||
-rw-r--r-- | archaeological_warehouse/views.py | 73 |
3 files changed, 44 insertions, 43 deletions
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) |