src/core/models/notice.py
changeset 0 4095911a7830
child 33 61c3ffd94f11
equal deleted inserted replaced
-1:000000000000 0:4095911a7830
       
     1 # -*- coding: utf-8 -*-
       
     2 '''
       
     3 Created on Jun 8, 2013
       
     4 
       
     5 @author: ymh
       
     6 '''
       
     7 from django.db import models
       
     8 import urlparse
       
     9 from .. import settings
       
    10 
       
    11 from .term import Term
       
    12 
       
    13 # Create your models here.
       
    14 class Notice(models.Model):
       
    15     
       
    16     ref         = models.CharField(max_length=20, null=True, blank=True, unique=True)
       
    17     adpt        = models.TextField(null=True, blank=True)
       
    18     appl        = models.CharField(max_length=1024, null=True, blank=True)
       
    19     aptn        = models.TextField(null=True, blank=True)
       
    20     attr        = models.TextField(null=True, blank=True)
       
    21     autr        = models.CharField(max_length=1024, null=True, blank=True)
       
    22     autr_terms  = models.ManyToManyField(Term, related_name="autr+", limit_choices_to = {'thesaurus__label': 'autr'}, through='AutrNoticeTerm')
       
    23     bibl        = models.TextField(null=True, blank=True)
       
    24     comm        = models.TextField(null=True, blank=True)
       
    25     contact     = models.CharField(max_length=1024, null=True, blank=True)
       
    26     coor        = models.CharField(max_length=1024, null=True, blank=True)
       
    27     copy        = models.CharField(max_length=1024, null=True, blank=True)
       
    28     dacq        = models.CharField(max_length=1024, null=True, blank=True)
       
    29     data        = models.CharField(max_length=512, null=True, blank=True)
       
    30     dation      = models.CharField(max_length=512, null=True, blank=True)
       
    31     ddpt        = models.CharField(max_length=512, null=True, blank=True)
       
    32     decv        = models.CharField(max_length=1024, null=True, blank=True)
       
    33     deno        = models.CharField(max_length=1024, null=True, blank=True)
       
    34     depo        = models.CharField(max_length=1024, null=True, blank=True)
       
    35     desc        = models.TextField(null=True, blank=True)
       
    36     desy        = models.CharField(max_length=512, null=True, blank=True)
       
    37     dims        = models.CharField(max_length=2048, null=True, blank=True)
       
    38     dmaj        = models.DateField(null=True, blank=True)
       
    39     dmis        = models.DateField(null=True, blank=True)
       
    40     domn        = models.CharField(max_length=512, null=True, blank=True)
       
    41     domn_terms  = models.ManyToManyField(Term, related_name="domn+", limit_choices_to = {'thesaurus__label': 'domn'}, through='DomnNoticeTerm') 
       
    42     drep        = models.CharField(max_length=1024, null=True, blank=True)
       
    43     ecol        = models.CharField(max_length=512, null=True, blank=True)
       
    44     ecol_terms  = models.ManyToManyField(Term, related_name="ecol+", limit_choices_to = {'thesaurus__label': 'ecol'}, through='EcolNoticeTerm')
       
    45     epoq        = models.CharField(max_length=512, null=True, blank=True)
       
    46     epoq_terms  = models.ManyToManyField(Term, related_name="epoq+", limit_choices_to = {'thesaurus__label': 'epoq'}, through='EpoqNoticeTerm')
       
    47     etat        = models.TextField(null=True, blank=True)
       
    48     expo        = models.TextField(null=True, blank=True)
       
    49     gene        = models.CharField(max_length=1024, null=True, blank=True) 
       
    50     geohi       = models.CharField(max_length=1024, null=True, blank=True)
       
    51     hist        = models.TextField(null=True, blank=True)
       
    52     image       = models.BooleanField()
       
    53     insc        = models.CharField(max_length=1024, null=True, blank=True)
       
    54     inv         = models.CharField(max_length=2048, null=True, blank=True)
       
    55     label       = models.CharField(max_length=512, null=True, blank=True)
       
    56     labo        = models.CharField(max_length=1024, null=True, blank=True)
       
    57     lieux       = models.CharField(max_length=1024, null=True, blank=True)
       
    58     lieux_terms = models.ManyToManyField(Term, related_name="lieux+", limit_choices_to = {'thesaurus__label': 'lieux'}, through='LieuxNoticeTerm')
       
    59     loca        = models.CharField(max_length=512, null=True, blank=True)
       
    60     loca2       = models.CharField(max_length=512, null=True, blank=True)
       
    61     mill        = models.CharField(max_length=512, null=True, blank=True)
       
    62     milu        = models.CharField(max_length=512, null=True, blank=True)
       
    63     mosa        = models.CharField(max_length=512, null=True, blank=True)
       
    64     msgcom      = models.TextField(null=True, blank=True)
       
    65     museo       = models.CharField(max_length=512, null=True, blank=True)
       
    66     nsda        = models.CharField(max_length=512, null=True, blank=True)
       
    67     onom        = models.TextField(null=True, blank=True)
       
    68     paut        = models.TextField(null=True, blank=True)
       
    69     pdat        = models.TextField(null=True, blank=True)
       
    70     pdec        = models.TextField(null=True, blank=True)
       
    71     peoc        = models.CharField(max_length=512, null=True, blank=True)
       
    72     peri        = models.CharField(max_length=512, null=True, blank=True)
       
    73     peri_terms  = models.ManyToManyField(Term, related_name="peri+", limit_choices_to = {'thesaurus__label': 'peri'}, through='PeriNoticeTerm')
       
    74     peru        = models.CharField(max_length=1024, null=True, blank=True)
       
    75     phot        = models.CharField(max_length=1024, null=True, blank=True)
       
    76     pins        = models.TextField(null=True, blank=True)
       
    77     plieux      = models.TextField(null=True, blank=True)
       
    78     prep        = models.TextField(null=True, blank=True)
       
    79     puti        = models.TextField(null=True, blank=True)
       
    80     reda        = models.CharField(max_length=1024, null=True, blank=True)    
       
    81     refim       = models.CharField(max_length=2048, null=True, blank=True)
       
    82     repr        = models.TextField(null=True, blank=True)
       
    83     repr_terms  = models.ManyToManyField(Term, related_name="repr+", limit_choices_to = {'thesaurus__label': 'repr'}, through='ReprNoticeTerm')
       
    84     srep        = models.CharField(max_length=1024, null=True, blank=True)
       
    85     stat        = models.CharField(max_length=1024, null=True, blank=True)
       
    86     tech        = models.CharField(max_length=2048, null=True, blank=True)
       
    87     tico        = models.TextField(null=True, blank=True)
       
    88     titr        = models.TextField(null=True, blank=True)
       
    89     util        = models.CharField(max_length=1024, null=True, blank=True)
       
    90     video       = models.CharField(max_length=2048, null=True, blank=True)
       
    91     www         = models.CharField(max_length=512, null=True, blank=True)
       
    92 
       
    93     class Meta:
       
    94         app_label = 'core'
       
    95 
       
    96 class NoticeImage(models.Model):
       
    97     relative_url = models.URLField(max_length='1024', null=False, blank=False, unique=True)
       
    98     notice = models.ForeignKey(Notice, related_name="images")
       
    99     
       
   100     class Meta:
       
   101         app_label = 'core'
       
   102 
       
   103     
       
   104     @property
       
   105     def url(self):
       
   106         return urlparse.urljoin(settings.JOCONDE_IMAGE_BASE_URL , self.relative_url)
       
   107 
       
   108 
       
   109 class NoticeTerm(models.Model):
       
   110     
       
   111     notice = models.ForeignKey(Notice)
       
   112     term   = models.ForeignKey(Term)
       
   113     
       
   114     #optionnal rdf graph uri describing the relationship
       
   115     graph  = models.URLField(max_length=2048, null=True, blank=True)
       
   116     
       
   117     class Meta:
       
   118         app_label = 'core'
       
   119 
       
   120 
       
   121 class AutrNoticeTerm(NoticeTerm):
       
   122     class Meta:
       
   123         app_label = 'core'
       
   124         
       
   125 class DomnNoticeTerm(NoticeTerm):
       
   126     class Meta:
       
   127         app_label = 'core'
       
   128         
       
   129 class EcolNoticeTerm(NoticeTerm):
       
   130     class Meta:
       
   131         app_label = 'core'
       
   132         
       
   133 class EpoqNoticeTerm(NoticeTerm):
       
   134     class Meta:
       
   135         app_label = 'core'
       
   136 
       
   137 class LieuxNoticeTerm(NoticeTerm):
       
   138     class Meta:
       
   139         app_label = 'core'
       
   140 
       
   141 class PeriNoticeTerm(NoticeTerm):
       
   142     class Meta:
       
   143         app_label = 'core'
       
   144 
       
   145 class ReprNoticeTerm(NoticeTerm):
       
   146     class Meta:
       
   147         app_label = 'core'