diff options
Diffstat (limited to 'archaeological_finds/models.py')
-rw-r--r-- | archaeological_finds/models.py | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/archaeological_finds/models.py b/archaeological_finds/models.py index 754ef75fa..7d5b3108d 100644 --- a/archaeological_finds/models.py +++ b/archaeological_finds/models.py @@ -57,6 +57,12 @@ class ConservatoryState(GeneralType): verbose_name_plural = _(u"Conservatory states") ordering = ('label',) +class PreservationType(GeneralType): + class Meta: + verbose_name = _(u"Preservation type") + verbose_name_plural = _(u"Preservation types") + ordering = ('label',) + class BaseFind(BaseHistorizedItem, OwnPerms): label = models.CharField(_(u"ID"), max_length=60) external_id = models.CharField(_(u"External ID"), blank=True, null=True, @@ -69,6 +75,8 @@ class BaseFind(BaseHistorizedItem, OwnPerms): null=True, max_length=120) context_record = models.ForeignKey(ContextRecord, related_name='base_finds', verbose_name=_(u"Context Record")) + discovery_date = models.DateField(_(u"Discovery date"), + blank=True, null=True) is_isolated = models.NullBooleanField(_(u"Is isolated?"), blank=True, null=True) index = models.IntegerField(u"Index", default=0) @@ -172,25 +180,29 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem): 'base_finds.context_record.operation.code_patriarche') base_finds = models.ManyToManyField(BaseFind, verbose_name=_(u"Base find"), related_name='find') - order = models.IntegerField(_(u"Order")) + external_id = models.CharField(_(u"External ID"), blank=True, null=True, + max_length=120) + order = models.IntegerField(_(u"Order"), default=1) label = models.CharField(_(u"ID"), max_length=60) description = models.TextField(_(u"Description"), blank=True, null=True) material_type = models.ForeignKey(MaterialType, verbose_name = _(u"Material type")) conservatory_state = models.ForeignKey(ConservatoryState, verbose_name = _(u"Conservatory state"), blank=True, null=True) + preservation_to_consider = models.ForeignKey(PreservationType, + verbose_name = _(u"Type of preservation to consider"), blank=True, + null=True) volume = models.FloatField(_(u"Volume (l)"), blank=True, null=True) weight = models.FloatField(_(u"Weight (g)"), blank=True, null=True) weight_unit = models.CharField(_(u"Weight unit"), max_length=1, blank=True, null=True, choices=WEIGHT_UNIT) - discovery_date = models.DateField(_(u"Discovery date"), - blank=True, null=True) find_number = models.IntegerField(_("Find number"), blank=True, null=True) upstream_treatment = models.ForeignKey("Treatment", blank=True, null=True, related_name='downstream_treatment', verbose_name=_("Upstream treatment")) downstream_treatment = models.ForeignKey("Treatment", blank=True, null=True, related_name='upstream_treatment', verbose_name=_("Downstream treatment")) - dating = models.ForeignKey(Dating, verbose_name=_(u"Dating")) + dating = models.ForeignKey(Dating, verbose_name=_(u"Dating"), blank=True, + null=True) if WAREHOUSE_AVAILABLE: container = models.ForeignKey(Container, verbose_name=_(u"Container"), blank=True, null=True, related_name='finds') @@ -313,7 +325,9 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem): def duplicate(self, user): dct = dict([(attr, getattr(self, attr)) for attr in ('order', 'label', 'description', 'material_type', 'volume', 'weight', - 'find_number', 'dating')]) + 'find_number', 'dating', 'conservatory_state', + 'preservation_to_consider', 'weight_unit', + 'find_number')]) dct['order'] += 1 dct['history_modifier'] = user new = self.__class__(**dct) @@ -323,8 +337,7 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem): return new def save(self, *args, **kwargs): - if not self.pk: - super(Find, self).save(*args, **kwargs) + super(Find, self).save(*args, **kwargs) for base_find in self.base_finds.all(): if not base_find.index: idx = BaseFind.objects.filter(context_record=\ @@ -338,7 +351,6 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem): base_find.material_index = idx and \ idx['material_index__max'] + 1 or 1 base_find.save() - super(Find, self).save(*args, **kwargs) class FindSource(Source): class Meta: @@ -359,6 +371,8 @@ class TreatmentType(GeneralType): ordering = ('label',) class Treatment(BaseHistorizedItem, OwnPerms): + external_id = models.CharField(_(u"External ID"), blank=True, null=True, + max_length=120) if WAREHOUSE_AVAILABLE: container = models.ForeignKey(Container, verbose_name=_(u"Container"), blank=True, null=True) |