Ajout contrainte des dates de debut et fin
[OpenERP/cmmi.git] / projet.py
1 #-*- coding: utf8 -*-
2 '''
3 '''
4
5 from openerp.osv import osv, fields
6
7 class Projet(osv.Model):
8     _name = "projet.projet"
9
10     _columns = {
11         "name": fields.char(string="Title", size=64, required=True),
12         "description": fields.text(string="Description"),
13         "domaines": fields.many2many("projet.domaine",
14                                      "projet_projet_domaine_rel",
15                                      "projets",
16                                      string="Domaines"),
17         "structures": fields.many2many("projet.structure",
18                                        "projet_projet_structure_rel",
19                                        "projets",
20                                        string="Structures"),
21         "team_members": fields.many2many("projet.teammember",
22                                          "projet_projet_teammember_rel",
23                                          "projets",
24                                          string="Team Members"),
25         "modules": fields.one2many("projet.module",
26                                    "projet_id",
27                                    string="Modules"),
28         "chantiers": fields.one2many("projet.chantier",
29                                      "projet_id",
30                                      string="Chantiers"),
31         "paliers": fields.one2many("projet.palier",
32                                    "projet_id",
33                                    string="Paliers"),
34         "phases": fields.one2many("projet.phase",
35                                    "projet_id",
36                                    string="Phases"),
37         "moe_id": fields.many2one("projet.moe", string="MoEs", required=True),
38         "moa_id": fields.many2one("projet.moa", string="MoAs", required=True),
39     }
40
41
42 class Evolution(osv.Model):
43     _name = "projet.evolution"
44
45     _columns = {
46         "name": fields.char(string="Title", size=64, required=True),
47         "description": fields.text(string="Description"),
48     }
49
50
51 class Structure(osv.Model):
52     _name = "projet.structure"
53
54     _columns = {
55         "name": fields.char(string="Title", size=64, required=True),
56         "description": fields.text(string="Description"),
57         "projets": fields.many2many("projet.projet",
58                                     "projet_projet_structure_rel",
59                                     "structures",
60                                     string="Projets (structure)")
61     }
62
63
64 class Module(osv.Model):
65     _name = "projet.module"
66
67     _columns = {
68         "name": fields.char(string="Title", size=64, required=True),
69         "description": fields.text(string="Description"),
70         "projet_id": fields.many2one("projet.projet",
71                                      string="Projet (module)",
72                                      required=True),
73     }
74
75
76 class Domaine(osv.Model):
77     _name = "projet.domaine"
78
79     _columns = {
80         "name": fields.char(string="Title", size=64, required=True),
81         "description": fields.text(string="Description"),
82         "parent_id": fields.many2one("projet.domaine", string="Parent_id"),
83         "projets": fields.many2many("projet.projet",
84                                     "projet_projet_structure_rel",
85                                     "domaines",
86                                     string="Projets"),
87     }
88
89
90 class Teammember(osv.Model):
91     _name = "projet.teammember"
92
93     _inherit = "res.partner"
94
95     _columns = {
96         "projets": fields.many2many("projet.projet",
97                                     "projet_projet_teammember_rel",
98                                     "team_members",
99                                     string="Projets"),
100         "charges": fields.one2many("projet.projet",
101                                    "team_members",
102                                    string="Charges"),
103     }
104
105
106 class Phase(osv.Model):
107     _name = "projet.phase"
108
109     _columns = {
110         "name": fields.char(string="Title", size=64, required=True),
111         "description": fields.text(string="Description"),
112         "projet_id": fields.many2one("projet.projet",
113                                      string="Projet",
114                                      required=True),
115         "charges": fields.one2many("projet.charge",
116                                    "phase_id",
117                                    string="Charges")
118     }
119
120 #TODO trouver un nom a cette chose
121 class qqch(osv.Model):
122     _name = "projet.qqch"
123
124     _columns = {
125         "name": fields.char(string="Title", size=64, required=True),
126         "description": fields.text(string="Description"),
127         "date_jalon": fields.date(sring="Jalon"),
128         "date_init_deb": fields.date(sring="Date initiale début"),
129         "date_init_fin": fields.date(sring="Date initiale de fin"),
130         "date_plan_deb": fields.date(string="Date plannifiée début"),
131         "date_plan_fin": fields.date(string="Date plannifiée de fin"),
132         "date_reel_deb": fields.date(string="Data réelle début"),
133         "date_reel_fin": fields.date(string="Data réelle fin"),
134     }
135
136     _sql_constraints = [
137         (
138             "date_init_deb_before_date_init_fin",
139             "CHECK(date_init_deb<> date_init_fin)",
140             "The date_init_deb should be previous date_init_fin",
141         ),
142         (
143             "date_plan_deb_before_date_plan_fin",
144             "CHECK(date_plan_deb<> date_plan_fin)",
145             "The date_plan_deb should be previous date_plan_fin",
146         ),
147         (
148             "date_reel_deb_before_date_reel_fin",
149             "CHECK(date_reel_deb<> date_reel_fin)",
150             "The date_reel_deb should be previous date_reel_fin",
151         ),
152     ]
153
154
155 class Chantier(osv.Model):
156     _name = "projet.chantier"
157
158     _inherit = "projet.qqch"
159
160     _columns = {
161         "projet_id": fields.many2one("projet.projet",
162                                      string="Projet",
163                                      required=True),
164     }
165
166
167 class Palier(osv.Model):
168     _name = "projet.palier"
169
170     _inherit = "projet.qqch"
171
172     _columns = {
173         "projet_id": fields.many2one("projet.projet",
174                                      string="Projet",
175                                      required=True),
176     }
177
178
179 class Charge(osv.Model):
180     _name = "projet.charge"
181
182     _columns = {
183         "name": fields.char(string="Title", size=64, required=True),
184         "description": fields.text(string="Description"),
185         "teammember_id": fields.many2one("projet.teammember",
186                                          string="Team Member",
187                                          required=True),
188         "phase_id": fields.many2one("projet.phase",
189                                     string="Phase",
190                                     required=True),
191     }
192
193 class mo(osv.Model):
194     _name = "projet.mo"
195
196     _choses = [("primaire", "Primaire"), ("secondaire", "Secondaire"), ("generique", "Générique")]
197
198     _columns = {
199         "name": fields.char(string="Title"),
200         "description": fields.text(string="Description"),
201         "chose": fields.selection(_choses, string="Chose", required=True),
202     }
203
204     _defaults = {
205         "chose": "generique"}
206
207
208 class moe(osv.Model):
209     _name = "projet.moe"
210     _inherit = "projet.mo"
211
212     _columns = {
213         "projets": fields.one2many("projet.projet",
214                                      "moe_id",
215                                      string="MoE"),
216     }
217
218
219 class moa(osv.Model):
220     _name= "projet.moa"
221     _inherit = "projet.mo"
222
223     _columns = {
224         "projets": fields.one2many("projet.projet",
225                                      "moa_id",
226                                      string="MoA"),
227     }