Rajout de champs à la classe projet.domaine
[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"),
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",
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     _statuts = [("actif", "Actif"),
99                ("inactif", "Inactif")]
100
101     _columns = {
102         "name": fields.char(string="Title", size=64, required=True),
103         "code": fields.char(string="Code", size=8),
104         "description": fields.text(string="Description"),
105         "ordre": fields.integer(string="Ordre"),
106         "parent_id": fields.many2one("projet.domaine", string="Parent_id"),
107         "statut": fields.selection(_statuts, string="Statut"),
108         "projets": fields.many2many("projet.projet",
109                                     "projet_projet_structure_rel",
110                                     "domaines",
111                                     string="Projets"),
112     }
113
114
115 class Teammember(osv.Model):
116     _name = "projet.teammember"
117
118     _inherit = "res.partner"
119
120     _columns = {
121         "projets": fields.many2many("projet.projet",
122                                     "projet_projet_teammember_rel",
123                                     "team_members",
124                                     string="Projets"),
125         "charges": fields.one2many("projet.projet",
126                                    "team_members",
127                                    string="Charges"),
128     }
129
130
131 class Phase(osv.Model):
132     _name = "projet.phase"
133
134     _columns = {
135         "name": fields.char(string="Title", size=64, required=True),
136         "description": fields.text(string="Description"),
137         "projet_id": fields.many2one("projet.projet",
138                                      string="Projet",
139                                      required=True),
140         "charges": fields.one2many("projet.charge",
141                                    "phase_id",
142                                    string="Charges"),
143         "evolutions": fields.one2many("projet.evolution",
144                                       "phase_id",
145                                       string="Evolutions"),
146         "palier_id": fields.many2one("projet.palier",
147                                      string="Palier"),
148     }
149
150 #TODO trouver un nom a cette chose
151 class qqch(osv.Model):
152     _name = "projet.qqch"
153
154     _columns = {
155         "name": fields.char(string="Title", size=64, required=True),
156         "description": fields.text(string="Description"),
157         "date_jalon": fields.date(sring="Jalon"),
158         "date_init_deb": fields.date(sring="Date initiale début"),
159         "date_init_fin": fields.date(sring="Date initiale de fin"),
160         "date_plan_deb": fields.date(string="Date plannifiée début"),
161         "date_plan_fin": fields.date(string="Date plannifiée de fin"),
162         "date_reel_deb": fields.date(string="Data réelle début"),
163         "date_reel_fin": fields.date(string="Data réelle fin"),
164     }
165
166     _sql_constraints = [
167         (
168             "date_init_deb_before_date_init_fin",
169             "CHECK(date_init_deb<> date_init_fin)",
170             "The date_init_deb should be previous date_init_fin",
171         ),
172         (
173             "date_plan_deb_before_date_plan_fin",
174             "CHECK(date_plan_deb <> date_plan_fin)",
175             "The date_plan_deb should be previous date_plan_fin",
176         ),
177         (
178             "date_reel_deb_before_date_reel_fin",
179             "CHECK(date_reel_deb<> date_reel_fin)",
180             "The date_reel_deb should be previous date_reel_fin",
181         ),
182     ]
183
184
185 class Chantier(osv.Model):
186     _name = "projet.chantier"
187
188     _inherit = "projet.qqch"
189
190     _columns = {
191         "projet_id": fields.many2one("projet.projet",
192                                      string="Projet",
193                                      required=True),
194         "evolutions": fields.one2many("projet.evolution",
195                                       "chantier_id",
196                                       string="Evolutions"),
197     }
198
199
200 class Palier(osv.Model):
201     _name = "projet.palier"
202
203     _inherit = "projet.qqch"
204
205     _columns = {
206         "projet_id": fields.many2one("projet.projet",
207                                      string="Projet",
208                                      required=True),
209         "evolutions": fields.one2many("projet.evolution",
210                                       "palier_id",
211                                       string="Evolutions"),
212         "phases": fields.one2many("projet.phase",
213                                   "palier_id",
214                                   string="Phases"),
215     }
216
217
218 class Charge(osv.Model):
219     _name = "projet.charge"
220
221     _columns = {
222         "name": fields.char(string="Title", size=64, required=True),
223         "description": fields.text(string="Description"),
224         "teammember_id": fields.many2one("projet.teammember",
225                                          string="Team Member",
226                                          required=True),
227         "phase_id": fields.many2one("projet.phase",
228                                     string="Phase",
229                                     required=True),
230         "evolution_id": fields.many2one("projet.evolution",
231                                     string="Evolution",
232                                     required=True),
233         "mo_id": fields.many2one("projet.mo",
234                                  string="Mo"),
235     }
236
237 class mo(osv.Model):
238     _name = "projet.mo"
239
240     _choses = [("primaire", "Primaire"),
241                ("secondaire", "Secondaire"),
242                ("generique", "Générique")]
243
244     _columns = {
245         "name": fields.char(string="Title"),
246         "description": fields.text(string="Description"),
247         "chose": fields.selection(_choses, string="Chose", required=True),
248         "charges": fields.one2many("projet.charge",
249                                    "mo_id",
250                                    string="Charges"),
251     }
252
253     _defaults = {
254         "chose": "generique"}
255
256
257 class moe(osv.Model):
258     _name = "projet.moe"
259     _inherit = "projet.mo"
260
261     _columns = {
262         "projets": fields.one2many("projet.projet",
263                                      "moe_id",
264                                      string="Projets"),
265     }
266
267
268 class moa(osv.Model):
269     _name= "projet.moa"
270     _inherit = "projet.mo"
271
272     _columns = {
273         "projets": fields.one2many("projet.projet",
274                                      "moa_id",
275                                      string="Projets"),
276     }