1 # -*- encoding: utf-8 -*
2 from django
import forms
3 from django
.db
import models
5 class Communication(models
.Model
):
6 region
= models
.CharField(max_length
=1, null
=False, default
='3', blank
=False, choices
=(('1', 'Afrique Centrale et des Grands-Lacs'), ('2', 'Afrique de l\'ouest'), ('3', 'Amériques'), ('4', 'Asie-Pacifique'), ('3', 'Caraïbe'), ('4', 'Europe centrale et orientale'), ('3', 'Moyen-Orient'), ('4', 'Océan Indien'), ('3', 'Maghreb'), ('4', 'Europe de l\'Ouest')))
7 status
= models
.CharField(max_length
=1, null
=False, default
='3', blank
=False, choices
=(('1', 'En cours de redaction'), ('2', 'Propose a la publication'), ('3', 'Publie en Ligne'), ('4', 'A supprimer')))
8 titre
= models
.CharField(max_length
=200)
9 sous_titre
= models
.CharField(max_length
=300, null
=True, blank
=True,)
10 lieu
= models
.CharField(max_length
=300)
11 slug
= models
.SlugField(unique
=True)
12 texte
= models
.TextField()
13 image
= models
.ImageField(null
=True, blank
=True, upload_to
='communication')
14 date_pub
= models
.DateField('date de publication')
15 date_limite
= models
.DateField('date limite')
16 date_event
= models
.DateField('date de l\'événement')
17 date_mod
= models
.DateTimeField('date de derniere modification', auto_now_add
=True)
20 ordering
= ('-date_pub',)
22 def __unicode__(self
):
25 def get_absolute_url(self
):
26 return "/appels-communications/%s/" %self
.slug
28 class Contribution(models
.Model
):
29 region
= models
.CharField(max_length
=1, null
=False, default
='3', blank
=False, choices
=(('1', 'Afrique Centrale et des Grands-Lacs'), ('2', 'Afrique de l\'ouest'), ('3', 'Amériques'), ('4', 'Asie-Pacifique'), ('3', 'Caraïbe'), ('4', 'Europe centrale et orientale'), ('3', 'Moyen-Orient'), ('4', 'Océan Indien'), ('3', 'Maghreb'), ('4', 'Europe de l\'Ouest')))
30 status
= models
.CharField(max_length
=1, null
=False, default
='3', blank
=False, choices
=(('1', 'En cours de redaction'), ('2', 'Propose a la publication'), ('3', 'Publie en Ligne'), ('4', 'A supprimer')))
31 titre
= models
.CharField(max_length
=200)
32 sous_titre
= models
.CharField(max_length
=300, null
=True, blank
=True,)
33 lieu
= models
.CharField(max_length
=300)
34 slug
= models
.SlugField(unique
=True)
35 texte
= models
.TextField()
36 image
= models
.ImageField(null
=True, blank
=True, upload_to
='contribution')
37 date_pub
= models
.DateField('date de publication')
38 date_limite
= models
.DateField('date limite')
39 date_event
= models
.DateField('date de l\'événement')
40 date_mod
= models
.DateTimeField('date de derniere modification', auto_now_add
=True)
43 ordering
= ('-date_pub',)
45 def __unicode__(self
):
48 def get_absolute_url(self
):
49 return "/appels-contributions/%s/" %self
.slug
51 class Offre(models
.Model
):
52 region
= models
.CharField(max_length
=1, null
=False, default
='3', blank
=False, choices
=(('1', 'Afrique Centrale et des Grands-Lacs'), ('2', 'Afrique de l\'ouest'), ('3', 'Amériques'), ('4', 'Asie-Pacifique'), ('3', 'Caraïbe'), ('4', 'Europe centrale et orientale'), ('3', 'Moyen-Orient'), ('4', 'Océan Indien'), ('3', 'Maghreb'), ('4', 'Europe de l\'Ouest')))
53 status
= models
.CharField(max_length
=1, null
=False, default
='3', blank
=False, choices
=(('1', 'En cours de redaction'), ('2', 'Propose a la publication'), ('3', 'Publie en Ligne'), ('4', 'A supprimer')))
54 titre
= models
.CharField(max_length
=200)
55 sous_titre
= models
.CharField(max_length
=300, null
=True, blank
=True,)
56 lieu
= models
.CharField(max_length
=300)
57 slug
= models
.SlugField(unique
=True)
58 texte
= models
.TextField()
59 image
= models
.ImageField(null
=True, blank
=True, upload_to
='offres')
60 date_pub
= models
.DateField('date de publication')
61 date_limite
= models
.DateField('date limite')
62 date_event
= models
.DateField('date de l\'événement')
63 date_mod
= models
.DateTimeField('date de derniere modification', auto_now_add
=True)
66 ordering
= ('-date_pub',)
68 def __unicode__(self
):
71 def get_absolute_url(self
):
72 return "/appels-offres/%s/" %self
.slug
74 class Archive(models
.Model
):
75 status
= models
.CharField(max_length
=1, null
=False, default
='3', blank
=False, choices
=(('1', 'En cours de redaction'), ('2', 'Propose a la publication'), ('3', 'Publie en Ligne'), ('4', 'A supprimer')))
76 numero
= models
.IntegerField(null
=False, unique
=True)
77 titre
= models
.CharField(max_length
=200)
78 texte
= models
.TextField()
79 fichier
= models
.FileField(upload_to
='archives')
80 date_pub
= models
.DateField('date de publication')
81 date_mod
= models
.DateTimeField('date de derniere modification', auto_now_add
=True)
84 ordering
= ('-date_pub',)
86 def __unicode__(self
):
89 def get_absolute_url(self
):
90 return "/archives/%s/" %self
.id
92 class Abonne(models
.Model
):
93 adresse
= models
.EmailField(max_length
=75, verbose_name
='Adresse')
94 date
= models
.DateField(auto_now_add
=True)
95 valide
= models
.BooleanField(default
=True)
97 class AbonneForm(forms
.ModelForm
):
100 fields
= ('adresse',)
103 cleaned_data
= self
.cleaned_data
105 if Abonne
.objects
.filter(adresse
=cleaned_data
.get("adresse")):
106 raise forms
.ValidationError("Vous êtes déja inscrit à la lettre d\'information")
110 class DesinscireForm(forms
.Form
):
111 adresse
= forms
.EmailField(label
="", max_length
=75)
114 cleaned_data
= self
.cleaned_data
116 if not Abonne
.objects
.filter(adresse
=cleaned_data
.get("adresse")):
117 raise forms
.ValidationError("Vous êtes pas inscrit à la lettre d\'information")