summaryrefslogtreecommitdiff
path: root/archaeological_finds/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds/models.py')
-rw-r--r--archaeological_finds/models.py30
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)