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