diff options
Diffstat (limited to 'ishtar/furnitures/models.py')
| -rw-r--r-- | ishtar/furnitures/models.py | 56 |
1 files changed, 35 insertions, 21 deletions
diff --git a/ishtar/furnitures/models.py b/ishtar/furnitures/models.py index 9b808f2c7..1dcb920c3 100644 --- a/ishtar/furnitures/models.py +++ b/ishtar/furnitures/models.py @@ -22,6 +22,7 @@ Models description """ import datetime +from django.core.exceptions import ObjectDoesNotExist from django.utils.translation import ugettext_lazy as _ from django.contrib.auth.models import User, UserManager @@ -37,7 +38,7 @@ class GeneralType(models.Model): Abstract class for "types" """ label = models.CharField(_(u"Label"), max_length=100) - comment = models.TextField(_(u"Comment")) + comment = models.TextField(_(u"Comment"), blank=True, null=True) available = models.BooleanField(_(u"Available")) class Meta: @@ -46,18 +47,22 @@ class GeneralType(models.Model): def __unicode__(self): return self.label -class HistorizedItem(models.Model): +class BaseHistorizedItem(models.Model): history_modifier = models.ForeignKey("IshtarUser", related_name='+', verbose_name=_(u"Last modifier")) + def save(self, *args, **kwargs): + try: + self.history_modifier + except ObjectDoesNotExist: + return + super(BaseHistorizedItem, self).save(*args, **kwargs) + return True class Meta: abstract = True -class LightHistorizedItem(models.Model): - history_modifier = models.ForeignKey("IshtarUser", related_name='+', - verbose_name=_(u"Last modifier")) +class LightHistorizedItem(BaseHistorizedItem): history_date = models.DateTimeField(default=datetime.datetime.now) - class Meta: abstract = True @@ -72,7 +77,7 @@ class Departement(models.Model): def __unicode__(self): return unicode(self.number) + u" - " + self.label -class Address(HistorizedItem): +class Address(BaseHistorizedItem): address = models.TextField(_(u"Address")) address_complement = models.TextField(_(u"Address complement")) postal_code = models.CharField(_(u"Postal code"), max_length=10) @@ -117,8 +122,10 @@ class Person(Address) : person_type = models.ForeignKey(PersonType, verbose_name=_(u"Type")) attached_to = models.ForeignKey('Organization', verbose_name=_(u"Is attached to")) - is_author = models.BooleanField(_(u"Is an author?")) - in_charge_storage = models.BooleanField(_(u"In charge of a storage?")) + is_author = models.NullBooleanField(_(u"Is an author?"), blank=True, + null=True) + in_charge_storage = models.NullBooleanField(_(u"In charge of a storage?"), + blank=True, null=True) class Meta: verbose_name = _(u"Person") @@ -149,7 +156,7 @@ if settings.COUNTRY == 'fr': verbose_name = u"Saisine" verbose_name_plural = u"Saisines" -class File(HistorizedItem): +class File(BaseHistorizedItem): year = models.IntegerField(_(u"Year"), default=lambda:datetime.datetime.now().year) internal_reference = models.CharField(_(u"Internal reference"), @@ -173,7 +180,7 @@ class File(HistorizedItem): verbose_name_plural = _(u"Archaeological files") def __unicode__(self): - return u"%d - %d" % (self.year, self.number) + return u"%d - %s" % (self.year, self.internal_reference) class OperationType(GeneralType): @@ -186,7 +193,7 @@ class VestigeType(GeneralType): verbose_name = _(u"Vestige type") verbose_name_plural = _(u"Vestige types") -class Operation(HistorizedItem): +class Operation(BaseHistorizedItem): name = models.CharField(_(u"Name"), max_length=120) start_date = models.DateField(_(u"Start date")) end_date = models.DateField(_(u"End date")) @@ -262,7 +269,7 @@ class Dating(models.Model): verbose_name = _(u"Dating") verbose_name_plural = _(u"Datings") -class RegistrationUnit(HistorizedItem): +class RegistrationUnit(BaseHistorizedItem): parcel = models.ForeignKey(Parcel, verbose_name=_(u"Parcel")) label = models.CharField(_(u"Label"), max_length=200) description = models.TextField(_("Description")) @@ -306,7 +313,7 @@ class MaterialType(GeneralType): verbose_name = _(u"Material type") verbose_name_plural = _(u"Material types") -class BaseItem(HistorizedItem): +class BaseItem(BaseHistorizedItem): label = models.CharField(_(u"Label"), max_length=60) description = models.TextField(_(u"Description")) registration_unit = models.ForeignKey(RegistrationUnit, @@ -322,7 +329,7 @@ class BaseItem(HistorizedItem): def __unicode__(self): return self.label -class Item(HistorizedItem): +class Item(BaseHistorizedItem): base_items = models.ManyToManyField(BaseItem, verbose_name=_(u"Base item")) order = models.IntegerField(_(u"Order")) label = models.CharField(_(u"Label"), max_length=60) @@ -384,13 +391,20 @@ class ActType(GeneralType): verbose_name = _(u"Act type") verbose_name_plural = _(u"Act types") -class AdministrativeAct(HistorizedItem): - operation = models.ForeignKey(Operation, related_name='+', - verbose_name=_(u"Operation")) +class AdministrativeAct(BaseHistorizedItem): + act_type = models.ForeignKey(ActType, verbose_name=_(u"Act type")) + in_charge = models.ForeignKey(Person, blank=True, null=True, + related_name='+', verbose_name=_(u"Person in charge of the operation")) + operator = models.ForeignKey(Organization, blank=True, null=True, + verbose_name=_(u"Archaeological preventive operator")) + scientific = models.ForeignKey(Person, blank=True, null=True, +related_name='+', verbose_name=_(u"Person in charge of the scientific part")) + signataire = models.ForeignKey(Person, blank=True, null=True, + related_name='+', verbose_name=_(u"Signataire")) + operation = models.ForeignKey(Operation, blank=True, null=True, + related_name='+', verbose_name=_(u"Operation")) signature_date = models.DateField(_(u"Signature date")) act_object = models.CharField(_(u"Object"), max_length=200) - act_type = models.ForeignKey(ActType, verbose_name=_(u"Act type")) - person = models.ForeignKey(Person, verbose_name=_(u"Person")) if settings.COUNTRY == 'fr': ref_sra = models.CharField(u"Référence SRA", max_length=15) history = HistoricalRecords() @@ -461,7 +475,7 @@ class TreatmentType(GeneralType): verbose_name = _(u"Treatment type") verbose_name_plural = _(u"Treatment types") -class Treatment(HistorizedItem): +class Treatment(BaseHistorizedItem): container = models.ForeignKey(Container, verbose_name=_(u"Container")) treatment_type = models.ForeignKey(TreatmentType, verbose_name=_(u"Treatment type")) |
