diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2010-12-08 23:47:28 +0100 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2010-12-24 17:39:02 +0100 |
| commit | 407498312efdfe706df6d135c22b19345bf22576 (patch) | |
| tree | e30210b9e6dca8b0edb80c5b64e2abf43afe02a8 | |
| parent | f86a4c422efbd8846fdf3823e10918298927d613 (diff) | |
| download | Ishtar-407498312efdfe706df6d135c22b19345bf22576.tar.bz2 Ishtar-407498312efdfe706df6d135c22b19345bf22576.zip | |
Defining the model (refs #13)
| -rw-r--r-- | ishtar/furnitures/models.py | 504 | ||||
| -rw-r--r-- | ishtar/settings.py.example | 12 |
2 files changed, 217 insertions, 299 deletions
diff --git a/ishtar/furnitures/models.py b/ishtar/furnitures/models.py index 3c5a2d30e..5e51c8959 100644 --- a/ishtar/furnitures/models.py +++ b/ishtar/furnitures/models.py @@ -23,6 +23,7 @@ Models description from django.utils.translation import ugettext_lazy as _ +from django.contrib.auth.models import User, UserManager from django.contrib.gis.db import models from django.contrib import admin @@ -30,16 +31,42 @@ from simple_history.models import HistoricalRecords from ishtar import settings - - -class PersonType(models.Model): +class GeneralType(models.Model): + """ + Abstract class for "types" + """ label = models.CharField(_(u"Label"), max_length=30) comment = models.TextField(_(u"Comment")) + class Meta: + abstract = True + def __unicode__(self): return self.label -class Person(models.Model) : +class Departement(models.Model): + label = models.CharField(_(u"Label"), max_length=30) + number = models.IntegerField(_(u"Number")) + + def __unicode__(self): + return self.number + u" - " + self.label + +class Address(models.Model): + address = models.TextField(_(u"Address")) + address_complement = models.TextField(_(u"Address complement")) + postal_code = models.CharField(_(u"Postal code"), max_length=10) + town = models.CharField(_(u"Town"), max_length=30) + country = models.CharField(_(u"Country"), max_length=30) + phone = models.CharField(_(u"Phone"), max_length=18) + mobile_phone = models.CharField(_(u"Mobile phone"), max_length=18) + + class Meta: + abstract = True + +class PersonType(GeneralType): + pass + +class Person(Address) : TYPE = (('Mr', _(u'Mr')), ('Ms', _(u'Miss')), ('Md', _(u'Mrs')), @@ -48,68 +75,62 @@ class Person(models.Model) : title = models.CharField(_(u"Title"), max_length=1, choices=TYPE) surname = models.CharField(_(u"Surname"), max_length=20) name = models.CharField(_(u"Name"), max_length=30) - address = models.TextField(_(u"Address")) - address_complement = models.TextField(_(u"Address complement")) - postal_code = models.CharField(_(u"Postal code"), max_length=10) - town = models.CharField(_(u"Town"), max_length=30) - country = models.CharField(_(u"Country"), max_length=30) - phone = models.CharField(_(u"Phone"), max_length=18) - mobile_phone = models.CharField(_(u"Mobile phone"), max_length=18) email = models.CharField(_(u"Email"), max_length=40) person_type = models.ForeignKey(PersonType, verbose_name=_(u"Type")) attached_to = models.ForeignKey('Person', verbose_name=_(u"Is attached to")) - author = models.BooleanField(_(u"Author")) - in_charge_storage = models.BooleanField(_(u"In charge of a storage")) + is_author = models.BooleanField(_(u"Is an author?")) + in_charge_storage = models.BooleanField(_(u"In charge of a storage?")) def __unicode__(self): return u"%s %s" % (self.name, self.surname) +class IshtarUser(models.Model): + user = models.ForeignKey(User, unique=True, related_name='profile', + verbose_name=_(u"User")) + person = models.ForeignKey(Person, verbose_name=_(u"Person")) + # MULTIPASS = models.IntegerField() ????? -class FileType(models.Model): - label = models.CharField(_(u"Label"), max_length=30) - comment = models.TextField(_(u"Comment")) - - def __unicode__(self): - return self.label +class FileType(GeneralType): + pass class File(models.Model) : year = models.IntegerField(_(u"Year")) number = models.IntegerField(_(u"Number")) - active = models.BooleanField(_(u"Active")) + is_active = models.BooleanField(_(u"Is active?")) reception_date = models.DateField(_(u'Reception date')) - creation_date = models.DateField(_(u"Creation date")) - modification_date = models.DateField(_(u"Modification date")) - folder_type = models.ForeignKey(FileType, verbose_name=_(u"File type")) - creator = models.ForeignKey(Person, verbose_name=(u"Creator")) - general_contractor = models.ForeignKey(Person, + file_type = models.ForeignKey(FileType, verbose_name=_(u"File type")) + general_contractor = models.ForeignKey(Person, related_name='+', verbose_name=(u"General contractor")) + last_modifier = models.ForeignKey(Person, related_name='+', + verbose_name=(u"Last modifier")) + towns = models.ManyToManyField("Town") if settings.COUNTRY == 'fr': ar_date = models.DateField(u"Date d'envoi du courrier \ avec accusé réception") - ar_signed_by = models.ForeignKey(Person, verbose_name=u"Signature de \ -l'accusé de réception par") + ar_signed_by = models.ForeignKey(Person, related_name='+', + verbose_name=u"Signature de l'accusé de réception par") history = HistoricalRecords() def __unicode__(self): return u"%d - %d" % (self.year, self.number) -class HistoryFile(models.Model): - person = models.ForeignKey('Person', verbose_name=_(u"Person")) - modif_date = models.DateField(_(u'Modification date')) - folder = models.ForeignKey(File, u"File") - def __unicode__(self): - return self.person + " - " + self.modif_date +class OperationType(GeneralType): + pass class Operation(models.Model): start_date = models.DateField(_(u"Start date")) end_date = models.DateField(_(u"End date")) - name = models.CharField(_(u"Name")) - in_charge = models.ForeignKey('Person', verbose_name=_(u"In charge")) - operation_code = models.CharField(_(u"Operation code"), ) - DOSSIER = models.CharField('VIDE'::character varying) - TYPE = models.IntegerField('VIDE'::character varying) + name = models.CharField(_(u"Name"), max_length=120) + in_charge = models.ForeignKey('Person', related_name='+', + verbose_name=_(u"In charge")) + operation_code = models.CharField(_(u"Operation code"), max_length=20) + associated_file = models.ForeignKey(File, related_name='+', + verbose_name=_(u"File")) + operation_type = models.ForeignKey(OperationType, related_name='+', + verbose_name=_(u"Operation type")) + towns = models.ManyToManyField("Town") if settings.COUNTRY == 'fr': code_patriarche = models.IntegerField(u"Code PATRIARCHE") code_pat = models.CharField(u"Code PAT", max_length=10) @@ -120,300 +141,197 @@ class Operation(models.Model): class Parcel(models.Model) : - operation = models.ForeignKey(Operation, verbose_name=_(u"Operation")) - SECTION = models.CharField() - NUM_PARCELLE = models.CharField() - - def __unicode__(self): - return u"" - - -class UA(models.Model): - parcel = models.ForeignKey(Parcel, verbose_name=_(u"Parcel")) - OPERATION_ID_OPERATION = models.IntegerField() - LABEL = models.CharField() - DESCRO_UA = models.CharField() - LONGUEUR = models.IntegerField() - LARGEUR = models.IntegerField() - EPAISSEUR = models.IntegerField() - PRESENCE_MOB = models.IntegerField() - INTERPRETATION = models.CharField() - PROFONDEUR = models.IntegerField() - REMPLISSAGE = models.CharField() - - def __unicode__(self): - return u"" - - -class DOC_ITEM(models.Model) : - SOURCES_ID_SOURCE = models.IntegerField('0'::character(1)) - ITEM_ID_ITEM = models.IntegerField('0'::character(1)) + operation = models.ForeignKey(Operation, related_name='+', + verbose_name=_(u"Operation")) + section = models.CharField(_(u"Section"), max_length=4) + parcel_number = models.CharField(_(u"Parcel number"), max_length=6) def __unicode__(self): - return u"" + return u" - ".join([unicode(item) for item in \ + [self.operation, self.section, self.parcel_number]]) - -class UA_DATATION(models.Model) : - ID_UA_DATATION = models.IntegerField() - UA_ID_UA = models.IntegerField() - DATATION_ID_DATATION = models.IntegerField() - QUALITE = models.CharField() - - def __unicode__(self): - return u"" - - - -class ITEM(models.Model) : - ID_ITEM = models.IntegerField() - UA_ID_UA = models.IntegerField() - DESCRO_ITEM = models.CharField() - TYPO_MATERIAU_ID_TYPO_MATERIAU = models.IntegerField() - DATATION_DEB = models.IntegerField() - DATATION_FIN = models.IntegerField() - ISOLATION = models.IntegerField() - VOLUME_ITEM = models.FloatField() - POIDS_ITEM = models.IntegerField() - LABEL_ITEM = models.CharField() - NB_ITEM = models.IntegerField() +class Period(GeneralType) : + order = models.IntegerField(_(u"Order")) + start_date = models.IntegerField(_(u"Start date")) + end_date = models.IntegerField(_(u"End date")) + parent = models.ForeignKey("Period", verbose_name=_(u"Parent period")) def __unicode__(self): - return u"" - - -class CHRONO(models.Model) : - ID_CHRONO = models.IntegerField() - ORDRE = models.IntegerField() - LABEL = models.CharField() - ANNEE_DEBUT = models.IntegerField() - ANNEE_FIN = models.IntegerField() - - def __unicode__(self): - return u"" - - -class USERS(models.Model) : - ID_USERS = models.IntegerField() - LOGIN = models.CharField() - PASS = models.CharField() - MULTIPASS = models.IntegerField() - PERSONNE_ID_PERSONNE = models.IntegerField() - - def __unicode__(self): - return u"" - - -class PROP_FONC(models.Model) : - ID_PROP_FONC = models.IntegerField() - PERSONNE_ID_PERSONNE = models.IntegerField() - PARCELLE_ID_PARCELLE = models.IntegerField() - DATE_DEBUT = models.DateField() - DATE_FIN = models.DateField() - - def __unicode__(self): - return u"" - - -class OPE_DEPT(models.Model) : - ID_OPE_DEPT = models.IntegerField() - OPERATION_ID_OPERATION = models.IntegerField() - DEPT_ID_DEPT = models.IntegerField() - - def __unicode__(self): - return u"" - - -class LIEU(models.Model) : - ID_LIEU = models.IntegerField() - ADRESSE_ID_PERSONNE = models.IntegerField() - TYPE_DEPOT_ID_TYPE_DEPOT = models.IntegerField() - COMMENTAIRE = models.CharField() - RESP_ID_PERSONNE = models.IntegerField() - - def __unicode__(self): - return u"" - - - -class TYPE_ACTE(models.Model) : - ID_TYPE_ACTE = models.IntegerField() - TYPE = models.CharField() - - def __unicode__(self): - return u"" - - - -class ACTE_ADMIN(models.Model) : - ID_ACTE = models.IntegerField() - OPERATION_ID_OPERATION = models.IntegerField() - REF_SRA = models.CharField() - DATE_SIGNATURE = models.DateField() - OBJET = models.CharField() - TYPE_ACTE = models.CharField() - PERSONNE_ID_PERSONNE = models.IntegerField() - - def __unicode__(self): - return u"" - - - -class TYPE_CONT(models.Model) : - ID_TYPE_CONT = models.IntegerField() - LABEL_CONT = models.CharField() - LONG_CONT = models.IntegerField() - LARG_CONT = models.IntegerField() - HAUTEUR_CONT = models.IntegerField() - REF_CONT = models.CharField() - VOLUME_CONT = models.IntegerField() - - def __unicode__(self): - return u"" - - -class DEPT(models.Model) : - ID_DEPT = models.IntegerField() - NOM_DEPT = models.CharField() - NUM_DEPT = models.CharField('0'::character(1)) - - def __unicode__(self): - return u"" - - -class TYPE_OPE(models.Model) : - ID_TYPE_OPE = models.IntegerField() - TYPE = models.CharField() - - def __unicode__(self): - return u"" - - -class COMMUNES(models.Model) : - ID_COMMUNES = models.IntegerField() - DEPT_ID_DEPT = models.IntegerField() - NUM_INSEE = models.CharField() - NOM = models.CharField() - ARRDT = models.CharField() - CANTON = models.CharField() - X_CENTR = models.IntegerField() - Y_CENTR = models.IntegerField() - SUPERFICIE = models.IntegerField() - - def __unicode__(self): - return u"" - + return self.label -class SOURCES(models.Model) : - ID_SOURCE = models.IntegerField() - TITRE = models.CharField() - TYPE = models.CharField() +class DatingType(GeneralType): + pass - def __unicode__(self): - return u"" +class DatingQuality(GeneralType): + pass +class Dating(models.Model): + period = models.ForeignKey(Period, verbose_name=_(u"Period")) + start_date = models.IntegerField(_(u"Start date")) + end_date = models.IntegerField(_(u"End date")) + dating_type = models.ForeignKey(DatingType, verbose_name=_(u"Dating type")) + quality = models.ForeignKey(DatingQuality, verbose_name=_(u"Quality")) -class TYPE_DEPOT(models.Model) : - ID_TYPE_DEPOT = models.IntegerField() - LABEL_TYPE = models.CharField() +class RegistrationUnit(models.Model): + parcel = models.ForeignKey(Parcel, verbose_name=_(u"Parcel")) + #operation = models.ForeignKey(Operation, verbose_name=_(u"Operation")) ???? + label = models.CharField(_(u"Label"), max_length=200) + description = models.TextField(_("Description")) + lenght = models.IntegerField(_(u"Lenght")) + width = models.IntegerField(_(u"Width")) + thickness = models.IntegerField(_(u"Thickness")) + has_furniture = models.BooleanField(u"Has furniture?") + interpretation = models.TextField(_(u"Interpretation")) + depth = models.IntegerField(_(u"Depth")) + filling = models.TextField(_(u"Filling")) + datings = models.ManyToManyField(Dating) + + def __unicode__(self): + return u"%s - %s" % (self.parcel, self.label) + +class SourceType(GeneralType): + pass + +class Source(models.Model) : + title = models.CharField(_(u"Title"), max_length=200) + source_type = models.ForeignKey(SourceType, verbose_name=_(u"Type")) + + def __unicode__(self): + return self.title + +class MaterialType(GeneralType): + recommendation = models.TextField(_(u"Recommendation")) + +class Item(models.Model): + label = models.CharField(_(u"Label"), max_length=60) + description = models.TextField(_(u"Description")) + registration_unit = models.ForeignKey(RegistrationUnit, + verbose_name=_(u"Registration Unit")) + material_type = models.ForeignKey(MaterialType, + verbose_name = _(u"Material type")) + dating = models.ForeignKey(Dating, verbose_name=_(u"Dating")) + is_isolated = models.BooleanField(_(u"Is isolated?")) + volume = models.FloatField(_(u"Volume")) + weight = models.IntegerField(_(u"Weight")) + item_number = models.IntegerField(_("Item's number")) + documentations = models.ManyToManyField(Source) + treatments = models.ManyToManyField("Treatment") + datings = models.ManyToManyField("Dating") def __unicode__(self): - return u"" - + return self.label -class RESPONSABILITE(models.Model) : - TRAITEMENT_ID_TRAITEMENT = models.IntegerField() - LIEU_ID_LIEU = models.IntegerField() - PERSONNE_ID_PERSONNE = models.IntegerField() - DATE_DEBUT = models.DateField() - DATE_FIN = models.DateField() +class ParcelOwner(models.Model): + owner = models.ForeignKey(Person, verbose_name=_(u"Owner")) + parcel = models.ForeignKey(Parcel, verbose_name=_(u"Parcel")) + start_date = models.DateField(_(u"Start date")) + end_date = models.DateField(_(u"End date")) def __unicode__(self): - return u"" + return self.owner + u" - " + self.parcel +class WarehouseType(GeneralType): + pass -class OPE_COM(models.Model) : - ID_OPE_COM = models.IntegerField() - OPERATION_ID_OPERATION = models.IntegerField() - COMMUNES_ID_COMMUNES = models.IntegerField() +class Warehouse(Address): + warehouse_type = models.ForeignKey(WarehouseType, + verbose_name=_(u"Warehouse type")) + person_in_charge = models.ForeignKey(Person, + verbose_name=_(u"Person in charge")) + comment = models.TextField(_(u"Comment")) + towns = models.ManyToManyField("Town") def __unicode__(self): - return u"" + return self.warehouse_type +class FactType(GeneralType): + pass -class RE_ENREG(models.Model) : - TRAITEMENT_ID_TRAITEMENT = models.IntegerField() - ITEM_ID_ITEM = models.IntegerField() +class AdministrativeFact(models.Model): + operation = models.ForeignKey(Operation, related_name='+', + verbose_name=_(u"Operation")) + signature_date = models.DateField(_(u"Signature date")) + fact_object = models.CharField(_(u"Object"), max_length=200) + fact_type = models.ForeignKey(FactType, verbose_name=_(u"Fact 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) def __unicode__(self): - return u"" + return self.operation + u" - " + self.fact_object +class ContainerType(GeneralType): + lenght = models.IntegerField(_(u"Lenght")) + width = models.IntegerField(_(u"Width")) + height = models.IntegerField(_(u"Height")) + volume = models.IntegerField(_(u"Volume")) + reference = models.CharField(_(u"Reference"), max_length=15) -class TRAITEMENT(models.Model) : - ID_TRAITEMENT = models.IntegerField() - CONT_ID_CONT = models.IntegerField() - ITEM_ID_ITEM = models.IntegerField() - - def __unicode__(self): - return u"" - +class Container(models.Model): + location = models.ForeignKey(Warehouse, verbose_name=_(u"Location")) + container_type = models.ForeignKey(ContainerType, + verbose_name=_("Container type")) + comment = models.TextField(_(u"Comment")) -class DOSSIER_COM(models.Model) : - ID_DOSSIER_COM = models.IntegerField() - DOSSIER_ID_DOSSIER = models.IntegerField() - COMMUNES_ID_COMMUNES = models.IntegerField() +if settings.COUNTRY == 'fr': + class Arrondissement(models.Model): + name = models.CharField(u"Nom", max_length=30) + department = models.ForeignKey(Departement, verbose_name=u"Département") + class Canton(models.Model): + name = models.CharField(u"Nom", max_length=30) + arrondissement = models.ForeignKey(Arrondissement, + verbose_name=u"Arrondissement") def __unicode__(self): - return u"" - + return self.label -class AUTEUR(models.Model) : - ID_AUTEUR = models.IntegerField() - PERSONNE_ID_PERSONNE = models.IntegerField() - SOURCES_ID_SOURCE = models.IntegerField() - TYPE = models.CharField() +class Town(models.Model): + name = models.CharField(_(u"Name"), max_length=100) + surface = models.IntegerField(_(u"Surface")) + center = PointField(_(u"Localisation"), srid=settings.SRID) + if settings.COUNTRY == 'fr': + numero_insee = models.CharField(u"Numéro INSEE", max_length=5) + canton = models.ForeignKey(Canton, verbose_name=u"Canton") + objects = models.GeoManager() def __unicode__(self): - return u"" - + return self.name -class TYPO_MATERIAU(models.Model) : - ID_TYPO_MATERIAU = models.IntegerField() - LABEL = models.CharField() - RECOMMANDATION = models.CharField() +class Treatment(models.Model): + container = models.ForeignKey(Container, verbose_name=_(u"Container")) + order = models.IntegerField(_(u"Order")) + resulting_items = models.ManyToManyField(Item, + verbose_name=_(u"Resulting items")) def __unicode__(self): - return u"" + return self.item +class InCharge(models.Model): + treatment = models.ForeignKey(Treatment, verbose_name=_(u"Treatment")) + location = models.ForeignKey(Warehouse, verbose_name=_(u"Location")) + person = models.ForeignKey(Person, verbose_name=_(u'Person')) + start_date = models.DateField(_(u"Start date")) + end_date = models.DateField(_(u"End date")) -class PROPRIETE(models.Model) : - ITEM_ID_ITEM = models.IntegerField('0'::character varying) - ACTE_ADMIN_ID_ACTE = models.IntegerField('0'::character varying) - PERSONNE_ID_PERSONNE = models.IntegerField('0'::character varying) - DATE_DEBUT = models.DateField('0'::character varying) - DATE_FIN = models.DateField('0'::character varying) - - def __unicode__(self): - return u"" - +class AuthorType(GeneralType): + pass -class ITEM_DATATION(models.Model) : - ID_ITEM_DATATION = models.IntegerField() - ITEM_ID_ITEM = models.IntegerField() - DATATION_ID_DATATION = models.IntegerField() - QUALITE = models.CharField() +class Author(models.Model): + person = models.ForeignKey(Person, verbose_name=_(u"Person")) + source = models.ForeignKey(Source, verbose_name=_(u"Source")) + author_type = models.ForeignKey(AuthorType, verbose_name=_(u"Author type")) def __unicode__(self): - return u"" - - - + return self.person + u" - " + self.source -class DEPOT_COMMUNES(models.Model) : - ID_DEPOT_COMMUNE = models.IntegerField() - LIEU_ID_LIEU = models.IntegerField() - COMMUNES_ID_COMMUNES = models.IntegerField() +class Property(models.Model): + item = models.ForeignKey(Item, verbose_name=_(u"Item")) + administrative_fact = models.ForeignKey(AdministrativeFact, + verbose_name=_(u"Administrative fact")) + person = models.ForeignKey(Person, verbose_name=_(u"Person")) + start_date = models.DateField(_(u"Start date")) + end_date = models.DateField(_(u"End date")) def __unicode__(self): - return u"" - + return self.person + u" - " + self.item diff --git a/ishtar/settings.py.example b/ishtar/settings.py.example index 259a9f82d..46d4f58b2 100644 --- a/ishtar/settings.py.example +++ b/ishtar/settings.py.example @@ -11,10 +11,10 @@ MANAGERS = ADMINS DATABASES = { 'default': { - 'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. - 'NAME': '', # Or path to database file if using sqlite3. - 'USER': '', # Not used with sqlite3. - 'PASSWORD': '', # Not used with sqlite3. + 'ENGINE': 'django.contrib.gis.db.backends.postgis', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. + 'NAME': 'ishtar', # Or path to database file if using sqlite3. + 'USER': 'user', # Not used with sqlite3. + 'PASSWORD': 'pass', # Not used with sqlite3. 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '', # Set to empty string for default. Not used with sqlite3. } @@ -91,8 +91,8 @@ INSTALLED_APPS = ( 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', - # Uncomment the next line to enable the admin: - # 'django.contrib.admin', + 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', + 'furnitures' ) |
