src/core/models/notice.py
changeset 0 4095911a7830
child 33 61c3ffd94f11
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/core/models/notice.py	Sat Jun 15 01:33:28 2013 +0200
@@ -0,0 +1,147 @@
+# -*- coding: utf-8 -*-
+'''
+Created on Jun 8, 2013
+
+@author: ymh
+'''
+from django.db import models
+import urlparse
+from .. import settings
+
+from .term import Term
+
+# Create your models here.
+class Notice(models.Model):
+    
+    ref         = models.CharField(max_length=20, null=True, blank=True, unique=True)
+    adpt        = models.TextField(null=True, blank=True)
+    appl        = models.CharField(max_length=1024, null=True, blank=True)
+    aptn        = models.TextField(null=True, blank=True)
+    attr        = models.TextField(null=True, blank=True)
+    autr        = models.CharField(max_length=1024, null=True, blank=True)
+    autr_terms  = models.ManyToManyField(Term, related_name="autr+", limit_choices_to = {'thesaurus__label': 'autr'}, through='AutrNoticeTerm')
+    bibl        = models.TextField(null=True, blank=True)
+    comm        = models.TextField(null=True, blank=True)
+    contact     = models.CharField(max_length=1024, null=True, blank=True)
+    coor        = models.CharField(max_length=1024, null=True, blank=True)
+    copy        = models.CharField(max_length=1024, null=True, blank=True)
+    dacq        = models.CharField(max_length=1024, null=True, blank=True)
+    data        = models.CharField(max_length=512, null=True, blank=True)
+    dation      = models.CharField(max_length=512, null=True, blank=True)
+    ddpt        = models.CharField(max_length=512, null=True, blank=True)
+    decv        = models.CharField(max_length=1024, null=True, blank=True)
+    deno        = models.CharField(max_length=1024, null=True, blank=True)
+    depo        = models.CharField(max_length=1024, null=True, blank=True)
+    desc        = models.TextField(null=True, blank=True)
+    desy        = models.CharField(max_length=512, null=True, blank=True)
+    dims        = models.CharField(max_length=2048, null=True, blank=True)
+    dmaj        = models.DateField(null=True, blank=True)
+    dmis        = models.DateField(null=True, blank=True)
+    domn        = models.CharField(max_length=512, null=True, blank=True)
+    domn_terms  = models.ManyToManyField(Term, related_name="domn+", limit_choices_to = {'thesaurus__label': 'domn'}, through='DomnNoticeTerm') 
+    drep        = models.CharField(max_length=1024, null=True, blank=True)
+    ecol        = models.CharField(max_length=512, null=True, blank=True)
+    ecol_terms  = models.ManyToManyField(Term, related_name="ecol+", limit_choices_to = {'thesaurus__label': 'ecol'}, through='EcolNoticeTerm')
+    epoq        = models.CharField(max_length=512, null=True, blank=True)
+    epoq_terms  = models.ManyToManyField(Term, related_name="epoq+", limit_choices_to = {'thesaurus__label': 'epoq'}, through='EpoqNoticeTerm')
+    etat        = models.TextField(null=True, blank=True)
+    expo        = models.TextField(null=True, blank=True)
+    gene        = models.CharField(max_length=1024, null=True, blank=True) 
+    geohi       = models.CharField(max_length=1024, null=True, blank=True)
+    hist        = models.TextField(null=True, blank=True)
+    image       = models.BooleanField()
+    insc        = models.CharField(max_length=1024, null=True, blank=True)
+    inv         = models.CharField(max_length=2048, null=True, blank=True)
+    label       = models.CharField(max_length=512, null=True, blank=True)
+    labo        = models.CharField(max_length=1024, null=True, blank=True)
+    lieux       = models.CharField(max_length=1024, null=True, blank=True)
+    lieux_terms = models.ManyToManyField(Term, related_name="lieux+", limit_choices_to = {'thesaurus__label': 'lieux'}, through='LieuxNoticeTerm')
+    loca        = models.CharField(max_length=512, null=True, blank=True)
+    loca2       = models.CharField(max_length=512, null=True, blank=True)
+    mill        = models.CharField(max_length=512, null=True, blank=True)
+    milu        = models.CharField(max_length=512, null=True, blank=True)
+    mosa        = models.CharField(max_length=512, null=True, blank=True)
+    msgcom      = models.TextField(null=True, blank=True)
+    museo       = models.CharField(max_length=512, null=True, blank=True)
+    nsda        = models.CharField(max_length=512, null=True, blank=True)
+    onom        = models.TextField(null=True, blank=True)
+    paut        = models.TextField(null=True, blank=True)
+    pdat        = models.TextField(null=True, blank=True)
+    pdec        = models.TextField(null=True, blank=True)
+    peoc        = models.CharField(max_length=512, null=True, blank=True)
+    peri        = models.CharField(max_length=512, null=True, blank=True)
+    peri_terms  = models.ManyToManyField(Term, related_name="peri+", limit_choices_to = {'thesaurus__label': 'peri'}, through='PeriNoticeTerm')
+    peru        = models.CharField(max_length=1024, null=True, blank=True)
+    phot        = models.CharField(max_length=1024, null=True, blank=True)
+    pins        = models.TextField(null=True, blank=True)
+    plieux      = models.TextField(null=True, blank=True)
+    prep        = models.TextField(null=True, blank=True)
+    puti        = models.TextField(null=True, blank=True)
+    reda        = models.CharField(max_length=1024, null=True, blank=True)    
+    refim       = models.CharField(max_length=2048, null=True, blank=True)
+    repr        = models.TextField(null=True, blank=True)
+    repr_terms  = models.ManyToManyField(Term, related_name="repr+", limit_choices_to = {'thesaurus__label': 'repr'}, through='ReprNoticeTerm')
+    srep        = models.CharField(max_length=1024, null=True, blank=True)
+    stat        = models.CharField(max_length=1024, null=True, blank=True)
+    tech        = models.CharField(max_length=2048, null=True, blank=True)
+    tico        = models.TextField(null=True, blank=True)
+    titr        = models.TextField(null=True, blank=True)
+    util        = models.CharField(max_length=1024, null=True, blank=True)
+    video       = models.CharField(max_length=2048, null=True, blank=True)
+    www         = models.CharField(max_length=512, null=True, blank=True)
+
+    class Meta:
+        app_label = 'core'
+
+class NoticeImage(models.Model):
+    relative_url = models.URLField(max_length='1024', null=False, blank=False, unique=True)
+    notice = models.ForeignKey(Notice, related_name="images")
+    
+    class Meta:
+        app_label = 'core'
+
+    
+    @property
+    def url(self):
+        return urlparse.urljoin(settings.JOCONDE_IMAGE_BASE_URL , self.relative_url)
+
+
+class NoticeTerm(models.Model):
+    
+    notice = models.ForeignKey(Notice)
+    term   = models.ForeignKey(Term)
+    
+    #optionnal rdf graph uri describing the relationship
+    graph  = models.URLField(max_length=2048, null=True, blank=True)
+    
+    class Meta:
+        app_label = 'core'
+
+
+class AutrNoticeTerm(NoticeTerm):
+    class Meta:
+        app_label = 'core'
+        
+class DomnNoticeTerm(NoticeTerm):
+    class Meta:
+        app_label = 'core'
+        
+class EcolNoticeTerm(NoticeTerm):
+    class Meta:
+        app_label = 'core'
+        
+class EpoqNoticeTerm(NoticeTerm):
+    class Meta:
+        app_label = 'core'
+
+class LieuxNoticeTerm(NoticeTerm):
+    class Meta:
+        app_label = 'core'
+
+class PeriNoticeTerm(NoticeTerm):
+    class Meta:
+        app_label = 'core'
+
+class ReprNoticeTerm(NoticeTerm):
+    class Meta:
+        app_label = 'core'