Commit | Line | Data |
---|---|---|
01b54c21 MN |
1 | # -*- encoding: utf-8 -* |
2 | from django import forms | |
3 | from django.db import models | |
4 | ||
6837e829 | 5 | |
01b54c21 | 6 | class 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 | |
70 | class 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 | |
134 | class 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 | |
198 | class 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 | |
232 | class 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 | 238 | class 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 |
254 | class 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 |