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