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
099e7f84 5from tinymce.models import HTMLField
6837e829 6
099e7f84
PH
7
8class Framonde(models.Model):
6837e829 9 region = models.CharField(
099e7f84 10 max_length=2,
6837e829
PH
11 null=False,
12 default='3',
13 blank=False,
14 choices=(
099e7f84
PH
15 ('0',
16 'Internationale'),
6837e829
PH
17 ('1',
18 'Afrique Centrale et des Grands-Lacs'),
19 ('2',
20 'Afrique de l\'ouest'),
21 ('3',
22 'Amériques'),
23 ('4',
24 'Asie-Pacifique'),
099e7f84 25 ('5',
6837e829 26 'Caraïbe'),
099e7f84 27 ('6',
6837e829 28 'Europe centrale et orientale'),
099e7f84 29 ('7',
6837e829 30 'Moyen-Orient'),
099e7f84 31 ('8',
6837e829 32 'Océan Indien'),
099e7f84 33 ('9',
6837e829 34 'Maghreb'),
099e7f84 35 ('10',
6837e829
PH
36 'Europe de l\'Ouest')))
37 status = models.CharField(
38 max_length=1,
39 null=False,
40 default='3',
41 blank=False,
42 choices=(
43 ('1',
44 'En cours de redaction'),
45 ('2',
46 'Propose a la publication'),
47 ('3',
48 'Publie en Ligne'),
49 ('4',
50 'A supprimer')))
01b54c21 51 titre = models.CharField(max_length=200)
099e7f84
PH
52 sous_titre = models.CharField(max_length=300, null=True, blank=True)
53 lieu = models.CharField(max_length=300, null=True, blank=True)
01b54c21 54 slug = models.SlugField(unique=True)
099e7f84 55 texte = HTMLField()
01b54c21
MN
56 image = models.ImageField(null=True, blank=True, upload_to='communication')
57 date_pub = models.DateField('date de publication')
099e7f84
PH
58 date_limite = models.DateField('date limite', null=True, blank=True)
59 date_event = models.CharField(max_length=300, null=True, blank=True)
6837e829
PH
60 date_mod = models.DateTimeField(
61 'date de derniere modification',
62 auto_now_add=True)
63
01b54c21
MN
64 class Meta:
65 ordering = ('-date_pub',)
099e7f84 66 abstract = True
6837e829 67
01b54c21 68 def __unicode__(self):
6837e829 69 return self.titre
01b54c21 70
099e7f84
PH
71
72class Communication(Framonde):
01b54c21 73 def get_absolute_url(self):
6837e829
PH
74 return "/appels-communications/%s/" % self.slug
75
01b54c21 76
099e7f84 77class Contribution(Framonde):
01b54c21 78 def get_absolute_url(self):
6837e829
PH
79 return "/appels-contributions/%s/" % self.slug
80
01b54c21 81
099e7f84 82class Offre(Framonde):
01b54c21 83 def get_absolute_url(self):
6837e829
PH
84 return "/appels-offres/%s/" % self.slug
85
01b54c21
MN
86
87class Archive(models.Model):
6837e829
PH
88 status = models.CharField(
89 max_length=1,
90 null=False,
91 default='3',
92 blank=False,
93 choices=(
94 ('1',
95 'En cours de redaction'),
96 ('2',
97 'Propose a la publication'),
98 ('3',
99 'Publie en Ligne'),
100 ('4',
101 'A supprimer')))
01b54c21
MN
102 numero = models.IntegerField(null=False, unique=True)
103 titre = models.CharField(max_length=200)
099e7f84 104 texte = HTMLField()
01b54c21 105 fichier = models.FileField(upload_to='archives')
6837e829
PH
106 date_pub = models.DateField('date de publication')
107 date_mod = models.DateTimeField(
108 'date de derniere modification',
109 auto_now_add=True)
110
01b54c21
MN
111 class Meta:
112 ordering = ('-date_pub',)
6837e829 113
01b54c21 114 def __unicode__(self):
6837e829 115 return self.titre
01b54c21
MN
116
117 def get_absolute_url(self):
6837e829
PH
118 return "/archives/%s/" % self.id
119
01b54c21
MN
120
121class Abonne(models.Model):
122 adresse = models.EmailField(max_length=75, verbose_name='Adresse')
123 date = models.DateField(auto_now_add=True)
124 valide = models.BooleanField(default=True)
125
6837e829 126
01b54c21 127class AbonneForm(forms.ModelForm):
6837e829 128
01b54c21
MN
129 class Meta:
130 model = Abonne
131 fields = ('adresse',)
6837e829 132
01b54c21
MN
133 def clean(self):
134 cleaned_data = self.cleaned_data
135
136 if Abonne.objects.filter(adresse=cleaned_data.get("adresse")):
6837e829
PH
137 raise forms.ValidationError(
138 "Vous êtes déja inscrit à la lettre d\'information")
01b54c21
MN
139
140 return cleaned_data
6837e829
PH
141
142
01b54c21
MN
143class DesinscireForm(forms.Form):
144 adresse = forms.EmailField(label="", max_length=75)
6837e829 145
01b54c21
MN
146 def clean(self):
147 cleaned_data = self.cleaned_data
148
149 if not Abonne.objects.filter(adresse=cleaned_data.get("adresse")):
6837e829
PH
150 raise forms.ValidationError(
151 "Vous êtes pas inscrit à la lettre d\'information")
01b54c21
MN
152
153 return cleaned_data