from netforce.model import Model, fields, get_model from netforce.access import get_active_user, set_active_user class SelectCompany(Model): _inherit="select.company" _fields={ "department": fields.Selection([],"Deparment") } def _get_department(self,context={}): user_id=get_active_user() dpt_name=None for staff in get_model("clinic.staff").search_browse([['user_id','=',user_id]]): dpt=staff.department_id dpt_name=dpt.name return dpt_name _defaults={ 'department': _get_department, } def get_departments(self,context={}): user_id=get_active_user() user=get_model('base.user').browse(user_id) dom=[] if user.department_profile_id: set_active_user(1) dpt_ids=[] for dpt in user.department_profile_id.departments: dpt_ids.append(dpt.id) if dpt_ids: dom.append(['id','in',dpt_ids]) res=get_model("clinic.department").search_read(dom,["name"]) set_active_user(user_id) return [(r["name"],r["name"]) for r in res] def select(self,ids,context={}): obj=self.browse(ids)[0] if obj.department: user_id=get_active_user() user=get_model('base.user').browse(user_id) set_active_user(1) staff=None for dpt in get_model("clinic.department").search_browse([["name","=",obj.department]]): for staff in get_model("clinic.staff").search_browse([['user_id','=',user_id]]): staff.write({ 'department_id': dpt.id, 'branch_id': dpt.branch_id.id, }) if not staff: raise Exception("No staff match with user %s"%user.name) pf_id=None if dpt.branch_id.code=='LS': for pf in get_model("profile").search_browse([['name','=','Nurse Laksi']]): pf_id=pf.id elif dpt.branch_id.code=='SS': for pf in get_model("profile").search_browse([['name','=','Nurse Samsan']]): pf_id=pf.id if pf_id: user=get_model("base.user").browse(user_id) user.write({ 'profile_id': pf_id, }) set_active_user(user_id) res=super().select(ids,context) return res SelectCompany.register()