Ajout relation projet/evolution
[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         "evolutions":fields.one2many("projet.evolution",
38                                      "projet_id",
39                                      string="Evolutions"),
40         "moe_id": fields.many2one("projet.moe", string="MoE", required=True),
41         "moa_id": fields.many2one("projet.moa", string="MoA", required=True),
42     }
43
44
45 class Evolution(osv.Model):
46     _name = "projet.evolution"
47
48     _columns = {
49         "name": fields.char(string="Title", size=64, required=True),
50         "description": fields.text(string="Description"),
51         "charges": fields.one2many("projet.charge",
52                                    "evolution_id",
53                                    string="Charges"),
54         "module_id": fields.many2one("projet.module",
55                                      string="Modules"),
56         "chantier_id": fields.many2one("projet.chantier",
57                                     string="Chantier"),
58         "palier_id": fields.many2one("projet.palier",
59                                      string="Palier"),
60         "phase_id": fields.many2one("projet.phase",
61                                     string="Phase"),
62         "projet_id": fields.many2one("projet.projet",
63                                      string="Projet")
64     }
65
66
67 class Structure(osv.Model):
68     _name = "projet.structure"
69
70     _columns = {
71         "name": fields.char(string="Title", size=64, required=True),
72         "description": fields.text(string="Description"),
73         "projets": fields.many2many("projet.projet",
74                                     "projet_projet_structure_rel",
75                                     "structures",
76                                     string="Projets (structure)"),
77     }
78
79
80 class Module(osv.Model):
81     _name = "projet.module"
82
83     _columns = {
84         "name": fields.char(string="Title", size=64, required=True),
85         "description": fields.text(string="Description"),
86         "projet_id": fields.many2one("projet.projet",
87                                      string="Projet (module)",
88                                      required=True),
89         "evolutions": fields.one2many("projet.evolution",
90                                       "module_id",
91                                       string="Evolutions")
92     }
93
94
95 class Domaine(osv.Model):
96     _name = "projet.domaine"
97
98     _columns = {
99         "name": fields.char(string="Title", size=64, required=True),
100         "description": fields.text(string="Description"),
101         "parent_id": fields.many2one("projet.domaine", string="Parent_id"),
102         "projets": fields.many2many("projet.projet",
103                                     "projet_projet_structure_rel",
104                                     "domaines",
105                                     string="Projets"),
106     }
107
108
109 class Teammember(osv.Model):
110     _name = "projet.teammember"
111
112     _inherit = "res.partner"
113
114     _columns = {
115         "projets": fields.many2many("projet.projet",
116                                     "projet_projet_teammember_rel",
117                                     "team_members",
118                                     string="Projets"),
119         "charges": fields.one2many("projet.projet",
120                                    "team_members",
121                                    string="Charges"),
122     }
123
124
125 class Phase(osv.Model):
126     _name = "projet.phase"
127
128     _columns = {
129         "name": fields.char(string="Title", size=64, required=True),
130         "description": fields.text(string="Description"),
131         "projet_id": fields.many2one("projet.projet",
132                                      string="Projet",
133                                      required=True),
134         "charges": fields.one2many("projet.charge",
135                                    "phase_id",
136                                    string="Charges"),
137         "evolutions": fields.one2many("projet.evolution",
138                                       "phase_id",
139                                       string="Evolutions"),
140         "palier_id": fields.many2one("projet.palier",
141                                      string="Palier"),
142     }
143
144 #TODO trouver un nom a cette chose
145 class qqch(osv.Model):
146     _name = "projet.qqch"
147
148     _columns = {
149         "name": fields.char(string="Title", size=64, required=True),
150         "description": fields.text(string="Description"),
151         "date_jalon": fields.date(sring="Jalon"),
152         "date_init_deb": fields.date(sring="Date initiale début"),
153         "date_init_fin": fields.date(sring="Date initiale de fin"),
154         "date_plan_deb": fields.date(string="Date plannifiée début"),
155         "date_plan_fin": fields.date(string="Date plannifiée de fin"),
156         "date_reel_deb": fields.date(string="Data réelle début"),
157         "date_reel_fin": fields.date(string="Data réelle fin"),
158     }
159
160     _sql_constraints = [
161         (
162             "date_init_deb_before_date_init_fin",
163             "CHECK(date_init_deb<> date_init_fin)",
164             "The date_init_deb should be previous date_init_fin",
165         ),
166         (
167             "date_plan_deb_before_date_plan_fin",
168             "CHECK(date_plan_deb<> date_plan_fin)",
169             "The date_plan_deb should be previous date_plan_fin",
170         ),
171         (
172             "date_reel_deb_before_date_reel_fin",
173             "CHECK(date_reel_deb<> date_reel_fin)",
174             "The date_reel_deb should be previous date_reel_fin",
175         ),
176     ]
177
178
179 class Chantier(osv.Model):
180     _name = "projet.chantier"
181
182     _inherit = "projet.qqch"
183
184     _columns = {
185         "projet_id": fields.many2one("projet.projet",
186                                      string="Projet",
187                                      required=True),
188         "evolutions": fields.one2many("projet.evolution",
189                                       "chantier_id",
190                                       string="Evolutions"),
191     }
192
193
194 class Palier(osv.Model):
195     _name = "projet.palier"
196
197     _inherit = "projet.qqch"
198
199     _columns = {
200         "projet_id": fields.many2one("projet.projet",
201                                      string="Projet",
202                                      required=True),
203         "evolutions": fields.one2many("projet.evolution",
204                                       "palier_id",
205                                       string="Evolutions"),
206         "phases": fields.one2many("projet.phase",
207                                   "palier_id",
208                                   string="Phases"),
209     }
210
211
212 class Charge(osv.Model):
213     _name = "projet.charge"
214
215     _columns = {
216         "name": fields.char(string="Title", size=64, required=True),
217         "description": fields.text(string="Description"),
218         "teammember_id": fields.many2one("projet.teammember",
219                                          string="Team Member",
220                                          required=True),
221         "phase_id": fields.many2one("projet.phase",
222                                     string="Phase",
223                                     required=True),
224         "evolution_id": fields.many2one("projet.evolution",
225                                     string="Evolution",
226                                     required=True),
227         "mo_id": fields.many2one("projet.mo",
228                                  string="Mo"),
229     }
230
231 class mo(osv.Model):
232     _name = "projet.mo"
233
234     _choses = [("primaire", "Primaire"), ("secondaire", "Secondaire"), ("generique", "Générique")]
235
236     _columns = {
237         "name": fields.char(string="Title"),
238         "description": fields.text(string="Description"),
239         "chose": fields.selection(_choses, string="Chose", required=True),
240         "charges": fields.one2many("projet.charge",
241                                    "mo_id",
242                                    string="Charges"),
243     }
244
245     _defaults = {
246         "chose": "generique"}
247
248
249 class moe(osv.Model):
250     _name = "projet.moe"
251     _inherit = "projet.mo"
252
253     _columns = {
254         "projets": fields.one2many("projet.projet",
255                                      "moe_id",
256                                      string="Projets"),
257     }
258
259
260 class moa(osv.Model):
261     _name= "projet.moa"
262     _inherit = "projet.mo"
263
264     _columns = {
265         "projets": fields.one2many("projet.projet",
266                                      "moa_id",
267                                      string="Projets"),
268     }