49
49
for iwl in classe.impartition_week_line_ids:
50
50
group_id=iwl.group_id.id
51
if group_id not in data_groups: data_groups[group_id]={'duration': 0, 'iwl_ids': [],}
51
if group_id not in data_groups:
52
data_groups[group_id]={'duration': 0, 'iwl_ids': [],}
52
53
data_groups[group_id]['duration']+=iwl.duration
53
54
data_groups[group_id]['iwl_ids'].append(iwl.id)
54
55
equal_duration_for_every_group=reduce(lambda x,y: x==y,map(lambda x: x['duration'],data_groups.values()))
103
104
class school_iwl_handling(osv.osv_memory):
104
105
_name = 'school.iwl.handling'
106
def _get_default_parent_group_domain(self, cr, uid, context=None):
107
if not context: context={}
108
iwl_ids=context.get('active_ids',[])
109
ret=self.on_change_iwl_ids(cr, uid, None, [(6,0,iwl_ids)], context=None)
110
return ret['value']['parent_group_domain']
113
108
'iwl_ids' : fields.many2many('school.impartition_week_line','school_iwl_handling_rel','wizard_id','iwl_id',string='IWLs',),
114
109
'teacher_course_ids' : fields.one2many('school.iwl.handling.teacher_course','wizard_id',string='Teacher course assignation',),
127
'iwl_ids' : lambda self,cr,uid,context={} : context.get('active_ids',[]),
128
'parent_group_domain' : _get_default_parent_group_domain,
129
122
'classification_id_domain' : lambda *a: '0',
130
123
'classification_method' : lambda *a: 'manual',
126
def default_get(self, cr, uid, fields, context=None):
129
ret = super(school_iwl_handling, self).default_get(cr, uid, fields, context=context)
130
ret['iwl_ids'] = context.get('active_ids',[])
131
iwls=self.pool.get('school.impartition_week_line').browse(cr, uid, ret['iwl_ids'])
132
iwl_data=self._get_iwl_data(cr, uid, iwls)
133
if iwl_data['error']:
134
ret['state'] = 'wrong'
135
ret['comment'] = iwl_data['comment']
137
ret['parent_group_domain'] = '0'
139
ret['state'] = 'ready'
141
groups = iwl_data['groups']
142
parent_ids = self._get_parent_group_list(cr, groups.keys())
143
ret['parent_group_domain'] = ','.join(map(str,parent_ids)+['0'])
144
ret['parent_group'] = len(parent_ids) == 1 and parent_ids[0]
133
148
def _get_classification_list(self, cr, n_activities, parent_id):
134
149
if not parent_id: return []
135
150
query="SELECT classification FROM groups_groups_rel WHERE classification IS NOT NULL AND parent_id=%(parent_id)s GROUP BY classification HAVING count(*)=%(n_activities)s"
185
200
groups=iwl_data['groups']
186
201
parent_ids=self._get_parent_group_list(cr, groups.keys())
187
return {'value': {'state': ret_state, 'comment': comment, 'parent_group': False, 'classification_name': False, 'classification_id': False, 'classification_id_domain': False,'parent_group_domain': ','.join(map(str,parent_ids)+['0'])},}
205
'parent_group': len(parent_ids) == 1 and parent_ids[0] or False,
206
'classification_name': False,
207
'classification_id': False,
208
'classification_id_domain': False,
209
'parent_group_domain': ','.join(map(str,parent_ids)+['0']),
189
212
def act_cancel(self, cr, uid, ids, context=None):
247
270
iwl_obj=self.pool.get('school.impartition_week_line')
248
271
cl_obj=self.pool.get('school.classe')
249
272
for wizard in self.browse(cr, uid, ids):
251
275
iwl_data=self._get_iwl_data(cr, uid, wizard.iwl_ids)
252
276
if iwl_data['error']:
282
305
iwl_obj.write(cr, uid, [iwl.id for iwl in classe.impartition_week_line_ids], {'classe_id': classe_course[classe.course_id.id]})
283
306
cl_obj.unlink(cr, uid, [x for x in classe_ids if x not in classe_course.values()])
285
# import pdb;pdb.set_trace()
287
308
# Crea els subgrups
289
310
if wizard.n_activities==1:
310
331
for (course_id,classe_id) in classe_course.items():
311
332
for subgrup_id in subgrup_ids:
312
333
for c in range(time_courses[course_id].values()[0]):
313
iwl_obj.create(cr, uid, {'classe_id': classe_id, 'subgroup': subgrup_id, 'duration': duration,})
334
iwl_created.append( iwl_obj.create(cr, uid, {'classe_id': classe_id, 'subgroup': subgrup_id, 'duration': duration,}) )
315
336
# Reduim els grups de les classes
316
337
cl_obj.reduce_group_level(cr, uid, classe_course.values(), context=context)
317
self.write(cr, uid, ids, {'state': 'done'})
339
self.write(cr, uid, ids, {'state': 'done', 'iwl_ids': [(6,0,iwl_created)],})
319
342
school_iwl_handling()