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