diff options
| -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'  ) | 
