1 # -*- encoding: utf-8 -*
2 from django
import forms
3 from django
.db
import models
6 class Communication(models
.Model
):
7 region
= models
.CharField(
14 'Afrique Centrale et des Grands-Lacs'),
16 'Afrique de l\'ouest'),
24 'Europe centrale et orientale'),
32 'Europe de l\'Ouest')))
33 status
= models
.CharField(
40 'En cours de redaction'),
42 'Propose a la publication'),
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',
61 ordering
= ('-date_pub',)
63 def __unicode__(self
):
66 def get_absolute_url(self
):
67 return "/appels-communications/%s/" % self
.slug
70 class Contribution(models
.Model
):
71 region
= models
.CharField(
78 'Afrique Centrale et des Grands-Lacs'),
80 'Afrique de l\'ouest'),
88 'Europe centrale et orientale'),
96 'Europe de l\'Ouest')))
97 status
= models
.CharField(
104 'En cours de redaction'),
106 'Propose a la publication'),
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',
125 ordering
= ('-date_pub',)
127 def __unicode__(self
):
130 def get_absolute_url(self
):
131 return "/appels-contributions/%s/" % self
.slug
134 class Offre(models
.Model
):
135 region
= models
.CharField(
142 'Afrique Centrale et des Grands-Lacs'),
144 'Afrique de l\'ouest'),
152 'Europe centrale et orientale'),
160 'Europe de l\'Ouest')))
161 status
= models
.CharField(
168 'En cours de redaction'),
170 'Propose a la publication'),
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',
189 ordering
= ('-date_pub',)
191 def __unicode__(self
):
194 def get_absolute_url(self
):
195 return "/appels-offres/%s/" % self
.slug
198 class Archive(models
.Model
):
199 status
= models
.CharField(
206 'En cours de redaction'),
208 'Propose a la publication'),
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',
223 ordering
= ('-date_pub',)
225 def __unicode__(self
):
228 def get_absolute_url(self
):
229 return "/archives/%s/" % self
.id
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)
238 class AbonneForm(forms
.ModelForm
):
242 fields
= ('adresse',)
245 cleaned_data
= self
.cleaned_data
247 if Abonne
.objects
.filter(adresse
=cleaned_data
.get("adresse")):
248 raise forms
.ValidationError(
249 "Vous êtes déja inscrit à la lettre d\'information")
254 class DesinscireForm(forms
.Form
):
255 adresse
= forms
.EmailField(label
="", max_length
=75)
258 cleaned_data
= self
.cleaned_data
260 if not Abonne
.objects
.filter(adresse
=cleaned_data
.get("adresse")):
261 raise forms
.ValidationError(
262 "Vous êtes pas inscrit à la lettre d\'information")