~pau-tecnoba/school-base-openerp-module/pau

« back to all changes in this revision

Viewing changes to school_iwl/wizard/school_iwl_handling.py

  • Committer: Pere Erro
  • Date: 2012-09-11 10:25:55 UTC
  • Revision ID: pereerro@terra.es-20120911102555-ub0y5jq7p9te97ij
[FIX] Bug #1048613 fixed
[IMP] New wizard to tutorize students

Show diffs side-by-side

added added

removed removed

Lines of Context:
48
48
            data_groups={}
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'
105
106
 
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']
111
 
 
112
107
    _columns = {
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',),
124
119
    }
125
120
 
126
121
    _defaults = {
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',
131
124
    }
132
125
 
 
126
    def default_get(self, cr, uid, fields, context=None):
 
127
        if not context:
 
128
            context = {}
 
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']
 
136
            parent_ids = []
 
137
            ret['parent_group_domain'] = '0'
 
138
        else:
 
139
            ret['state'] = 'ready'
 
140
            ret['comment'] = ''
 
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]
 
145
        return ret
 
146
        
 
147
        
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"
184
199
            comment=''
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'])},}
 
202
        return {'value': {
 
203
                          'state': ret_state, 
 
204
                          'comment': comment, 
 
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']),
 
210
                        },}
188
211
 
189
212
    def act_cancel(self, cr, uid, ids, context=None):
190
213
        pass
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):
 
273
            iwl_created = []
250
274
            # Get IWL data
251
275
            iwl_data=self._get_iwl_data(cr, uid, wizard.iwl_ids)
252
276
            if iwl_data['error']:
256
280
            classe_ids=iwl_data['classe_ids']
257
281
            classe_course=iwl_data['classe_course']
258
282
            time_courses=iwl_data['time_courses']
259
 
 
260
283
            # Ampliem els grups classe que calguin
261
284
            the_group_id=None
262
285
            if len(groups)==1:
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()])
284
307
 
285
 
#            import pdb;pdb.set_trace()
286
 
 
287
308
            # Crea els subgrups
288
309
            subgrup_ids=[]
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,}) )
314
335
 
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'})
 
338
            
 
339
        self.write(cr, uid, ids, {'state': 'done', 'iwl_ids': [(6,0,iwl_created)],})        
 
340
        return True
318
341
 
319
342
school_iwl_handling()
320
343