mise-en-production
[auf_framonde.git] / project / framonde / models.py
1 # -*- encoding: utf-8 -*
2 from django import forms
3 from django.db import models
4
5
6 class Communication(models.Model):
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')))
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')
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
60 class Meta:
61 ordering = ('-date_pub',)
62
63 def __unicode__(self):
64 return self.titre
65
66 def get_absolute_url(self):
67 return "/appels-communications/%s/" % self.slug
68
69
70 class Contribution(models.Model):
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')))
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')
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
124 class Meta:
125 ordering = ('-date_pub',)
126
127 def __unicode__(self):
128 return self.titre
129
130 def get_absolute_url(self):
131 return "/appels-contributions/%s/" % self.slug
132
133
134 class Offre(models.Model):
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')))
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')
182 date_limite = models.DateField('date limite', blank=True, upload_to='offres')
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
188 class Meta:
189 ordering = ('-date_pub',)
190
191 def __unicode__(self):
192 return self.titre
193
194 def get_absolute_url(self):
195 return "/appels-offres/%s/" % self.slug
196
197
198 class Archive(models.Model):
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')))
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')
217 date_pub = models.DateField('date de publication')
218 date_mod = models.DateTimeField(
219 'date de derniere modification',
220 auto_now_add=True)
221
222 class Meta:
223 ordering = ('-date_pub',)
224
225 def __unicode__(self):
226 return self.titre
227
228 def get_absolute_url(self):
229 return "/archives/%s/" % self.id
230
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
237
238 class AbonneForm(forms.ModelForm):
239
240 class Meta:
241 model = Abonne
242 fields = ('adresse',)
243
244 def clean(self):
245 cleaned_data = self.cleaned_data
246
247 if Abonne.objects.filter(adresse=cleaned_data.get("adresse")):
248 raise forms.ValidationError(
249 "Vous êtes déja inscrit à la lettre d\'information")
250
251 return cleaned_data
252
253
254 class DesinscireForm(forms.Form):
255 adresse = forms.EmailField(label="", max_length=75)
256
257 def clean(self):
258 cleaned_data = self.cleaned_data
259
260 if not Abonne.objects.filter(adresse=cleaned_data.get("adresse")):
261 raise forms.ValidationError(
262 "Vous êtes pas inscrit à la lettre d\'information")
263
264 return cleaned_data