~eduardo-bayardo-bias/bias-trunk/bias_trunk

« back to all changes in this revision

Viewing changes to aaia/aaia.py

  • Committer: Arturo Galvan Rdz.
  • Date: 2011-06-08 14:54:59 UTC
  • mto: (193.1.28 bias_trunk)
  • mto: This revision was merged to the branch mainline in revision 204.
  • Revision ID: agalvan@duglas.com.mx-20110608145459-u714ksnfw6u68qzl
Se agregaron los modulos aaia (creado por el metamodulo) y bias_partner_user (que agrega un partner a un usuario).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- encoding: utf-8 -*-
 
2
##############################################################################
 
3
#
 
4
#    OpenERP, Open Source Management Solution   
 
5
#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 
6
#    $Id$
 
7
#
 
8
#    This program is free software: you can redistribute it and/or modify
 
9
#    it under the terms of the GNU General Public License as published by
 
10
#    the Free Software Foundation, either version 3 of the License, or
 
11
#    (at your option) any later version.
 
12
#
 
13
#    This program is distributed in the hope that it will be useful,
 
14
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
#    GNU General Public License for more details.
 
17
#
 
18
#    You should have received a copy of the GNU General Public License
 
19
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
20
#
 
21
##############################################################################
 
22
#
 
23
#Bias Product / PriceList 
 
24
#
 
25
from osv import osv
 
26
from osv import fields
 
27
import string
 
28
 
 
29
 
 
30
def uniquify(mylist):
 
31
    set = {}
 
32
    map(set.__setitem__, mylist, [])
 
33
    return set.keys()
 
34
 
 
35
def make_tuple(ids):
 
36
    res = ()
 
37
    if len(ids) == 1:
 
38
        return '(%s)'%ids[0]
 
39
    elif len(ids) >1 :
 
40
        for i in ids:
 
41
            if i:
 
42
                res += (i,)
 
43
        return str(tuple(res))
 
44
    else:
 
45
        return ()
 
46
 
 
47
 
 
48
 
 
49
#----------------------------------------------------------
 
50
# Users
 
51
#----------------------------------------------------------
 
52
 
 
53
 
 
54
class aaia_steeringtype(osv.osv):
 
55
    _name = 'aaia.steeringtype'
 
56
    _columns = {
 
57
        'name': fields.text('Name'),
 
58
        'steeringconfig': fields.one2many('aaia.steeringconfig', 'steeringtypeid', 'steeringconfig'),
 
59
        'steeringtypeid': fields.integer('steeringtypeid'),
 
60
        'steeringtypename': fields.text('steeringtypename'),
 
61
    }
 
62
aaia_steeringtype()
 
63
 
 
64
class aaia_brakeabs(osv.osv):
 
65
    _name = 'aaia.brakeabs'
 
66
    _columns = {
 
67
        'name': fields.text('Name'),
 
68
        'brakeconfig': fields.one2many('aaia.brakeconfig', 'brakeabsid', 'brakeconfig'),
 
69
        'brakeabsid': fields.integer('brakeabsid'),
 
70
        'brakeabsname': fields.text('brakeabsname'),
 
71
    }
 
72
aaia_brakeabs()
 
73
 
 
74
class aaia_fuelsystemcontroltype(osv.osv):
 
75
    _name = 'aaia.fuelsystemcontroltype'
 
76
    _columns = {
 
77
        'name': fields.text('Name'),
 
78
        'fueldeliveryconfig': fields.one2many('aaia.fueldeliveryconfig', 'fuelsystemcontroltypeid', 'fueldeliveryconfig'),
 
79
        'fuelsystemcontroltypeid': fields.integer('fuelsystemcontroltypeid'),
 
80
        'fuelsystemcontroltypename': fields.text('fuelsystemcontroltypename'),
 
81
    }
 
82
aaia_fuelsystemcontroltype()
 
83
 
 
84
class aaia_cylinderheadtype(osv.osv):
 
85
    _name = 'aaia.cylinderheadtype'
 
86
    _columns = {
 
87
        'name': fields.text('Name'),
 
88
        'engineconfig': fields.one2many('aaia.engineconfig', 'cylinderheadtypeid', 'engineconfig'),
 
89
        'cylinderheadtypeid': fields.integer('cylinderheadtypeid'),
 
90
        'cylinderheadtypename': fields.text('cylinderheadtypename'),
 
91
    }
 
92
aaia_cylinderheadtype()
 
93
 
 
94
class aaia_bedtype(osv.osv):
 
95
    _name = 'aaia.bedtype'
 
96
    _columns = {
 
97
        'name': fields.text('Name'),
 
98
        'bedconfig': fields.one2many('aaia.bedconfig', 'bedtypeid', 'bedconfig'),
 
99
        'bedtypeid': fields.integer('bedtypeid'),
 
100
        'bedtypename': fields.text('bedtypename'),
 
101
    }
 
102
aaia_bedtype()
 
103
 
 
104
class aaia_vehicletype(osv.osv):
 
105
    _name = 'aaia.vehicletype'
 
106
    _columns = {
 
107
        'name': fields.text('Name'),
 
108
        'model': fields.one2many('aaia.model', 'vehicletypeid', 'model'),
 
109
        'vehicletypeid': fields.integer('vehicletypeid'),
 
110
        'vehicletypename': fields.text('vehicletypename'),
 
111
        'vehicletypegroupid': fields.integer('vehicletypegroupid'),
 
112
    }
 
113
aaia_vehicletype()
 
114
 
 
115
class aaia_brakesystem(osv.osv):
 
116
    _name = 'aaia.brakesystem'
 
117
    _columns = {
 
118
        'name': fields.text('Name'),
 
119
        'brakeconfig': fields.one2many('aaia.brakeconfig', 'brakesystemid', 'brakeconfig'),
 
120
        'brakesystemid': fields.integer('brakesystemid'),
 
121
        'brakesystemname': fields.text('brakesystemname'),
 
122
    }
 
123
aaia_brakesystem()
 
124
 
 
125
class aaia_year(osv.osv):
 
126
    def _search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False, access_rights_uid=None):
 
127
        typelist = [type(x) for x in args]
 
128
        ##### If there is no dict, then it doesn't come from our view
 
129
        if not dict in typelist:
 
130
            return super(aaia_year, self)._search(cr, uid, args, offset=offset, limit=limit, order=order, context=context, count=count, access_rights_uid=access_rights_uid)
 
131
        ##### If this call includes a tuple ('id', 'in', [....]), it is only to take care of offset, limit, etc...
 
132
        elif tuple in typelist:
 
133
            return super(aaia_year, self)._search(cr, uid, [args[typelist.index(tuple)]], offset=offset, limit=limit, order=order, context=context, count=count, access_rights_uid=access_rights_uid)
 
134
        else:
 
135
            ##### If not, we show only the engineconfig's which correspond to year, make, model already selected
 
136
            myargs = []
 
137
            for item in args:
 
138
                if item['column'] == 'enginebase' and item['values']:
 
139
                    myargs = [('enginebaseid', 'in', item['values'])]
 
140
                    break
 
141
            if myargs:
 
142
                engineidlist = self.pool.get('aaia.engineconfig').search(cr, uid, myargs)
 
143
                myargs = [('engineconfig', 'in', engineidlist)]
 
144
                idlist = self.pool.get('aaia.vehicle').search(cr, uid, myargs)
 
145
                res = self.pool.get('aaia.vehicle').read(cr, uid, idlist, ['basevehicleid'])
 
146
                myargs = [('basevehicleid', 'in', uniquify([x['basevehicleid'][0] for x in res]))]
 
147
            else:
 
148
                myargs = []
 
149
            for item in args:
 
150
                if item['column'] != 'enginebase':
 
151
                    if item['values']:
 
152
                        myargs.append((item['column'], 'in', item['values']))
 
153
            if myargs:
 
154
                idlist = self.pool.get('aaia.basevehicle').search(cr, uid, myargs)
 
155
                res = self.pool.get('aaia.basevehicle').read(cr, uid, idlist, ['yearid'])
 
156
                finalargs = [('yearid', 'in', uniquify([x['yearid'][0] for x in res]))]
 
157
            else:
 
158
                finalargs = []
 
159
            ##### We finally call the super to take care of offset, limit, etc...
 
160
            res =  super(aaia_year, self)._search(cr, uid, finalargs, offset, limit, order, context, count, access_rights_uid)
 
161
            return res
 
162
 
 
163
    
 
164
    def name_get(self, cr, uid, ids, context=None):
 
165
        if type(ids) != list:
 
166
            ids = [ids]
 
167
        return [(x, str(x)+"XX") for x in ids]
 
168
#     def _name_get_fnc(self, cr, uid, ids, prop, unknow_none, context):
 
169
#         res = self.name_get(cr, uid, ids, context)
 
170
#         return dict(res)
 
171
    _name = 'aaia.year'
 
172
    _columns = {
 
173
        'name': fields.char('Name', size=64),
 
174
#         'complete_name': fields.function(_name_get_fnc, method=True, type="char", string='Name'), 
 
175
        'basevehicle': fields.one2many('aaia.basevehicle', 'yearid', 'basevehicle'),
 
176
        'yearid': fields.integer('yearid'),
 
177
    }
 
178
aaia_year()
 
179
 
 
180
class aaia_drivetype(osv.osv):
 
181
    _name = 'aaia.drivetype'
 
182
    _columns = {
 
183
        'name': fields.text('Name'),
 
184
        'drivetypeid': fields.integer('drivetypeid'),
 
185
        'drivetypename': fields.text('drivetypename'),
 
186
    }
 
187
aaia_drivetype()
 
188
 
 
189
class aaia_wheelbase(osv.osv):
 
190
    def name_get(self, cr, uid, ids, context=None):
 
191
        if type(ids) != list:
 
192
            ids = [ids]
 
193
        return [(x, 'myname') for x in ids]
 
194
    _name = 'aaia.wheelbase'
 
195
    _columns = {
 
196
        'name': fields.text('Name'),
 
197
        'wheelbaseid': fields.integer('wheelbaseid'),
 
198
        'wheelbase': fields.text('wheelbase'),
 
199
        'wheelbasemetric': fields.text('wheelbasemetric'),
 
200
    }
 
201
aaia_wheelbase()
 
202
 
 
203
class aaia_transmissiontype(osv.osv):
 
204
    _name = 'aaia.transmissiontype'
 
205
    _columns = {
 
206
        'name': fields.text('Name'),
 
207
        'transmissionbase': fields.one2many('aaia.transmissionbase', 'transmissiontypeid', 'transmissionbase'),
 
208
        'transmissiontypeid': fields.integer('transmissiontypeid'),
 
209
        'transmissiontypename': fields.text('transmissiontypename'),
 
210
    }
 
211
aaia_transmissiontype()
 
212
 
 
213
class aaia_springtype(osv.osv):
 
214
    _name = 'aaia.springtype'
 
215
    _columns = {
 
216
        'name': fields.text('Name'),
 
217
        'springtypeconfig': fields.one2many('aaia.springtypeconfig', 'frontspringtypeid', 'springtypeconfig'),
 
218
        'springtypeconfig': fields.one2many('aaia.springtypeconfig', 'rearspringtypeid', 'springtypeconfig'),
 
219
        'springtypeid': fields.integer('springtypeid'),
 
220
        'springtypename': fields.text('springtypename'),
 
221
    }
 
222
aaia_springtype()
 
223
 
 
224
class aaia_ignitionsystemtype(osv.osv):
 
225
    _name = 'aaia.ignitionsystemtype'
 
226
    _columns = {
 
227
        'name': fields.text('Name'),
 
228
        'engineconfig': fields.one2many('aaia.engineconfig', 'ignitionsystemtypeid', 'engineconfig'),
 
229
        'ignitionsystemtypeid': fields.integer('ignitionsystemtypeid'),
 
230
        'ignitionsystemtypename': fields.text('ignitionsystemtypename'),
 
231
    }
 
232
aaia_ignitionsystemtype()
 
233
 
 
234
class aaia_bedlength(osv.osv):
 
235
    def name_get(self, cr, uid, ids, context=None):
 
236
        if type(ids) != list:
 
237
            ids = [ids]
 
238
        return [(x, 'myname') for x in ids]
 
239
    _name = 'aaia.bedlength'
 
240
    _columns = {
 
241
        'name': fields.text('Name'),
 
242
        'bedconfig': fields.one2many('aaia.bedconfig', 'bedlengthid', 'bedconfig'),
 
243
        'bedlengthid': fields.integer('bedlengthid'),
 
244
        'bedlength': fields.char('bedlength', size=30),
 
245
        'bedlengthmetric': fields.char('bedlengthmetric', size=30),
 
246
    }
 
247
aaia_bedlength()
 
248
 
 
249
class aaia_enginevin(osv.osv):
 
250
    _name = 'aaia.enginevin'
 
251
    _columns = {
 
252
        'name': fields.text('Name'),
 
253
        'engineconfig': fields.one2many('aaia.engineconfig', 'enginevinid', 'engineconfig'),
 
254
        'enginevinid': fields.integer('enginevinid'),
 
255
        'enginevinname': fields.text('enginevinname'),
 
256
    }
 
257
aaia_enginevin()
 
258
 
 
259
class aaia_make(osv.osv):
 
260
    def _search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False, access_rights_uid=None):
 
261
        typelist = [type(x) for x in args]
 
262
        ##### If there is no dict, then it doesn't come from our view
 
263
        if not dict in typelist:
 
264
            return super(aaia_make, self)._search(cr, uid, args, offset=offset, limit=limit, order=order, context=context, count=count, access_rights_uid=access_rights_uid)
 
265
        ##### If this call includes a tuple ('id', 'in', [...]), it is only to take care of offset, limit, etc...
 
266
        elif tuple in typelist:
 
267
            return super(aaia_make, self)._search(cr, uid, [args[typelist.index(tuple)]], offset=offset, limit=limit, order=order, context=context, count=count, access_rights_uid=access_rights_uid)
 
268
        else:
 
269
            ##### If not, we show only the engineconfig's which correspond to year, make, model already selected
 
270
            myargs = []
 
271
            for item in args:
 
272
                if item['column'] == 'enginebase' and item['values']:
 
273
                    myargs = [('enginebaseid', 'in', item['values'])]
 
274
                    break
 
275
            if myargs:
 
276
                engineidlist = self.pool.get('aaia.engineconfig').search(cr, uid, myargs)
 
277
                myargs = [('engineconfig', 'in', engineidlist)]
 
278
                idlist = self.pool.get('aaia.vehicle').search(cr, uid, myargs)
 
279
                res = self.pool.get('aaia.vehicle').read(cr, uid, idlist, ['basevehicleid'])
 
280
                myargs = [('basevehicleid', 'in', uniquify([x['basevehicleid'][0] for x in res]))]
 
281
            else:
 
282
                myargs = []
 
283
            for item in args:
 
284
                if item['column'] != 'enginebase':
 
285
                    if item['values']:
 
286
                        myargs.append((item['column'], 'in', item['values']))
 
287
            if myargs:
 
288
                idlist = self.pool.get('aaia.basevehicle').search(cr, uid, myargs)
 
289
                res = self.pool.get('aaia.basevehicle').read(cr, uid, idlist, ['makeid'])
 
290
                finalargs = [('makeid', 'in', uniquify([x['makeid'][0] for x in res]))]
 
291
            else:
 
292
                finalargs = []
 
293
            ##### We finally call the super to take care of offset, limit, etc...
 
294
            res =  super(aaia_make, self)._search(cr, uid, finalargs, offset, limit, order, context, count, access_rights_uid)
 
295
            return res
 
296
 
 
297
    _name = 'aaia.make'
 
298
    _columns = {
 
299
        'name': fields.text('Name'),
 
300
        'basevehicle': fields.one2many('aaia.basevehicle', 'makeid', 'basevehicle'),
 
301
        'makeid': fields.integer('makeid'),
 
302
        'makename': fields.text('makename'),
 
303
    }
 
304
aaia_make()
 
305
 
 
306
class aaia_springtypeconfig(osv.osv):
 
307
    def name_get(self, cr, uid, ids, context=None):
 
308
        if type(ids) != list:
 
309
            ids = [ids]
 
310
        return [(x, 'myname') for x in ids]
 
311
    _name = 'aaia.springtypeconfig'
 
312
    _columns = {
 
313
        'name': fields.text('Name'),
 
314
        'springtypeconfigid': fields.integer('springtypeconfigid'),
 
315
        'frontspringtypeid': fields.many2one('aaia.springtype', 'frontspringtypeid'),
 
316
        'rearspringtypeid': fields.many2one('aaia.springtype', 'rearspringtypeid'),
 
317
    }
 
318
aaia_springtypeconfig()
 
319
 
 
320
class aaia_braketype(osv.osv):
 
321
    _name = 'aaia.braketype'
 
322
    _columns = {
 
323
        'name': fields.text('Name'),
 
324
        'brakeconfig': fields.one2many('aaia.brakeconfig', 'frontbraketypeid', 'brakeconfig'),
 
325
        'brakeconfig': fields.one2many('aaia.brakeconfig', 'rearbraketypeid', 'brakeconfig'),
 
326
        'braketypeid': fields.integer('braketypeid'),
 
327
        'braketypename': fields.text('braketypename'),
 
328
    }
 
329
aaia_braketype()
 
330
 
 
331
class aaia_fueldeliverytype(osv.osv):
 
332
    _name = 'aaia.fueldeliverytype'
 
333
    _columns = {
 
334
        'name': fields.text('Name'),
 
335
        'fueldeliveryconfig': fields.one2many('aaia.fueldeliveryconfig', 'fueldeliverytypeid', 'fueldeliveryconfig'),
 
336
        'fueldeliverytypeid': fields.integer('fueldeliverytypeid'),
 
337
        'fueldeliverytypename': fields.text('fueldeliverytypename'),
 
338
    }
 
339
aaia_fueldeliverytype()
 
340
 
 
341
class aaia_fueldeliverysubtype(osv.osv):
 
342
    _name = 'aaia.fueldeliverysubtype'
 
343
    _columns = {
 
344
        'name': fields.text('Name'),
 
345
        'fueldeliveryconfig': fields.one2many('aaia.fueldeliveryconfig', 'fueldeliverysubtypeid', 'fueldeliveryconfig'),
 
346
        'fueldeliverysubtypeid': fields.integer('fueldeliverysubtypeid'),
 
347
        'fueldeliverysubtypename': fields.text('fueldeliverysubtypename'),
 
348
    }
 
349
aaia_fueldeliverysubtype()
 
350
 
 
351
class aaia_fuelsystemdesign(osv.osv):
 
352
    _name = 'aaia.fuelsystemdesign'
 
353
    _columns = {
 
354
        'name': fields.text('Name'),
 
355
        'fueldeliveryconfig': fields.one2many('aaia.fueldeliveryconfig', 'fuelsystemdesignid', 'fueldeliveryconfig'),
 
356
        'fuelsystemdesignid': fields.integer('fuelsystemdesignid'),
 
357
        'fuelsystemdesignname': fields.text('fuelsystemdesignname'),
 
358
    }
 
359
aaia_fuelsystemdesign()
 
360
 
 
361
class aaia_fueldeliveryconfig(osv.osv):
 
362
    def name_get(self, cr, uid, ids, context=None):
 
363
        if type(ids) != list:
 
364
            ids = [ids]
 
365
        return [(x, 'myname') for x in ids]
 
366
    _name = 'aaia.fueldeliveryconfig'
 
367
    _columns = {
 
368
        'name': fields.text('Name'),
 
369
        'engineconfig': fields.one2many('aaia.engineconfig', 'fueldeliveryconfigid', 'engineconfig'),
 
370
        'fueldeliveryconfigid': fields.integer('fueldeliveryconfigid'),
 
371
        'fueldeliverytypeid': fields.many2one('aaia.fueldeliverytype', 'fueldeliverytypeid'),
 
372
        'fueldeliverysubtypeid': fields.many2one('aaia.fueldeliverysubtype', 'fueldeliverysubtypeid'),
 
373
        'fuelsystemcontroltypeid': fields.many2one('aaia.fuelsystemcontroltype', 'fuelsystemcontroltypeid'),
 
374
        'fuelsystemdesignid': fields.many2one('aaia.fuelsystemdesign', 'fuelsystemdesignid'),
 
375
    }
 
376
aaia_fueldeliveryconfig()
 
377
 
 
378
class aaia_bedconfig(osv.osv):
 
379
    def name_get(self, cr, uid, ids, context=None):
 
380
        if type(ids) != list:
 
381
            ids = [ids]
 
382
        return [(x, 'myname') for x in ids]
 
383
    _name = 'aaia.bedconfig'
 
384
    _columns = {
 
385
        'name': fields.text('Name'),
 
386
        'bedconfigid': fields.integer('bedconfigid'),
 
387
        'bedlengthid': fields.many2one('aaia.bedlength', 'bedlengthid'),
 
388
        'bedtypeid': fields.many2one('aaia.bedtype', 'bedtypeid'),
 
389
    }
 
390
aaia_bedconfig()
 
391
 
 
392
class aaia_model(osv.osv):
 
393
    def _search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False, access_rights_uid=None):
 
394
        typelist = [type(x) for x in args]
 
395
        ##### If there is no dict, then it doesn't come from our view
 
396
        if not dict in typelist:
 
397
            return super(aaia_model, self)._search(cr, uid, args, offset=offset, limit=limit, order=order, context=context, count=count, access_rights_uid=access_rights_uid)
 
398
        ##### If this call includes a tuple ('id', 'in', [....]), it is only to take care of offset, limit, etc...
 
399
        elif tuple in typelist:
 
400
            return super(aaia_model, self)._search(cr, uid, [args[typelist.index(tuple)]], offset=offset, limit=limit, order=order, context=context, count=count, access_rights_uid=access_rights_uid)
 
401
        else:
 
402
            ##### If not, we show only the engineconfig's which correspond to year, make, model already selected
 
403
            myargs = []
 
404
            for item in args:
 
405
                if item['column'] == 'enginebase' and item['values']:
 
406
                    myargs = [('enginebaseid', 'in', item['values'])]
 
407
                    break
 
408
            if myargs:
 
409
                engineidlist = self.pool.get('aaia.engineconfig').search(cr, uid, myargs)
 
410
                myargs = [('engineconfig', 'in', engineidlist)]
 
411
                idlist = self.pool.get('aaia.vehicle').search(cr, uid, myargs)
 
412
                res = self.pool.get('aaia.vehicle').read(cr, uid, idlist, ['basevehicleid'])
 
413
                myargs = [('basevehicleid', 'in', uniquify([x['basevehicleid'][0] for x in res]))]
 
414
            else:
 
415
                myargs = []
 
416
            for item in args:
 
417
                if item['column'] != 'enginebase':
 
418
                    if item['values']:
 
419
                        myargs.append((item['column'], 'in', item['values']))
 
420
            if myargs:
 
421
                idlist = self.pool.get('aaia.basevehicle').search(cr, uid, myargs)
 
422
                res = self.pool.get('aaia.basevehicle').read(cr, uid, idlist, ['modelid'])
 
423
                finalargs = [('modelid', 'in', uniquify([x['modelid'][0] for x in res]))]
 
424
            else:
 
425
                finalargs = []
 
426
            ##### We finally call the super to take care of offset, limit, etc...
 
427
            res =  super(aaia_model, self)._search(cr, uid, finalargs, offset, limit, order, context, count, access_rights_uid)
 
428
            return res
 
429
 
 
430
    _name = 'aaia.model'
 
431
    _columns = {
 
432
        'name': fields.text('Name'),
 
433
        'basevehicle': fields.one2many('aaia.basevehicle', 'modelid', 'basevehicle'),
 
434
        'modelid': fields.integer('modelid'),
 
435
        'modelname': fields.text('modelname'),
 
436
        'vehicletypeid': fields.many2one('aaia.vehicletype', 'vehicletypeid'),
 
437
    }
 
438
aaia_model()
 
439
 
 
440
class aaia_basevehicle(osv.osv):
 
441
    def name_get(self, cr, uid, ids, context=None):
 
442
        if type(ids) != list:
 
443
            ids = [ids]
 
444
        return [(x, 'myname') for x in ids]
 
445
    _name = 'aaia.basevehicle'
 
446
    _columns = {
 
447
        'name': fields.text('Name'),
 
448
        'vehicle': fields.one2many('aaia.vehicle', 'basevehicleid', 'vehicle'),
 
449
        'basevehicleid': fields.integer('basevehicleid'),
 
450
        'yearid': fields.many2one('aaia.year', 'yearid'),
 
451
        'makeid': fields.many2one('aaia.make', 'makeid'),
 
452
        'modelid': fields.many2one('aaia.model', 'modelid'),
 
453
    }
 
454
aaia_basevehicle()
 
455
 
 
456
class aaia_submodel(osv.osv):
 
457
    _name = 'aaia.submodel'
 
458
    _columns = {
 
459
        'name': fields.text('Name'),
 
460
        'vehicle': fields.one2many('aaia.vehicle', 'submodelid', 'vehicle'),
 
461
        'submodelid': fields.integer('submodelid'),
 
462
        'submodelname': fields.text('submodelname'),
 
463
    }
 
464
aaia_submodel()
 
465
 
 
466
class aaia_region(osv.osv):
 
467
    _name = 'aaia.region'
 
468
    _columns = {
 
469
        'name': fields.text('Name'),
 
470
        'vehicle': fields.one2many('aaia.vehicle', 'regionid', 'vehicle'),
 
471
        'regionid': fields.integer('regionid'),
 
472
        'parentid': fields.integer('parentid'),
 
473
        'regionabbr': fields.char('regionabbr', size=30),
 
474
        'regionname': fields.text('regionname'),
 
475
    }
 
476
aaia_region()
 
477
 
 
478
class aaia_bodynumdoors(osv.osv):
 
479
    def name_get(self, cr, uid, ids, context=None):
 
480
        if type(ids) != list:
 
481
            ids = [ids]
 
482
        return [(x, 'myname') for x in ids]
 
483
    _name = 'aaia.bodynumdoors'
 
484
    _columns = {
 
485
        'name': fields.text('Name'),
 
486
        'bodystyleconfig': fields.one2many('aaia.bodystyleconfig', 'bodynumdoorsid', 'bodystyleconfig'),
 
487
        'bodynumdoorsid': fields.integer('bodynumdoorsid'),
 
488
        'bodynumdoors': fields.char('bodynumdoors', size=30),
 
489
    }
 
490
aaia_bodynumdoors()
 
491
 
 
492
class aaia_bodytype(osv.osv):
 
493
    _name = 'aaia.bodytype'
 
494
    _columns = {
 
495
        'name': fields.text('Name'),
 
496
        'bodystyleconfig': fields.one2many('aaia.bodystyleconfig', 'bodytypeid', 'bodystyleconfig'),
 
497
        'bodytypeid': fields.integer('bodytypeid'),
 
498
        'bodytypename': fields.text('bodytypename'),
 
499
    }
 
500
aaia_bodytype()
 
501
 
 
502
class aaia_bodystyleconfig(osv.osv):
 
503
    def name_get(self, cr, uid, ids, context=None):
 
504
        if type(ids) != list:
 
505
            ids = [ids]
 
506
        return [(x, 'myname') for x in ids]
 
507
    _name = 'aaia.bodystyleconfig'
 
508
    _columns = {
 
509
        'name': fields.text('Name'),
 
510
        'bodystyleconfigid': fields.integer('bodystyleconfigid'),
 
511
        'bodynumdoorsid': fields.many2one('aaia.bodynumdoors', 'bodynumdoorsid'),
 
512
        'bodytypeid': fields.many2one('aaia.bodytype', 'bodytypeid'),
 
513
    }
 
514
aaia_bodystyleconfig()
 
515
 
 
516
class aaia_brakeconfig(osv.osv):
 
517
    def name_get(self, cr, uid, ids, context=None):
 
518
        if type(ids) != list:
 
519
            ids = [ids]
 
520
        return [(x, 'myname') for x in ids]
 
521
    _name = 'aaia.brakeconfig'
 
522
    _columns = {
 
523
        'name': fields.text('Name'),
 
524
        'brakeconfigid': fields.integer('brakeconfigid'),
 
525
        'brakesystemid': fields.many2one('aaia.brakesystem', 'brakesystemid'),
 
526
        'brakeabsid': fields.many2one('aaia.brakeabs', 'brakeabsid'),
 
527
        'frontbraketypeid': fields.many2one('aaia.braketype', 'frontbraketypeid'),
 
528
        'rearbraketypeid': fields.many2one('aaia.braketype', 'rearbraketypeid'),
 
529
    }
 
530
aaia_brakeconfig()
 
531
 
 
532
class aaia_enginedesignation(osv.osv):
 
533
    _name = 'aaia.enginedesignation'
 
534
    _columns = {
 
535
        'name': fields.text('Name'),
 
536
        'engineconfig': fields.one2many('aaia.engineconfig', 'enginedesignationid', 'engineconfig'),
 
537
        'enginedesignationid': fields.integer('enginedesignationid'),
 
538
        'enginedesignationname': fields.text('enginedesignationname'),
 
539
    }
 
540
aaia_enginedesignation()
 
541
 
 
542
class aaia_enginebase(osv.osv):
 
543
    ##### _search will be called twice: once from the view where args include only dictionaries (from the view)
 
544
    #####                               and once from the "super..." invoked from the first call
 
545
    def _search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False, access_rights_uid=None):
 
546
        typelist = [type(x) for x in args]
 
547
        ##### If there is no dict, then it doesn't come from our view
 
548
        if not dict in typelist:
 
549
            return super(aaia_enginebase, self)._search(cr, uid, args, offset=offset, limit=limit, order=order, context=context, count=count, access_rights_uid=access_rights_uid)
 
550
        ##### If this call includes a tuple ('id', 'in', [....]), it is only to take care of offset, limit, etc...
 
551
        elif tuple in typelist:
 
552
            return super(aaia_enginebase, self)._search(cr, uid, [args[typelist.index(tuple)]], offset=offset, limit=limit, order=order, context=context, count=count, access_rights_uid=access_rights_uid)
 
553
        else:
 
554
            ##### If not, we show only the engineconfig's which correspond to year, make, model already selected
 
555
            myargs = []
 
556
            for item in args:
 
557
                if item['values']:
 
558
                    myargs.append((item['column'], 'in', item['values']))
 
559
            if myargs:
 
560
                idlist = self.pool.get('aaia.basevehicle').search(cr, uid, myargs)
 
561
                idlist = self.pool.get('aaia.vehicle').search(cr, uid, [('basevehicleid', 'in', idlist)])
 
562
                res = self.pool.get('aaia.vehicle').read(cr, uid, idlist, ['engineconfig'])
 
563
                finalidlist = []
 
564
                for item in res:
 
565
                    finalidlist += item['engineconfig']
 
566
                finalargs = [('engineconfig', 'in', uniquify(finalidlist))]
 
567
            else:
 
568
                finalargs = []
 
569
            ##### We finally call the super to take care of offset, limit, etc...
 
570
            res =  super(aaia_enginebase, self)._search(cr, uid, finalargs, offset, limit, order, context, count, access_rights_uid)
 
571
            return res
 
572
            
 
573
 
 
574
    def name_get(self, cr, uid, ids, context=None):
 
575
        if type(ids) != list:
 
576
            ids = [ids]
 
577
        return [(x, 'myname') for x in ids]
 
578
    _name = 'aaia.enginebase'
 
579
    _columns = {
 
580
        'name': fields.text('Name'),
 
581
        'engineconfig': fields.one2many('aaia.engineconfig', 'enginebaseid', 'engineconfig'),
 
582
        'enginebaseid': fields.integer('enginebaseid'),
 
583
        'liter': fields.char('liter', size=30),
 
584
        'cc': fields.char('cc', size=30),
 
585
        'cid': fields.char('cid', size=30),
 
586
        'cylinders': fields.char('cylinders', size=30),
 
587
        'blocktype': fields.char('blocktype', size=30),
 
588
        'engborein': fields.char('engborein', size=30),
 
589
        'engboremetric': fields.char('engboremetric', size=30),
 
590
        'engstrokein': fields.char('engstrokein', size=30),
 
591
        'engstrokemetric': fields.char('engstrokemetric', size=30),
 
592
    }
 
593
aaia_enginebase()
 
594
 
 
595
class aaia_aspiration(osv.osv):
 
596
    _name = 'aaia.aspiration'
 
597
    _columns = {
 
598
        'name': fields.text('Name'),
 
599
        'engineconfig': fields.one2many('aaia.engineconfig', 'aspirationid', 'engineconfig'),
 
600
        'aspirationid': fields.integer('aspirationid'),
 
601
        'aspirationname': fields.text('aspirationname'),
 
602
    }
 
603
aaia_aspiration()
 
604
 
 
605
class aaia_fueltype(osv.osv):
 
606
    _name = 'aaia.fueltype'
 
607
    _columns = {
 
608
        'name': fields.text('Name'),
 
609
        'engineconfig': fields.one2many('aaia.engineconfig', 'fueltypeid', 'engineconfig'),
 
610
        'fueltypeid': fields.integer('fueltypeid'),
 
611
        'fueltypename': fields.text('fueltypename'),
 
612
    }
 
613
aaia_fueltype()
 
614
 
 
615
class aaia_mfr(osv.osv):
 
616
    _name = 'aaia.mfr'
 
617
    _columns = {
 
618
        'name': fields.text('Name'),
 
619
        'engineconfig': fields.one2many('aaia.engineconfig', 'enginemfrid', 'engineconfig'),
 
620
        'transmission': fields.one2many('aaia.transmission', 'transmissionmfrid', 'transmission'),
 
621
        'mfrid': fields.integer('mfrid'),
 
622
        'mfrname': fields.text('mfrname'),
 
623
    }
 
624
aaia_mfr()
 
625
 
 
626
class aaia_engineversion(osv.osv):
 
627
    def name_get(self, cr, uid, ids, context=None):
 
628
        if type(ids) != list:
 
629
            ids = [ids]
 
630
        return [(x, 'myname') for x in ids]
 
631
    _name = 'aaia.engineversion'
 
632
    _columns = {
 
633
        'name': fields.text('Name'),
 
634
        'engineconfig': fields.one2many('aaia.engineconfig', 'engineversionid', 'engineconfig'),
 
635
        'engineversionid': fields.integer('engineversionid'),
 
636
        'engineversion': fields.text('engineversion'),
 
637
    }
 
638
aaia_engineversion()
 
639
 
 
640
class aaia_engineconfig(osv.osv):
 
641
    def name_get(self, cr, uid, ids, context=None):
 
642
        if type(ids) != list:
 
643
            ids = [ids]
 
644
        return [(x, 'myname') for x in ids]
 
645
    _name = 'aaia.engineconfig'
 
646
    _columns = {
 
647
        'name': fields.text('Name'),
 
648
        'engineconfigid': fields.integer('engineconfigid'),
 
649
        'enginedesignationid': fields.many2one('aaia.enginedesignation', 'enginedesignationid'),
 
650
        'enginevinid': fields.many2one('aaia.enginevin', 'enginevinid'),
 
651
        'enginebaseid': fields.many2one('aaia.enginebase', 'enginebaseid'),
 
652
        'fueldeliveryconfigid': fields.many2one('aaia.fueldeliveryconfig', 'fueldeliveryconfigid'),
 
653
        'aspirationid': fields.many2one('aaia.aspiration', 'aspirationid'),
 
654
        'cylinderheadtypeid': fields.many2one('aaia.cylinderheadtype', 'cylinderheadtypeid'),
 
655
        'fueltypeid': fields.many2one('aaia.fueltype', 'fueltypeid'),
 
656
        'ignitionsystemtypeid': fields.many2one('aaia.ignitionsystemtype', 'ignitionsystemtypeid'),
 
657
        'enginemfrid': fields.many2one('aaia.mfr', 'enginemfrid'),
 
658
        'engineversionid': fields.many2one('aaia.engineversion', 'engineversionid'),
 
659
        'valvesid': fields.integer('valvesid'),
 
660
        'poweroutputid': fields.integer('poweroutputid'),
 
661
    }
 
662
aaia_engineconfig()
 
663
 
 
664
class aaia_mfrbodycode(osv.osv):
 
665
    _name = 'aaia.mfrbodycode'
 
666
    _columns = {
 
667
        'name': fields.text('Name'),
 
668
        'mfrbodycodeid': fields.integer('mfrbodycodeid'),
 
669
        'mfrbodycodename': fields.text('mfrbodycodename'),
 
670
    }
 
671
aaia_mfrbodycode()
 
672
 
 
673
class aaia_steeringsystem(osv.osv):
 
674
    _name = 'aaia.steeringsystem'
 
675
    _columns = {
 
676
        'name': fields.text('Name'),
 
677
        'steeringconfig': fields.one2many('aaia.steeringconfig', 'steeringsystemid', 'steeringconfig'),
 
678
        'steeringsystemid': fields.integer('steeringsystemid'),
 
679
        'steeringsystemname': fields.text('steeringsystemname'),
 
680
    }
 
681
aaia_steeringsystem()
 
682
 
 
683
class aaia_steeringconfig(osv.osv):
 
684
    def name_get(self, cr, uid, ids, context=None):
 
685
        if type(ids) != list:
 
686
            ids = [ids]
 
687
        return [(x, 'myname') for x in ids]
 
688
    _name = 'aaia.steeringconfig'
 
689
    _columns = {
 
690
        'name': fields.text('Name'),
 
691
        'steeringconfigid': fields.integer('steeringconfigid'),
 
692
        'steeringtypeid': fields.many2one('aaia.steeringtype', 'steeringtypeid'),
 
693
        'steeringsystemid': fields.many2one('aaia.steeringsystem', 'steeringsystemid'),
 
694
    }
 
695
aaia_steeringconfig()
 
696
 
 
697
class aaia_transmissionnumspeeds(osv.osv):
 
698
    def name_get(self, cr, uid, ids, context=None):
 
699
        if type(ids) != list:
 
700
            ids = [ids]
 
701
        return [(x, 'myname') for x in ids]
 
702
    _name = 'aaia.transmissionnumspeeds'
 
703
    _columns = {
 
704
        'name': fields.text('Name'),
 
705
        'transmissionbase': fields.one2many('aaia.transmissionbase', 'transmissionnumspeedsid', 'transmissionbase'),
 
706
        'transmissionnumspeedsid': fields.integer('transmissionnumspeedsid'),
 
707
        'transmissionnumspeeds': fields.char('transmissionnumspeeds', size=30),
 
708
    }
 
709
aaia_transmissionnumspeeds()
 
710
 
 
711
class aaia_transmissioncontroltype(osv.osv):
 
712
    _name = 'aaia.transmissioncontroltype'
 
713
    _columns = {
 
714
        'name': fields.text('Name'),
 
715
        'transmissionbase': fields.one2many('aaia.transmissionbase', 'transmissioncontroltypeid', 'transmissionbase'),
 
716
        'transmissioncontroltypeid': fields.integer('transmissioncontroltypeid'),
 
717
        'transmissioncontroltypename': fields.text('transmissioncontroltypename'),
 
718
    }
 
719
aaia_transmissioncontroltype()
 
720
 
 
721
class aaia_transmissionbase(osv.osv):
 
722
    def name_get(self, cr, uid, ids, context=None):
 
723
        if type(ids) != list:
 
724
            ids = [ids]
 
725
        return [(x, 'myname') for x in ids]
 
726
    _name = 'aaia.transmissionbase'
 
727
    _columns = {
 
728
        'name': fields.text('Name'),
 
729
        'transmission': fields.one2many('aaia.transmission', 'transmissionbaseid', 'transmission'),
 
730
        'transmissionbaseid': fields.integer('transmissionbaseid'),
 
731
        'transmissiontypeid': fields.many2one('aaia.transmissiontype', 'transmissiontypeid'),
 
732
        'transmissionnumspeedsid': fields.many2one('aaia.transmissionnumspeeds', 'transmissionnumspeedsid'),
 
733
        'transmissioncontroltypeid': fields.many2one('aaia.transmissioncontroltype', 'transmissioncontroltypeid'),
 
734
    }
 
735
aaia_transmissionbase()
 
736
 
 
737
class aaia_transmissionmfrcode(osv.osv):
 
738
    def name_get(self, cr, uid, ids, context=None):
 
739
        if type(ids) != list:
 
740
            ids = [ids]
 
741
        return [(x, 'myname') for x in ids]
 
742
    _name = 'aaia.transmissionmfrcode'
 
743
    _columns = {
 
744
        'name': fields.text('Name'),
 
745
        'transmission': fields.one2many('aaia.transmission', 'transmissionmfrcodeid', 'transmission'),
 
746
        'transmissionmfrcodeid': fields.integer('transmissionmfrcodeid'),
 
747
        'transmissionmfrcode': fields.text('transmissionmfrcode'),
 
748
    }
 
749
aaia_transmissionmfrcode()
 
750
 
 
751
class aaia_transmission(osv.osv):
 
752
    def name_get(self, cr, uid, ids, context=None):
 
753
        if type(ids) != list:
 
754
            ids = [ids]
 
755
        return [(x, 'myname') for x in ids]
 
756
    _name = 'aaia.transmission'
 
757
    _columns = {
 
758
        'name': fields.text('Name'),
 
759
        'transmissionid': fields.integer('transmissionid'),
 
760
        'transmissionbaseid': fields.many2one('aaia.transmissionbase', 'transmissionbaseid'),
 
761
        'transmissionmfrcodeid': fields.many2one('aaia.transmissionmfrcode', 'transmissionmfrcodeid'),
 
762
        'transmissionmfrid': fields.many2one('aaia.mfr', 'transmissionmfrid'),
 
763
        'transmissioneleccontrolledid': fields.integer('transmissioneleccontrolledid'),
 
764
    }
 
765
aaia_transmission()
 
766
 
 
767
class aaia_vehicle(osv.osv):
 
768
    def name_get(self, cr, uid, ids, context=None):
 
769
        if type(ids) != list:
 
770
            ids = [ids]
 
771
        return [(x, 'myname') for x in ids]
 
772
    _name = 'aaia.vehicle'
 
773
    _columns = {
 
774
        'name': fields.text('Name'),
 
775
        'vehicleid': fields.integer('vehicleid'),
 
776
        'basevehicleid': fields.many2one('aaia.basevehicle', 'basevehicleid'),
 
777
        'submodelid': fields.many2one('aaia.submodel', 'submodelid'),
 
778
        'source': fields.text('source'),
 
779
        'regionid': fields.many2one('aaia.region', 'regionid'),
 
780
        'bedconfig': fields.many2many('aaia.bedconfig', 'vehicletobedconfig', 'vehicleid', 'bedconfigid', 'bedconfig'),
 
781
        'bodystyleconfig': fields.many2many('aaia.bodystyleconfig', 'vehicletobodystyleconfig', 'vehicleid', 'bodystyleconfigid', 'bodystyleconfig'),
 
782
        'brakeconfig': fields.many2many('aaia.brakeconfig', 'vehicletobrakeconfig', 'vehicleid', 'brakeconfigid', 'brakeconfig'),
 
783
        'drivetype': fields.many2many('aaia.drivetype', 'vehicletodrivetype', 'vehicleid', 'drivetypeid', 'drivetype'),
 
784
        'engineconfig': fields.many2many('aaia.engineconfig', 'vehicletoengineconfig', 'vehicleid', 'engineconfigid', 'engineconfig'),
 
785
        'mfrbodycode': fields.many2many('aaia.mfrbodycode', 'vehicletomfrbodycode', 'vehicleid', 'mfrbodycodeid', 'mfrbodycode'),
 
786
        'springtypeconfig': fields.many2many('aaia.springtypeconfig', 'vehicletospringtypeconfig', 'vehicleid', 'springtypeconfigid', 'springtypeconfig'),
 
787
        'steeringconfig': fields.many2many('aaia.steeringconfig', 'vehicletosteeringconfig', 'vehicleid', 'steeringconfigid', 'steeringconfig'),
 
788
        'transmission': fields.many2many('aaia.transmission', 'vehicletotransmission', 'vehicleid', 'transmissionid', 'transmission'),
 
789
        'wheelbase': fields.many2many('aaia.wheelbase', 'vehicletowheelbase', 'vehicleid', 'wheelbaseid', 'wheelbase'),
 
790
    }
 
791
aaia_vehicle()