diff -r 000000000000 -r 4095911a7830 src/core/models/notice.py --- /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'