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