mise-en-production
[auf_framonde.git] / project / framonde / models.py
CommitLineData
01b54c21
MN
1# -*- encoding: utf-8 -*
2from django import forms
3from django.db import models
4
6837e829 5
01b54c21 6class Communication(models.Model):
6837e829
PH
7 region = models.CharField(
8 max_length=1,
9 null=False,
10 default='3',
11 blank=False,
12 choices=(
13 ('1',
14 'Afrique Centrale et des Grands-Lacs'),
15 ('2',
16 'Afrique de l\'ouest'),
17 ('3',
18 'Amériques'),
19 ('4',
20 'Asie-Pacifique'),
21 ('3',
22 'Caraïbe'),
23 ('4',
24 'Europe centrale et orientale'),
25 ('3',
26 'Moyen-Orient'),
27 ('4',
28 'Océan Indien'),
29 ('3',
30 'Maghreb'),
31 ('4',
32 'Europe de l\'Ouest')))
33 status = models.CharField(
34 max_length=1,
35 null=False,
36 default='3',
37 blank=False,
38 choices=(
39 ('1',
40 'En cours de redaction'),
41 ('2',
42 'Propose a la publication'),
43 ('3',
44 'Publie en Ligne'),
45 ('4',
46 'A supprimer')))
01b54c21
MN
47 titre = models.CharField(max_length=200)
48 sous_titre = models.CharField(max_length=300, null=True, blank=True,)
49 lieu = models.CharField(max_length=300)
50 slug = models.SlugField(unique=True)
51 texte = models.TextField()
52 image = models.ImageField(null=True, blank=True, upload_to='communication')
53 date_pub = models.DateField('date de publication')
54 date_limite = models.DateField('date limite')
6837e829
PH
55 date_event = models.DateField('date de l\'événement')
56 date_mod = models.DateTimeField(
57 'date de derniere modification',
58 auto_now_add=True)
59
01b54c21
MN
60 class Meta:
61 ordering = ('-date_pub',)
6837e829 62
01b54c21 63 def __unicode__(self):
6837e829 64 return self.titre
01b54c21
MN
65
66 def get_absolute_url(self):
6837e829
PH
67 return "/appels-communications/%s/" % self.slug
68
01b54c21
MN
69
70class Contribution(models.Model):
6837e829
PH
71 region = models.CharField(
72 max_length=1,
73 null=False,
74 default='3',
75 blank=False,
76 choices=(
77 ('1',
78 'Afrique Centrale et des Grands-Lacs'),
79 ('2',
80 'Afrique de l\'ouest'),
81 ('3',
82 'Amériques'),
83 ('4',
84 'Asie-Pacifique'),
85 ('3',
86 'Caraïbe'),
87 ('4',
88 'Europe centrale et orientale'),
89 ('3',
90 'Moyen-Orient'),
91 ('4',
92 'Océan Indien'),
93 ('3',
94 'Maghreb'),
95 ('4',
96 'Europe de l\'Ouest')))
97 status = models.CharField(
98 max_length=1,
99 null=False,
100 default='3',
101 blank=False,
102 choices=(
103 ('1',
104 'En cours de redaction'),
105 ('2',
106 'Propose a la publication'),
107 ('3',
108 'Publie en Ligne'),
109 ('4',
110 'A supprimer')))
01b54c21
MN
111 titre = models.CharField(max_length=200)
112 sous_titre = models.CharField(max_length=300, null=True, blank=True,)
113 lieu = models.CharField(max_length=300)
114 slug = models.SlugField(unique=True)
115 texte = models.TextField()
116 image = models.ImageField(null=True, blank=True, upload_to='contribution')
117 date_pub = models.DateField('date de publication')
118 date_limite = models.DateField('date limite')
6837e829
PH
119 date_event = models.DateField('date de l\'événement')
120 date_mod = models.DateTimeField(
121 'date de derniere modification',
122 auto_now_add=True)
123
01b54c21
MN
124 class Meta:
125 ordering = ('-date_pub',)
6837e829 126
01b54c21 127 def __unicode__(self):
6837e829 128 return self.titre
01b54c21
MN
129
130 def get_absolute_url(self):
6837e829
PH
131 return "/appels-contributions/%s/" % self.slug
132
01b54c21
MN
133
134class Offre(models.Model):
6837e829
PH
135 region = models.CharField(
136 max_length=1,
137 null=False,
138 default='3',
139 blank=False,
140 choices=(
141 ('1',
142 'Afrique Centrale et des Grands-Lacs'),
143 ('2',
144 'Afrique de l\'ouest'),
145 ('3',
146 'Amériques'),
147 ('4',
148 'Asie-Pacifique'),
149 ('3',
150 'Caraïbe'),
151 ('4',
152 'Europe centrale et orientale'),
153 ('3',
154 'Moyen-Orient'),
155 ('4',
156 'Océan Indien'),
157 ('3',
158 'Maghreb'),
159 ('4',
160 'Europe de l\'Ouest')))
161 status = models.CharField(
162 max_length=1,
163 null=False,
164 default='3',
165 blank=False,
166 choices=(
167 ('1',
168 'En cours de redaction'),
169 ('2',
170 'Propose a la publication'),
171 ('3',
172 'Publie en Ligne'),
173 ('4',
174 'A supprimer')))
01b54c21
MN
175 titre = models.CharField(max_length=200)
176 sous_titre = models.CharField(max_length=300, null=True, blank=True,)
177 lieu = models.CharField(max_length=300)
178 slug = models.SlugField(unique=True)
179 texte = models.TextField()
180 image = models.ImageField(null=True, blank=True, upload_to='offres')
181 date_pub = models.DateField('date de publication')
2e4710d8 182 date_limite = models.DateField('date limite', blank=True, upload_to='offres')
6837e829
PH
183 date_event = models.DateField('date de l\'événement')
184 date_mod = models.DateTimeField(
185 'date de derniere modification',
186 auto_now_add=True)
187
01b54c21
MN
188 class Meta:
189 ordering = ('-date_pub',)
6837e829 190
01b54c21 191 def __unicode__(self):
6837e829 192 return self.titre
01b54c21
MN
193
194 def get_absolute_url(self):
6837e829
PH
195 return "/appels-offres/%s/" % self.slug
196
01b54c21
MN
197
198class Archive(models.Model):
6837e829
PH
199 status = models.CharField(
200 max_length=1,
201 null=False,
202 default='3',
203 blank=False,
204 choices=(
205 ('1',
206 'En cours de redaction'),
207 ('2',
208 'Propose a la publication'),
209 ('3',
210 'Publie en Ligne'),
211 ('4',
212 'A supprimer')))
01b54c21
MN
213 numero = models.IntegerField(null=False, unique=True)
214 titre = models.CharField(max_length=200)
215 texte = models.TextField()
216 fichier = models.FileField(upload_to='archives')
6837e829
PH
217 date_pub = models.DateField('date de publication')
218 date_mod = models.DateTimeField(
219 'date de derniere modification',
220 auto_now_add=True)
221
01b54c21
MN
222 class Meta:
223 ordering = ('-date_pub',)
6837e829 224
01b54c21 225 def __unicode__(self):
6837e829 226 return self.titre
01b54c21
MN
227
228 def get_absolute_url(self):
6837e829
PH
229 return "/archives/%s/" % self.id
230
01b54c21
MN
231
232class Abonne(models.Model):
233 adresse = models.EmailField(max_length=75, verbose_name='Adresse')
234 date = models.DateField(auto_now_add=True)
235 valide = models.BooleanField(default=True)
236
6837e829 237
01b54c21 238class AbonneForm(forms.ModelForm):
6837e829 239
01b54c21
MN
240 class Meta:
241 model = Abonne
242 fields = ('adresse',)
6837e829 243
01b54c21
MN
244 def clean(self):
245 cleaned_data = self.cleaned_data
246
247 if Abonne.objects.filter(adresse=cleaned_data.get("adresse")):
6837e829
PH
248 raise forms.ValidationError(
249 "Vous êtes déja inscrit à la lettre d\'information")
01b54c21
MN
250
251 return cleaned_data
6837e829
PH
252
253
01b54c21
MN
254class DesinscireForm(forms.Form):
255 adresse = forms.EmailField(label="", max_length=75)
6837e829 256
01b54c21
MN
257 def clean(self):
258 cleaned_data = self.cleaned_data
259
260 if not Abonne.objects.filter(adresse=cleaned_data.get("adresse")):
6837e829
PH
261 raise forms.ValidationError(
262 "Vous êtes pas inscrit à la lettre d\'information")
01b54c21
MN
263
264 return cleaned_data