summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-13 16:52:49 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-13 16:52:49 +0200
commitbbde20e66cf624a7919050548cbfa8248173c49f (patch)
tree5485667cc5b8610d1e8d538162faecba333366e5
parent9dbf9e39344f8165482b116bfabcaa442eb66c6a (diff)
downloadIshtar-bbde20e66cf624a7919050548cbfa8248173c49f.tar.bz2
Ishtar-bbde20e66cf624a7919050548cbfa8248173c49f.zip
Delete action: operations, sites, orgas, containers, warehouses
-rw-r--r--archaeological_finds/urls.py2
-rw-r--r--archaeological_operations/models.py4
-rw-r--r--archaeological_operations/urls.py13
-rw-r--r--archaeological_operations/views.py107
-rw-r--r--archaeological_warehouse/models.py2
-rw-r--r--archaeological_warehouse/urls.py12
-rw-r--r--archaeological_warehouse/views.py73
-rw-r--r--ishtar_common/models.py1
-rw-r--r--ishtar_common/urls.py2
-rw-r--r--ishtar_common/views.py24
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),