diff options
Diffstat (limited to 'archaeological_finds/models_treatments.py')
-rw-r--r-- | archaeological_finds/models_treatments.py | 219 |
1 files changed, 113 insertions, 106 deletions
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 3f1c14069..7f3aab284 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -45,12 +45,12 @@ from ishtar_common.utils import cached_label_changed, get_current_year, \ class TreatmentState(GeneralType): - executed = models.BooleanField(_(u"Treatment is executed"), default=False) - order = models.IntegerField(verbose_name=_(u"Order"), default=10) + executed = models.BooleanField(_("Treatment is executed"), default=False) + order = models.IntegerField(verbose_name=_("Order"), default=10) class Meta: - verbose_name = _(u"Treatment state type") - verbose_name_plural = _(u"Treatment state types") + verbose_name = _("Treatment state type") + verbose_name_plural = _("Treatment state types") ordering = ('order', 'label',) @classmethod @@ -89,11 +89,11 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem, "person__pk": "person__pk", # used by dynamic_table_documents } COL_LABELS = { - "downstream_cached_label": _(u"Downstream find"), - "upstream_cached_label": _(u"Upstream find"), - "treatment_types__label": _(u"Type"), - "treatment_state__label": _(u"State"), - "person__cached_label": _(u"Responsible"), + "downstream_cached_label": _("Downstream find"), + "upstream_cached_label": _("Upstream find"), + "treatment_types__label": _("Type"), + "treatment_state__label": _("State"), + "person__cached_label": _("Responsible"), "scientific_monitoring_manager__cached_label": _( "Scientific monitoring manager"), } @@ -159,80 +159,80 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem, PARENT_SEARCH_VECTORS = ['person', 'organization'] objects = ExternalIdManager() - label = models.CharField(_(u"Label"), blank=True, null=True, + label = models.CharField(_("Label"), blank=True, null=True, max_length=200) - other_reference = models.CharField(_(u"Other ref."), blank=True, null=True, + other_reference = models.CharField(_("Other ref."), blank=True, null=True, max_length=200) - year = models.IntegerField(_(u"Year"), default=get_current_year) - index = models.IntegerField(_(u"Index"), default=1) + year = models.IntegerField(_("Year"), default=get_current_year) + index = models.IntegerField(_("Index"), default=1) file = models.ForeignKey( 'TreatmentFile', related_name='treatments', blank=True, null=True, on_delete=models.SET_NULL, - verbose_name=_(u"Associated request")) + verbose_name=_("Associated request")) treatment_types = models.ManyToManyField( - TreatmentType, verbose_name=_(u"Treatment type")) + TreatmentType, verbose_name=_("Treatment type")) treatment_state = models.ForeignKey( - TreatmentState, verbose_name=_(u"State"), + TreatmentState, verbose_name=_("State"), default=TreatmentState.get_default ) executed = models.BooleanField( - _(u"Treatment have been executed"), default=False) + _("Treatment have been executed"), default=False) location = models.ForeignKey( - Warehouse, verbose_name=_(u"Location"), blank=True, null=True, + Warehouse, verbose_name=_("Location"), blank=True, null=True, on_delete=models.SET_NULL, help_text=_( - u"Location where the treatment is done. Target warehouse for " - u"a move.")) + "Location where the treatment is done. Target warehouse for " + "a move.")) person = models.ForeignKey( - Person, verbose_name=_(u"Responsible"), blank=True, null=True, + Person, verbose_name=_("Responsible"), blank=True, null=True, on_delete=models.SET_NULL, related_name='treatments') scientific_monitoring_manager = models.ForeignKey( Person, verbose_name=_('Scientific monitoring manager'), blank=True, null=True, on_delete=models.SET_NULL, related_name='manage_treatments') organization = models.ForeignKey( - Organization, verbose_name=_(u"Organization"), blank=True, null=True, + Organization, verbose_name=_("Organization"), blank=True, null=True, on_delete=models.SET_NULL, related_name='treatments') - external_id = models.CharField(_(u"External ID"), blank=True, null=True, + external_id = models.CharField(_("External ID"), blank=True, null=True, max_length=200) comment = models.TextField(_("Comment"), blank=True, default="") description = models.TextField(_("Description"), blank=True, default="") goal = models.TextField(_("Goal"), blank=True, default="") - start_date = models.DateField(_(u"Start date"), blank=True, null=True) - end_date = models.DateField(_(u"Closing date"), blank=True, null=True) + start_date = models.DateField(_("Start date"), blank=True, null=True) + end_date = models.DateField(_("Closing date"), blank=True, null=True) creation_date = models.DateTimeField(default=datetime.datetime.now) - container = models.ForeignKey(Container, verbose_name=_(u"Container"), + container = models.ForeignKey(Container, verbose_name=_("Container"), on_delete=models.SET_NULL, blank=True, null=True) - estimated_cost = models.FloatField(_(u"Estimated cost"), + estimated_cost = models.FloatField(_("Estimated cost"), blank=True, null=True) - quoted_cost = models.FloatField(_(u"Quoted cost"), + quoted_cost = models.FloatField(_("Quoted cost"), blank=True, null=True) - realized_cost = models.FloatField(_(u"Realized cost"), + realized_cost = models.FloatField(_("Realized cost"), blank=True, null=True) - insurance_cost = models.FloatField(_(u"Insurance cost"), + insurance_cost = models.FloatField(_("Insurance cost"), blank=True, null=True) documents = models.ManyToManyField( - Document, related_name='treatments', verbose_name=_(u"Documents"), + Document, related_name='treatments', verbose_name=_("Documents"), blank=True) main_image = models.ForeignKey( Document, related_name='main_image_treatments', on_delete=models.SET_NULL, - verbose_name=_(u"Main image"), blank=True, null=True) + verbose_name=_("Main image"), blank=True, null=True) cached_label = models.TextField(_("Cached name"), blank=True, default="", db_index=True) history = HistoricalRecords(bases=[HistoryModel]) class Meta: - verbose_name = _(u"Treatment") - verbose_name_plural = _(u"Treatments") + verbose_name = _("Treatment") + verbose_name_plural = _("Treatments") unique_together = ('year', 'index') permissions = ( - ("view_treatment", u"Can view all Treatments"), - ("view_own_treatment", u"Can view own Treatment"), - ("add_own_treatment", u"Can add own Treatment"), - ("change_own_treatment", u"Can change own Treatment"), - ("delete_own_treatment", u"Can delete own Treatment"), + ("view_treatment", "Can view all Treatments"), + ("view_own_treatment", "Can view own Treatment"), + ("add_own_treatment", "Can add own Treatment"), + ("change_own_treatment", "Can change own Treatment"), + ("delete_own_treatment", "Can delete own Treatment"), ) ordering = ("-year", "-index", "-start_date") indexes = [ @@ -244,7 +244,7 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem, @property def short_class_name(self): - return _(u"TREATMENT") + return _("TREATMENT") @property def limited_finds(self): @@ -274,10 +274,7 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem, 'basket' not in str(menu_filtr['find']): q = Q(upstream=menu_filtr['find']) | Q( downstream=menu_filtr['find']) - if replace_query: - replace_query = replace_query | q - else: - replace_query = q + replace_query = replace_query | q if replace_query else q owns = super(Treatment, cls).get_owns( user, replace_query=replace_query, limit=limit, values=values, get_short_menu_class=get_short_menu_class) @@ -291,18 +288,18 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem, items = [str(getattr(self, k)) for k in ['year', 'index', 'other_reference', 'label'] if getattr(self, k)] - return u'{} | {}'.format(u"-".join(items), self.treatment_types_lbl()) + return '{} | {}'.format("-".join(items), self.treatment_types_lbl()) def _get_base_image_path(self,): - return u"{}/{}/{}".format(self.SLUG, self.year, self.index) + return "{}/{}/{}".format(self.SLUG, self.year, self.index) def treatment_types_lbl(self): """ Treatment types label :return: string """ - return u" ; ".join([str(t) for t in self.treatment_types.all()]) - treatment_types_lbl.short_description = _(u"Treatment types") + return " ; ".join(str(t) for t in self.treatment_types.all()) + treatment_types_lbl.short_description = _("Treatment types") treatment_types_lbl.admin_order_field = 'treatment_types__label' def downstream_lbl(self): @@ -310,8 +307,8 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem, Downstream finds label :return: string """ - return u" ; ".join([f.cached_label for f in self.downstream.all()]) - downstream_lbl.short_description = _(u"Downstream finds") + return " ; ".join(f.cached_label for f in self.downstream.all()) + downstream_lbl.short_description = _("Downstream finds") downstream_lbl.admin_order_field = 'downstream__cached_label' def upstream_lbl(self): @@ -319,7 +316,7 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem, Upstream finds label :return: string """ - return " ; ".join([f.cached_label for f in self.upstream.all()]) + return " ; ".join(f.cached_label for f in self.upstream.all()) upstream_lbl.short_description = _("Upstream finds") upstream_lbl.admin_order_field = 'upstream__cached_label' @@ -339,14 +336,20 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem, prefix=prefix, no_values=no_values, filtr=filtr, **kwargs) if not filtr or prefix + "upstream_finds" in filtr: values[prefix + "upstream_finds"] = " ; ".join( - [str(up) for up in self.upstream.all()]) + str(up) for up in self.upstream.all() + ) + if not filtr or prefix + "downstream_finds" in filtr: values[prefix + "downstream_finds"] = " ; ".join( - [str(up) for up in self.downstream.all()]) + str(up) for up in self.downstream.all() + ) + if not filtr or prefix + "operations" in filtr: values[prefix + "operations"] = " ; ".join( - [str(ope) for ope in self.get_query_operations().all()]) + str(ope) for ope in self.get_query_operations().all() + ) + if 'associatedfind_' not in prefix and self.upstream.count(): find = self.upstream.all()[0] new_prefix = prefix + 'associatedfind_' @@ -382,13 +385,13 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem, resulting_find['history_modifier'] = self.history_modifier new_find = Find.objects.create(**resulting_find) - for k in m2m: + for k, v in m2m.items(): m2m_field = getattr(new_find, k) try: for value in m2m[k]: m2m_field.add(value) except TypeError: - m2m_field.add(m2m[k]) + m2m_field.add(v) create_new_find = bool([tp for tp in treatment_types if tp.create_new_find]) @@ -399,11 +402,11 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem, # datings are not explicitly part of the resulting_find # need to reassociate with no duplicate for dating in upstream_item.datings.all(): - is_present = False - for current_dating in new_find.datings.all(): - if Dating.is_identical(current_dating, dating): - is_present = True - break + is_present = any( + Dating.is_identical(current_dating, dating) + for current_dating in new_find.datings.all() + ) + if is_present: continue dating.pk = None # duplicate @@ -617,8 +620,10 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem, @property def associated_filename(self): - return "-".join([str(slugify(getattr(self, attr))) - for attr in ('year', 'index', 'label')]) + return "-".join( + str(slugify(getattr(self, attr))) + for attr in ('year', 'index', 'label') + ) post_save.connect(cached_label_changed, sender=Treatment) @@ -649,31 +654,31 @@ for attr in Treatment.HISTORICAL_M2M: class AbsFindTreatments(models.Model): - find = models.ForeignKey(Find, verbose_name=_(u"Find"), + find = models.ForeignKey(Find, verbose_name=_("Find"), related_name='%(class)s_related') - treatment = models.OneToOneField(Treatment, verbose_name=_(u"Treatment"), + treatment = models.OneToOneField(Treatment, verbose_name=_("Treatment"), primary_key=True) # primary_key is set to prevent django to ask for an id column # treatment is not a real primary key - treatment_nb = models.IntegerField(_(u"Order")) + treatment_nb = models.IntegerField(_("Order")) TABLE_COLS = ["treatment__" + col for col in Treatment.TABLE_COLS] + \ ['treatment_nb'] COL_LABELS = { - 'treatment__treatment_type': _(u"Treatment type"), - 'treatment__start_date': _(u"Start date"), - 'treatment__end_date': _(u"End date"), - 'treatment__location': _(u"Location"), - 'treatment__container': _(u"Container"), - 'treatment__person': _(u"Doer"), - 'treatment__upstream': _(u"Related finds"), - 'treatment__downstream': _(u"Related finds"), + 'treatment__treatment_type': _("Treatment type"), + 'treatment__start_date': _("Start date"), + 'treatment__end_date': _("End date"), + 'treatment__location': _("Location"), + 'treatment__container': _("Container"), + 'treatment__person': _("Doer"), + 'treatment__upstream': _("Related finds"), + 'treatment__downstream': _("Related finds"), } class Meta: abstract = True def __str__(self): - return u"{} - {} [{}]".format( + return "{} - {} [{}]".format( self.find, self.treatment, self.treatment_nb) @@ -876,7 +881,7 @@ class FindTreatments(AbsFindTreatments): DELETE_SQL = """ DROP VIEW IF EXISTS find_treatments; """ - upstream = models.BooleanField(_(u"Is upstream")) + upstream = models.BooleanField(_("Is upstream")) class Meta: managed = False @@ -889,8 +894,8 @@ class TreatmentFileType(GeneralType): treatment_type = models.ForeignKey(TreatmentType, blank=True, null=True) class Meta: - verbose_name = _(u"Treatment request type") - verbose_name_plural = _(u"Treatment request types") + verbose_name = _("Treatment request type") + verbose_name_plural = _("Treatment request types") ordering = ('label',) @@ -985,32 +990,32 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem, 'exhibition_end_date__gte'] # fields - year = models.IntegerField(_(u"Year"), default=get_current_year) - index = models.IntegerField(_(u"Index"), default=1) - internal_reference = models.CharField(_(u"Internal reference"), blank=True, + year = models.IntegerField(_("Year"), default=get_current_year) + index = models.IntegerField(_("Index"), default=1) + internal_reference = models.CharField(_("Internal reference"), blank=True, null=True, max_length=200) - external_id = models.CharField(_(u"External ID"), blank=True, null=True, + external_id = models.CharField(_("External ID"), blank=True, null=True, max_length=200) name = models.TextField(_("Name"), blank=True, default="") type = models.ForeignKey(TreatmentFileType, - verbose_name=_(u"Treatment request type")) + verbose_name=_("Treatment request type")) in_charge = models.ForeignKey( Person, related_name='treatmentfile_responsability', - verbose_name=_(u"Person in charge"), on_delete=models.SET_NULL, + verbose_name=_("Person in charge"), on_delete=models.SET_NULL, blank=True, null=True) applicant = models.ForeignKey( Person, related_name='treatmentfile_applicant', - verbose_name=_(u"Applicant"), on_delete=models.SET_NULL, + verbose_name=_("Applicant"), on_delete=models.SET_NULL, blank=True, null=True) applicant_organisation = models.ForeignKey( Organization, related_name='treatmentfile_applicant', - verbose_name=_(u"Applicant organisation"), on_delete=models.SET_NULL, + verbose_name=_("Applicant organisation"), on_delete=models.SET_NULL, blank=True, null=True) - end_date = models.DateField(_(u"Closing date"), null=True, blank=True) + end_date = models.DateField(_("Closing date"), null=True, blank=True) creation_date = models.DateField( - _(u"Creation date"), default=datetime.date.today, blank=True, + _("Creation date"), default=datetime.date.today, blank=True, null=True) - reception_date = models.DateField(_(u'Reception date'), blank=True, + reception_date = models.DateField(_('Reception date'), blank=True, null=True) # exhibition exhibition_name = models.TextField(_("Exhibition name"), blank=True, @@ -1022,12 +1027,12 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem, comment = models.TextField(_("Comment"), blank=True, default="") documents = models.ManyToManyField( - Document, related_name='treatment_files', verbose_name=_(u"Documents"), + Document, related_name='treatment_files', verbose_name=_("Documents"), blank=True) main_image = models.ForeignKey( Document, related_name='main_image_treatment_files', on_delete=models.SET_NULL, - verbose_name=_(u"Main image"), blank=True, null=True) + verbose_name=_("Main image"), blank=True, null=True) associated_basket = models.ForeignKey( FindBasket, null=True, blank=True, on_delete=models.SET_NULL, related_name='treatment_files' @@ -1037,20 +1042,20 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem, history = HistoricalRecords() class Meta: - verbose_name = _(u"Treatment request") - verbose_name_plural = _(u"Treatment requests") + verbose_name = _("Treatment request") + verbose_name_plural = _("Treatment requests") unique_together = ('year', 'index') permissions = ( ("view_treatmentfile", - u"Can view all Treatment requests"), + "Can view all Treatment requests"), ("view_own_treatmentfile", - u"Can view own Treatment request"), + "Can view own Treatment request"), ("add_own_treatmentfile", - u"Can add own Treatment request"), + "Can add own Treatment request"), ("change_own_treatmentfile", - u"Can change own Treatment request"), + "Can change own Treatment request"), ("delete_own_treatmentfile", - u"Can delete own Treatment request"), + "Can delete own Treatment request"), ) ordering = ('cached_label',) indexes = [ @@ -1062,7 +1067,7 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem, @property def short_class_name(self): - return _(u"Treatment request") + return _("Treatment request") @classmethod def get_query_owns(cls, ishtaruser): @@ -1072,9 +1077,11 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem, @property def associated_filename(self): - return "-".join([str(slugify(getattr(self, attr))) - for attr in ('year', 'index', 'internal_reference', - 'name') if getattr(self, attr)]) + return "-".join( + str(slugify(getattr(self, attr))) + for attr in ('year', 'index', 'internal_reference', 'name') + if getattr(self, attr) + ) def get_extra_actions(self, request): # url, base_text, icon, extra_text, extra css class, is a quick action @@ -1082,8 +1089,8 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem, if self.can_do(request, 'add_administrativeact'): actions += [ (reverse('treatmentfile-add-adminact', args=[self.pk]), - _(u"Add associated administrative act"), "fa fa-plus", - _(u"admin. act"), "", False), + _("Add associated administrative act"), "fa fa-plus", + _("admin. act"), "", False), ] if not self.associated_basket: return actions @@ -1095,7 +1102,7 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem, if can_edit_find: actions += [ (reverse('treatmentfile-add-treatment', args=[self.pk]), - _(u"Add associated treatment"), "fa fa-flask", "", "", + _("Add associated treatment"), "fa fa-flask", "", "", False), ] return actions @@ -1115,7 +1122,7 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem, return settings.JOINT.join(items) def _get_base_image_path(self,): - return u"{}/{}/{}".format(self.SLUG, self.year, self.index) + return "{}/{}/{}".format(self.SLUG, self.year, self.index) def pre_save(self): # is not new |