src/core/models/notice.py
author ymh <ymh.work@gmail.com>
Sat, 15 Jun 2013 01:33:28 +0200
changeset 0 4095911a7830
child 33 61c3ffd94f11
permissions -rw-r--r--
Jocondelab first commit before design

# -*- 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'