summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-09-09 19:31:14 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-09-09 19:31:14 +0200
commit6ee8c39a2e8e053810bea643fdf0f8c3fa21374b (patch)
treed016b7c4969407fe679dd27b6aedfb1d47c57448
parentfc572c9de810ec5c32b5178a5e8b9d9a3aefc4f5 (diff)
downloadIshtar-6ee8c39a2e8e053810bea643fdf0f8c3fa21374b.tar.bz2
Ishtar-6ee8c39a2e8e053810bea643fdf0f8c3fa21374b.zip
Shortcut menu: parent items constraint default search if no default item is set (refs #1318)
-rw-r--r--archaeological_context_records/views.py7
-rw-r--r--archaeological_files/views.py2
-rw-r--r--archaeological_finds/views.py12
-rw-r--r--archaeological_operations/views.py3
-rw-r--r--ishtar_common/views.py10
5 files changed, 28 insertions, 6 deletions
diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py
index 4fd945187..5c8bb63cc 100644
--- a/archaeological_context_records/views.py
+++ b/archaeological_context_records/views.py
@@ -81,6 +81,9 @@ get_contextrecord = get_item(
models.ContextRecord,
'get_contextrecord', 'contextrecord',
relation_types_prefix={'ope_relation_types': 'operation__'},
+ relative_session_names=[
+ ('operation', 'operation__pk'),
+ ('file', 'operation__associated_file__pk')],
extra_request_keys=contextrecord_extra_keys,)
get_contextrecord_for_ope = get_item(
models.ContextRecord,
@@ -94,6 +97,10 @@ show_contextrecordsource = show_item(models.ContextRecordSource,
get_contextrecordsource = get_item(
models.ContextRecordSource,
'get_contextrecordsource', 'contextrecordsource',
+ relative_session_names=[
+ ('contextrecord', 'context_record__pk'),
+ ('operation', 'context_record__operation__pk'),
+ ('file', 'context_record__operation__associated_file__pk')],
bool_fields=['duplicate'],
extra_request_keys={
'title': 'title__icontains',
diff --git a/archaeological_files/views.py b/archaeological_files/views.py
index 7e96c33d3..e457c2ce7 100644
--- a/archaeological_files/views.py
+++ b/archaeological_files/views.py
@@ -143,7 +143,7 @@ get_administrativeactfile = get_item(
'associated_file__permit_reference__icontains'},
reversed_bool_fields=['index__isnull'],
base_request={"associated_file__pk__isnull": False},
- relative_session_names={'file': 'associated_file__pk'})
+ relative_session_names=[('file', 'associated_file__pk')])
def dashboard_file(request, *args, **kwargs):
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index 57b2b7665..80cc6fd8c 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -72,6 +72,11 @@ get_find = get_item(
relation_types_prefix={
'ope_relation_types':
'base_finds__context_record__operation__'},
+ relative_session_names=[
+ ('contextrecord', 'base_finds__context_record__pk'),
+ ('operation', 'base_finds__context_record__operation__pk'),
+ ('file', 'base_finds__context_record__operation__associated_file__pk')
+ ],
base_request={'downstream_treatment__isnull': True},
extra_request_keys=find_extra_keys.copy())
@@ -87,6 +92,13 @@ show_findsource = show_item(models.FindSource, 'findsource')
get_findsource = get_item(
models.FindSource, 'get_findsource', 'findsource',
bool_fields=['duplicate'],
+ relative_session_names=[
+ ('find', 'find__pk'),
+ ('contextrecord', 'find__base_finds__context_record__pk'),
+ ('operation', 'find__base_finds__context_record__operation__pk'),
+ ('file',
+ 'find__base_finds__context_record__operation__associated_file__pk')
+ ],
extra_request_keys={
'title': 'title__icontains',
'description': 'description__icontains',
diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py
index b47623fc2..6c7fdbd98 100644
--- a/archaeological_operations/views.py
+++ b/archaeological_operations/views.py
@@ -145,6 +145,7 @@ get_operation = get_item(
'documentation_deadline__lte', 'documentation_deadline__gte',
'finds_deadline__lte', 'finds_deadline__gte',
],
+ relative_session_names=[('file', 'associated_file__pk')],
extra_request_keys={
'common_name': 'common_name__icontains',
'comment': 'comment__icontains',
@@ -224,7 +225,7 @@ get_administrativeactop = get_item(
'operation__associated_file__parcels__public_domain'),
},
reversed_bool_fields=['index__isnull'],
- relative_session_names={'operation': 'operation__pk'})
+ relative_session_names=[('operation', 'operation__pk')])
get_administrativeact = get_item(
models.AdministrativeAct,
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 50c647372..d55181067 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -578,6 +578,8 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
reqs = reqs | q
and_reqs.append(reqs)
if 'submited' not in request_items:
+ # default search
+ # an item is selected in the default menu
if default_name in request.session and \
request.session[default_name]:
value = request.session[default_name]
@@ -586,11 +588,11 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
request.session[default_name].split('-')[-1]}
else:
dct = {"pk": request.session[default_name]}
- elif not dct:
- for name in relative_session_names.keys():
+ elif dct == base_request:
+ # a parent item may be selected in the default menu
+ for name, key in relative_session_names:
if name in request.session and request.session[name]:
- k = relative_session_names[name]
- dct = {k: request.session[name]}
+ dct.update({key: request.session[name]})
break
if (not dct or data_type == 'csv') \
and func_name in request.session: