105
105
cal_ids = self.pool.get('school.holidays_calendar').search(cr, uid, [('holiday_interval_ids','in',ids)])
106
106
return self.pool.get('school.classe').search(cr, uid, [('holidays_calendar_id','in',cal_ids)])
108
def _get_seance_teachers(self, cr, uid, ids, field_name, arg, context = None):
113
SELECT DISTINCT s.classe_id, ts.teacher_id
114
FROM school_seance AS s INNER JOIN school_teacher_seance AS ts ON s.id=ts.seance_id
115
WHERE s.classe_id IN %s
117
cr.execute(query, (tuple(ids),) )
118
for (classe_id,teacher_id) in cr.fetchall():
119
ret[classe_id].append(teacher_id)
122
def _search_seance_teachers(self, cr, uid, obj, name, args, context = None):
125
if type(my_arg) in (list,tuple):
126
if type(my_arg[2]) in (int,long):
127
args2 += [('id',my_arg[1],my_arg[2])]
129
args2 += [('teacher_name',my_arg[1],my_arg[2])]
132
teacher_ids = self.pool.get('school.teacher').search(cr, uid, args2, context = context)
134
return [('id','<',0)]
136
SELECT DISTINCT s.classe_id
137
FROM school_seance AS s INNER JOIN school_teacher_seance AS ts ON s.id=ts.seance_id
138
WHERE ts.teacher_id IN %s
140
cr.execute(query, (tuple(teacher_ids),) )
141
return [('id','in',[x for (x,) in cr.fetchall()])]
109
144
'name' : fields.char('Name',size=200,select=1,help="The course's name",),
110
145
'course_id' : fields.many2one('school.course','Course',required=True,readonly=False,help="The course",),
111
'seance_ids' : fields.one2many('school.seance','classe_id',select=True,help='List of the seances for a class.',),
146
'seance_ids' : fields.one2many('school.seance','classe_id',string='Seances',help='List of the seances for a class.',),
112
147
'date_from': fields.date('Date From',required=True,),
113
148
'date_to': fields.date('Date To',required=True,),
114
149
'group_id': fields.many2one('groups.group','Group',select=1,help='A group linked',readonly=False,ondelete='restrict',),
115
150
'wrong_seances' : fields.boolean('Wrong Seances',select=1),
116
151
'holidays_calendar_id' : fields.many2one('school.holidays_calendar',string="Holidays Calendar",ondelete="set null",),
117
152
'teachers' : fields.one2many('school.teacher_classe','classe_id',string='Teachers',help="Teachers for assign on the seance creation",),
153
'seance_teachers' : fields.function(_get_seance_teachers, type='one2many', obj='school.teacher', method=True, string='Seance Teachers',),
154
'one_teacher' : fields.function(lambda self,cr,uid,ids,field_name,arg,context={}: dict.fromkeys(ids), fnct_search = _search_seance_teachers, type='many2one', obj='school.teacher', method=True, string='Seance Teacher',),
118
155
'days_no_work' : fields.function(_get_days_no_work, method = True, type = 'text', store = {
119
156
'school.classe': (lambda self,cr,uid,ids,context={}: ids,['holidays_calendar_id'], 10),
120
157
'holidays_calendar': (lambda self,cr,uid,ids,context={}: self.pool.get('school.classe').search(cr,uid,[('holidays_calendar_id','in',ids)]),['classe_ids','holiday_interval_ids'], 15),
298
344
for (field,op,value) in args:
299
345
trossos=field.split('.', 1)
300
if trossos[0]=='contact_ids':
346
if trossos[0]=='one_contact':
301
347
if len(trossos)==1:
302
contact_args+=['|',('name',op,value),('first_name',op,value)]
348
if type(value) in (int,long):
349
contact_args+=[('id',op,value)]
351
contact_args+=['|',('name',op,value),('first_name',op,value)]
304
353
contact_args+=[(trossos[1],op,value)]
305
354
elif trossos[0] == 'date_to' and op == '<':
354
406
'room_id' : fields.many2one('school.room','Room', required=False, select=1, help="The seance's room"),
355
'teacher_id': fields.function(_main_teacher,type='many2one',obj='school.teacher',method=True,string="Main teacher",),
356
'one_teacher' : fields.function(lambda self,cr,uid,ids,*a: dict.fromkeys(ids,False),type='many2one',obj='school.teacher',method=True,string="Search Teacher",fnct_search=_seance_for_teacher_search,select=1,help='For search seances by teacher'),
357
'teachers' : fields.one2many('school.teacher_seance','seance_id',),
407
'classe_id' : fields.many2one('school.classe', 'Class', required=True, help="The class", ondelete="cascade", readonly=True, select=1),
358
408
'date' : fields.datetime('Date', required=True, select=1),
359
409
'date_to' : fields.datetime('Date to', required=True, select=1,),
360
'classe_id' : fields.many2one('school.classe', 'Class', required=True, help="The class", ondelete="cascade", readonly=True, select=1),
361
'course_id': fields.related('classe_id','course_id',type='many2one',related='school.course'),
410
'state' : fields.selection([('created', 'Created'),('ready','Ready'),('suspended','Suspended'),('wrong','Wrong'),
411
('opened', 'Editing'),
412
('closed', 'Closed')],
415
help="The state of the seance",select=True
417
'change_state_log' : fields.text('Change State Log'),
419
'teachers' : fields.one2many('school.teacher_seance','seance_id',),
362
420
'group_id' : fields.function(_get_group, method=True, string="Group",
363
421
type="many2one", obj='groups.group', select=1, store={
364
422
'school.classe': ( lambda self, cr, uid, ids, context: self.pool.get('school.seance').search(cr, uid, [('classe_id','in',ids)]), ['group_id'], 10),
365
423
'school.seance': ( lambda self, cr, uid, ids, context: ids, ['classe_id'],10),
427
'course_id': fields.related('classe_id','course_id',type='many2one',relation='school.course',string='Course'),
428
'teacher_id': fields.function(_main_teacher,type='many2one',obj='school.teacher',method=True,string="Main teacher",),
368
429
'contact_ids' : fields.function(_get_partinotes, type="one2many", obj='res.partner.contact', fnct_search=_seance_for_contact_search, string = "Students", method=True,multi='partinotes'),
369
430
'annotation_ids' : fields.function( _get_partinotes, type='one2many', obj='contact.annotation', method=True,multi='partinotes'),
370
'state' : fields.selection([('created', 'Created'),('ready','Ready'),('suspended','Suspended'),('wrong','Wrong'),
371
('opened', 'Editing'),
372
('closed', 'Closed')],
375
help="The state of the seance",select=True
377
'change_state_log' : fields.text('Change State Log'),
432
'one_teacher' : fields.function(lambda self,cr,uid,ids,*a: dict.fromkeys(ids,False),type='many2one',obj='school.teacher',method=True,string="Search Teacher",fnct_search=_seance_for_teacher_search,select=1,help='For search seances by teacher'),
433
'one_contact' : fields.function(lambda self,cr,uid,ids,*a: dict.fromkeys(ids,False), type="many2one", obj='res.partner.contact', fnct_search=_seance_for_contact_search, string = "Search Student", method=True,),
435
'seance_key' : fields.function(lambda self,cr,uid,ids,name,arg,context={}:
437
'%s-%s-%s' % (x.course_id.code,x.room_id.name,x.group_id.name)) for x in self.browse(cr,uid,ids,context=context)]),
438
type='char', size=200, string='Seance key',