summaryrefslogtreecommitdiff
path: root/archaeological_finds/models_treatments.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-01-02 15:33:56 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-01-02 15:33:56 +0100
commitcd6fd329f22241a6a3dd14a14c579bdf1831677d (patch)
tree6e8ffab7918d9a8519d2c45bb95dea18cdd9bf99 /archaeological_finds/models_treatments.py
parent535a71c99f4961113821ae60327edc44b01fdf9e (diff)
downloadIshtar-cd6fd329f22241a6a3dd14a14c579bdf1831677d.tar.bz2
Ishtar-cd6fd329f22241a6a3dd14a14c579bdf1831677d.zip
Manage multiple condition for cascading shortcut menu - Manage shortcut menu for treatment and treatment files (refs #3384)
Diffstat (limited to 'archaeological_finds/models_treatments.py')
-rw-r--r--archaeological_finds/models_treatments.py34
1 files changed, 31 insertions, 3 deletions
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index eff8d8371..5e763085c 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -21,7 +21,7 @@ import datetime
from django.conf import settings
from django.contrib.gis.db import models
-from django.db.models import Max
+from django.db.models import Max, Q
from django.db.models.signals import post_save, post_delete, pre_delete
from django.template.defaultfilters import slugify
from django.utils.translation import ugettext_lazy as _, ugettext
@@ -144,11 +144,29 @@ class Treatment(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
lbl += u" %s %s" % (_(u"by"), unicode(self.person))
return lbl
+ @property
+ def short_class_name(self):
+ return _(u"TREATMENT")
+
+ @classmethod
+ def get_query_owns(cls, user):
+ return (Q(history_creator=user) |
+ Q(person__ishtaruser=user.ishtaruser)) \
+ & Q(end_date__isnull=True)
+
@classmethod
def get_owns(cls, user, menu_filtr=None, limit=None):
- replace_query = {}
+ replace_query = None
if menu_filtr:
- replace_query = {'file': menu_filtr}
+ if 'treatmentfile' in menu_filtr:
+ replace_query = Q(file=menu_filtr['treatmentfile'])
+ if 'find' in menu_filtr:
+ q = Q(upstream=menu_filtr['find']) | Q(
+ downstream=menu_filtr['find'])
+ if replace_query:
+ replace_query = replace_query | q
+ else:
+ replace_query = q
owns = super(Treatment, cls).get_owns(
user, replace_query=replace_query, limit=limit)
return sorted(
@@ -455,6 +473,16 @@ class TreatmentFile(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,
return self.cached_label
@property
+ def short_class_name(self):
+ return _(u"Treatment file")
+
+ @classmethod
+ def get_query_owns(cls, user):
+ return (Q(history_creator=user) |
+ Q(in_charge__ishtaruser=user.ishtaruser)) \
+ & Q(end_date__isnull=True)
+
+ @property
def associated_filename(self):
return "-".join([str(slugify(getattr(self, attr)))
for attr in ('year', 'index', 'internal_reference',