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