summaryrefslogtreecommitdiff
path: root/archaeological_warehouse
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-10 20:49:13 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-10 20:49:13 +0200
commit3dae10a792d49d685debfe52eb7d61b9a6dc93f9 (patch)
tree45f1d910b67a30e44015735581ec9cdc6db51cdf /archaeological_warehouse
parent58178a04b3e716a063b1c457018aafe28e5107dd (diff)
downloadIshtar-3dae10a792d49d685debfe52eb7d61b9a6dc93f9.tar.bz2
Ishtar-3dae10a792d49d685debfe52eb7d61b9a6dc93f9.zip
QA: lock/unlock (sites, operations, context records, finds, containers, warehouses)
Diffstat (limited to 'archaeological_warehouse')
-rw-r--r--archaeological_warehouse/forms.py12
-rw-r--r--archaeological_warehouse/models.py20
-rw-r--r--archaeological_warehouse/urls.py8
-rw-r--r--archaeological_warehouse/views.py12
4 files changed, 45 insertions, 7 deletions
diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py
index ecf040a7e..5a558aa45 100644
--- a/archaeological_warehouse/forms.py
+++ b/archaeological_warehouse/forms.py
@@ -42,7 +42,8 @@ from bootstrap_datepicker.widgets import DatePicker
from ishtar_common.forms import name_validator, reverse_lazy, \
get_form_selection, ManageOldType, FinalForm, FormSet, \
- CustomForm, FieldType, HistorySelect, FormHeader, TableSelect
+ CustomForm, FieldType, HistorySelect, FormHeader, TableSelect, \
+ CustomFormSearch
from ishtar_common.forms_common import get_town_field
from archaeological_finds.forms import FindMultipleFormSelection, \
SelectFindBasketForm
@@ -109,7 +110,7 @@ class WarehouseSelect(CustomForm, TableSelect):
models.WarehouseType.get_help()
-class WarehouseFormSelection(forms.Form):
+class WarehouseFormSelection(CustomFormSearch):
SEARCH_AND_SELECT = True
form_label = _("Warehouse search")
associated_models = {'pk': models.Warehouse}
@@ -448,12 +449,15 @@ ContainerFormSelection = get_form_selection(
'ContainerFormSelection', _(u"Container search"), 'container',
models.Container, ContainerSelect, 'get-container',
_(u"You should select a container."), new=True,
- new_message=_(u"Add a new container"))
+ new_message=_(u"Add a new container"),
+ base_form_select=CustomFormSearch
+)
MainContainerFormSelection = get_form_selection(
'ContainerFormSelection', _(u"Container search"), 'pk',
models.Container, ContainerSelect, 'get-container',
- _(u"You should select a container."), gallery=True, map=True
+ _(u"You should select a container."), gallery=True, map=True,
+ base_form_select = CustomFormSearch
)
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index a3cbf82e3..96257da3c 100644
--- a/archaeological_warehouse/models.py
+++ b/archaeological_warehouse/models.py
@@ -33,7 +33,7 @@ from ishtar_common.models import Document, GeneralType, get_external_id, \
LightHistorizedItem, OwnPerms, Address, Person, post_save_cache, \
DashboardFormItem, ShortMenuItem, Organization, OrganizationType, \
document_attached_changed, SearchAltName, DynamicRequest, GeoItem, \
- QRCodeItem, SearchVectorConfig, DocumentItem
+ QRCodeItem, SearchVectorConfig, DocumentItem, QuickAction, MainItem
from ishtar_common.model_merging import merge_model_objects
from ishtar_common.utils import cached_label_changed, \
cached_label_and_geo_changed
@@ -51,7 +51,7 @@ post_delete.connect(post_save_cache, sender=WarehouseType)
class Warehouse(Address, DocumentItem, GeoItem, QRCodeItem, DashboardFormItem,
- OwnPerms, ShortMenuItem):
+ OwnPerms, MainItem):
SLUG = 'warehouse'
APP = "archaeological-warehouse"
MODEL = "warehouse"
@@ -86,6 +86,13 @@ class Warehouse(Address, DocumentItem, GeoItem, QRCodeItem, DashboardFormItem,
DOWN_MODEL_UPDATE = ["containers"]
CACHED_LABELS = []
+ QA_LOCK = QuickAction(
+ url="warehouse-qa-lock", icon_class="fa fa-lock",
+ text=_(u"Lock/Unlock"), target="many",
+ rights=['change_warehouse', 'change_own_warehouse']
+ )
+ QUICK_ACTIONS = [QA_LOCK]
+
objects = ExternalIdManager()
name = models.CharField(_(u"Name"), max_length=200)
@@ -411,7 +418,7 @@ post_delete.connect(post_save_cache, sender=ContainerType)
class Container(DocumentItem, LightHistorizedItem, QRCodeItem, GeoItem,
- OwnPerms):
+ OwnPerms, MainItem):
SLUG = 'container'
APP = "archaeological-warehouse"
MODEL = "container"
@@ -578,6 +585,13 @@ class Container(DocumentItem, LightHistorizedItem, QRCodeItem, GeoItem,
),
}
+ QA_LOCK = QuickAction(
+ url="container-qa-lock", icon_class="fa fa-lock",
+ text=_(u"Lock/Unlock"), target="many",
+ rights=['change_container', 'change_own_container']
+ )
+ QUICK_ACTIONS = [QA_LOCK]
+
objects = ExternalIdManager()
# fields
diff --git a/archaeological_warehouse/urls.py b/archaeological_warehouse/urls.py
index 47058a352..ba1e3342c 100644
--- a/archaeological_warehouse/urls.py
+++ b/archaeological_warehouse/urls.py
@@ -68,6 +68,10 @@ urlpatterns = [
url(r'warehouse-modify/(?P<pk>.+)/$',
views.warehouse_modify, name='warehouse_modify'),
+ url(r'^warehouse-qa-lock/(?P<pks>[0-9-]+)?/$',
+ views.QAWarehouseLockView.as_view(), name='warehouse-qa-lock',
+ kwargs={"model": models.Warehouse}),
+
url(r'^container-add-treatment/(?P<pk>[0-9-]+)/$',
check_rights(['change_find', 'change_own_find'])(
views.container_treatment_add),
@@ -91,4 +95,8 @@ urlpatterns = [
name='container_deletion'),
url(r'container-modify/(?P<pk>.+)/$',
views.container_modify, name='container_modify'),
+
+ url(r'^container-qa-lock/(?P<pks>[0-9-]+)?/$',
+ views.QAContainerLockView.as_view(), name='container-qa-lock',
+ kwargs={"model": models.Container}),
]
diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py
index ecbcc3175..67701f70b 100644
--- a/archaeological_warehouse/views.py
+++ b/archaeological_warehouse/views.py
@@ -34,6 +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_item import get_item, show_item, new_item
from archaeological_finds.views import treatment_add
@@ -178,6 +179,12 @@ warehouse_deletion_wizard = WarehouseDeletionWizard.as_view([
label=_(u"Warehouse deletion"),
url_name='warehouse_deletion',)
+
+class QAWarehouseLockView(QABaseLockView):
+ model = models.Warehouse
+ base_url = "warehouse-qa-lock"
+
+
container_search_wizard = ContainerSearch.as_view([
('selec-container_search', MainContainerFormSelection)],
label=_(u"Container search"),
@@ -252,6 +259,11 @@ warehouse_packaging_wizard = ItemSourceWizard.as_view([
"""
+class QAContainerLockView(QABaseLockView):
+ model = models.Container
+ base_url = "container-qa-lock"
+
+
def reset_wizards(request):
for wizard_class, url_name in (
(PackagingWizard, 'warehouse_packaging'),