diff options
| -rw-r--r-- | archaeological_context_records/models.py | 7 | ||||
| -rw-r--r-- | archaeological_finds/ishtar_menu.py | 24 | ||||
| -rw-r--r-- | archaeological_finds/models.py | 10 | ||||
| -rw-r--r-- | archaeological_operations/ishtar_menu.py | 18 | ||||
| -rw-r--r-- | ishtar_common/backend.py | 4 | ||||
| -rw-r--r-- | ishtar_common/models.py | 1 | 
6 files changed, 38 insertions, 26 deletions
| diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index eb62029aa..85f7582f3 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -20,6 +20,7 @@  from django.conf import settings  from django.contrib.gis.db import models  from django.core.urlresolvers import reverse +from django.db.models import Q  from django.db.models.signals import post_delete  from django.utils.translation import ugettext_lazy as _, ugettext, pgettext @@ -201,6 +202,12 @@ class ContextRecord(BaseHistorizedItem, OwnPerms, ShortMenuItem):      def show_url(self):          return reverse('show-contextrecord', args=[self.pk, '']) +    @classmethod +    def get_query_owns(cls, user): +        return Q(operation__scientist=user.ishtaruser.person) |\ +            Q(operation__in_charge=user.ishtaruser.person) |\ +            Q(history_creator=user) +      def full_label(self):          if not self.operation:              return unicode(self) diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py index ae684397c..8034d96e7 100644 --- a/archaeological_finds/ishtar_menu.py +++ b/archaeological_finds/ishtar_menu.py @@ -31,18 +31,18 @@ MENU_SECTIONS = [               MenuItem(                   'find_search', _(u"Search"),                   model=models.Find, -                 access_controls=['view_item', -                                  'view_own_item']), +                 access_controls=['view_find', +                                  'view_own_find']),               MenuItem(                   'find_creation', _(u"Creation"),                   model=models.Find, -                 access_controls=['add_item', -                                  'add_own_item']), +                 access_controls=['add_find', +                                  'add_own_find']),               MenuItem(                   'find_modification', _(u"Modification"),                   model=models.Find, -                 access_controls=['change_item', -                                  'change_own_item']), +                 access_controls=['change_find', +                                  'change_own_find']),               # MenuItem('treatment_creation', _(u"Add a treatment"),               #     model=models.Treatment,               #     access_controls=['add_treatment', @@ -53,18 +53,18 @@ MENU_SECTIONS = [                       MenuItem('find_source_creation',                                _(u"Creation"),                                model=models.FindSource, -                              access_controls=['change_item', -                                               'change_own_item']), +                              access_controls=['change_find', +                                               'change_own_find']),                       MenuItem('find_source_modification',                                _(u"Modification"),                                model=models.FindSource, -                              access_controls=['change_item', -                                               'change_own_item']), +                              access_controls=['change_find', +                                               'change_own_find']),                       MenuItem('find_source_deletion',                                _(u"Deletion"),                                model=models.FindSource, -                              access_controls=['change_item', -                                               'change_own_item']), +                              access_controls=['change_find', +                                               'change_own_find']),                   ])           ]))  ] diff --git a/archaeological_finds/models.py b/archaeological_finds/models.py index e4a247941..32b4334ff 100644 --- a/archaeological_finds/models.py +++ b/archaeological_finds/models.py @@ -22,7 +22,7 @@ import datetime  from django.conf import settings  from django.contrib.gis.db import models  from django.core.urlresolvers import reverse -from django.db.models import Max +from django.db.models import Max, Q  from django.utils.translation import ugettext_lazy as _, ugettext  from ishtar_common.models import GeneralType, ImageModel, BaseHistorizedItem, \ @@ -479,6 +479,14 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):              new.base_finds.add(base_find)          return new +    @classmethod +    def get_query_owns(cls, user): +        return Q(base_finds__context_record__operation__scientist=user. +                 ishtaruser.person) |\ +            Q(base_finds__context_record__operation__in_charge=user. +              ishtaruser.person) |\ +            Q(history_creator=user) +      def save(self, *args, **kwargs):          super(Find, self).save(*args, **kwargs)          q = self.base_finds diff --git a/archaeological_operations/ishtar_menu.py b/archaeological_operations/ishtar_menu.py index 8c9fbbbc3..2fffa5947 100644 --- a/archaeological_operations/ishtar_menu.py +++ b/archaeological_operations/ishtar_menu.py @@ -121,32 +121,28 @@ if FILES_AVAILABLE:                  MenuItem(                      'operation_administrativeactop_search',                      _(u"Search"), -                    model=models.Operation, +                    model=models.AdministrativeAct,                      access_controls=[ -                        'change_operation', 'change_own_operation']), +                        'change_administrativeact']),                  MenuItem(                      'operation_administrativeactop',                      _(u"Add"), -                    model=models.Operation, -                    access_controls=['change_operation', -                                     'change_own_operation']), +                    model=models.AdministrativeAct, +                    access_controls=['change_administrativeact']),                  MenuItem(                      'operation_administrativeactop_modification',                      _(u"Modification"),                      model=models.AdministrativeAct, -                    access_controls=['change_operation', -                                     'change_own_operation']), +                    access_controls=['change_administrativeact']),                  MenuItem(                      'operation_administrativeactop_deletion',                      _(u"Deletion"),                      model=models.AdministrativeAct, -                    access_controls=[ -                        'operation_deletion', 'delete_own_operation']), +                    access_controls=['change_administrativeact']),                  MenuItem(                      'operation_administrativeact_document',                      _(u"Documents"),                      model=models.AdministrativeAct, -                    access_controls=['change_operation', -                                     'change_own_operation']), +                    access_controls=['change_administrativeact']),              ],)      ) diff --git a/ishtar_common/backend.py b/ishtar_common/backend.py index 0febd61b2..f48e6ddec 100644 --- a/ishtar_common/backend.py +++ b/ishtar_common/backend.py @@ -53,11 +53,11 @@ class ObjectPermBackend(ModelBackend):          if not main_right or not is_ownperm:              return main_right          if obj is None: -            model_name = perm.split('_')[-1].capitalize() +            model_name = perm.split('_')[-1].lower()              model = None              for app in cache.get_apps():                  for modl in cache.get_models(app): -                    if modl.__name__ == model_name: +                    if modl.__name__.lower() == model_name:                          model = modl              if not model:                  return False diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 48218ba94..c4dcd4c44 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1982,6 +1982,7 @@ class Person(Address, Merge, OwnPerms, ValueGetter):              res = cache.get(cache_key)              if res in (True, False):                  return res +          if type(right_name) in (list, tuple):              res = bool(self.person_types.filter(                  txt_idx__in=right_name).count()) or \ | 
