diff options
Diffstat (limited to 'archaeological_files/models.py')
| -rw-r--r-- | archaeological_files/models.py | 45 | 
1 files changed, 28 insertions, 17 deletions
| diff --git a/archaeological_files/models.py b/archaeological_files/models.py index 195418bc8..0d5b4b3e8 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -26,7 +26,8 @@ from django.db.models import Q, Count, Sum  from django.db.models.signals import post_save, m2m_changed, post_delete  from django.utils.translation import ugettext_lazy as _, ugettext -from ishtar_common.utils import cached_label_changed, get_cache +from ishtar_common.utils import cached_label_changed, get_cache, \ +    get_current_year  from ishtar_common.models import GeneralType, BaseHistorizedItem, \      HistoricalRecords, OwnPerms, Person, Organization, Department, Town, \ @@ -105,8 +106,7 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,      }      # fields -    year = models.IntegerField(_(u"Year"), -                               default=lambda: datetime.datetime.now().year) +    year = models.IntegerField(_(u"Year"), default=get_current_year)      numeric_reference = models.IntegerField(          _(u"Numeric reference"), blank=True, null=True)      internal_reference = models.CharField(_(u"Internal reference"), blank=True, @@ -151,10 +151,10 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,      permit_reference = models.TextField(_(u"Permit reference"), blank=True,                                          null=True)      end_date = models.DateField(_(u"Closing date"), null=True, blank=True) -    main_town = models.ForeignKey(Town, verbose_name=_(u"Town"), null=True, +    main_town = models.ForeignKey(Town, verbose_name=_(u"Main town"), null=True,                                    blank=True, related_name='file_main')      towns = models.ManyToManyField(Town, verbose_name=_(u"Towns"), -                                   related_name='file') +                                   related_name='file', blank=True)      creation_date = models.DateField(          _(u"Creation date"), default=datetime.date.today, blank=True,          null=True) @@ -180,7 +180,7 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,      comment = models.TextField(_(u"Comment"), null=True, blank=True)      # research archaeology -->      departments = models.ManyToManyField( -        Department, verbose_name=_(u"Departments"), null=True, blank=True) +        Department, verbose_name=_(u"Departments"), blank=True)      requested_operation_type = models.ForeignKey(          OperationType, related_name='+', null=True,          blank=True, verbose_name=_(u"Requested operation type")) @@ -220,14 +220,12 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,          verbose_name = _(u"Archaeological file")          verbose_name_plural = _(u"Archaeological files")          permissions = ( -            ("view_file", ugettext(u"Can view all Archaeological files")), -            ("view_own_file", ugettext(u"Can view own Archaeological file")), -            ("add_own_file", ugettext(u"Can add own Archaeological file")), -            ("change_own_file", -             ugettext(u"Can change own Archaeological file")), -            ("delete_own_file", -             ugettext(u"Can delete own Archaeological file")), -            ("close_file", ugettext(u"Can close File")), +            ("view_file", u"Can view all Archaeological files"), +            ("view_own_file", u"Can view own Archaeological file"), +            ("add_own_file", u"Can add own Archaeological file"), +            ("change_own_file", u"Can change own Archaeological file"), +            ("delete_own_file", u"Can delete own Archaeological file"), +            ("close_file", u"Can close File"),          )          ordering = ('cached_label',) @@ -430,9 +428,9 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,          return self.towns.all()[0].numero_insee[:2]      @classmethod -    def get_query_owns(cls, user): -        return (Q(history_creator=user) | -                Q(in_charge__ishtaruser=user.ishtaruser)) \ +    def get_query_owns(cls, ishtaruser): +        return (Q(history_creator=ishtaruser.user_ptr) | +                Q(in_charge__ishtaruser=ishtaruser)) \              & Q(end_date__isnull=True)      def is_active(self): @@ -554,6 +552,19 @@ class FileByDepartment(models.Model):      """      Database view for dashboard      """ +    CREATE_SQL = """ +    CREATE VIEW file_department (id, department_id, file_id) as +        select town."id", town."departement_id", file_towns."file_id" +            from ishtar_common_town town +            inner join archaeological_files_file_towns file_towns +                on file_towns."town_id"=town."id" +            order by town."departement_id"; +    CREATE RULE file_department_delete +                        AS ON DELETE TO file_department DO INSTEAD(); +    """ +    DELETE_SQL = """ +    DROP VIEW file_department; +    """      file = models.ForeignKey(File, verbose_name=_(u"File"))      department = models.ForeignKey(Department, verbose_name=_(u"Department"),                                     blank=True, null=True) | 
