from netforce.model import Model, fields, get_model from netforce.access import get_active_user, set_active_user from netforce.database import get_connection 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() set_active_user(1) dpt_ids=[] user=get_model("base.user").browse(user_id) if user.department_profile_id: for dpt in user.department_profile_id.departments: dpt_ids.append(dpt.id) if not dpt_ids: for st in get_model("clinic.staff").search_browse(['user_id','=',user_id]): for dpt in st.departments: dpt_ids.append(dpt.id) dom=[] 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={}): user_id=get_active_user() if user_id==1: return obj=self.browse(ids)[0] if obj.department: user=get_model('base.user').browse(user_id) set_active_user(1) for dpt in get_model("clinic.department").search_browse([["name","=",obj.department]]): user.write({ 'department_id': dpt.id, #current department }) pf_id=None for pf in get_model("profile").search_read(['code','=',dpt.code]): pf_id=pf['id'] print('selected profile ', pf['name']) 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 def get_select(self,context={}): user_id=get_active_user() department_id=None branch_id=None user=get_model("base.user").browse(user_id) dpt=user.department_id department_id=dpt.id branch_id=dpt.branch_id.id return { 'department_id': department_id, 'branch_id': branch_id, } SelectCompany.register()