from netforce.model import Model, fields, get_model from netforce.access import get_active_company class Branch(Model): _name="clinic.branch" _string="Branch" _key=['name'] _fields={ "name": fields.Char("Name",required=True,search=True), "code": fields.Char("Code",required=True,search=True), "parent_id": fields.Many2One("clinic.branch","Parent"), "company_id": fields.Many2One("company","Company"), 'departments': fields.One2Many("clinic.department","branch_id","Departments"), 'active': fields.Boolean("Active"), "addresses": fields.One2Many("address","related_id","Addresses"), "track_id": fields.Many2One("account.track.categ","Track-1",domain=[["type","=","1"]]), } _defaults={ "company_id": lambda *a: get_active_company(), 'active': True, } def create_profile(self,ids,context={}): for obj in self.browse(ids): code=obj.code or '' pf_ids=get_model('profile').search(['code','=',code]) if pf_ids: raise Exception("Profile %s is already exist"%(code)) return except_perms=['Clinic Menu Settings','Clinic Staff Tab Accounting'] other_perms=[] for otp in get_model('permission').search_read(['name','ilike','clinic'],['name']): name=otp['name'] if name in except_perms: continue other_perms.append(otp['id']) except_model=['clinic.cycle','clinic.department'] perms=[] for model in get_model('model').search_read([['name','ilike','clinic']],['name']): vals={ 'model_id': model['id'], 'perm_read': True, 'perm_create': True, 'perm_write': True, 'perm_delete': True, } name=model['name'] if name in except_model: vals['perm_create']=False vals['perm_write']=False vals['perm_delete']=False perms.append(('create', vals)) get_model('profile').create({ 'perms': perms, 'code': code, 'name': code, 'perms': perms, 'other_perms': [('set',other_perms)], 'login_company_id': get_active_company(), }) print("create profile %s"%(code)) def share_access(self,ids,context={}): obj=self.browse(ids)[0] obj.create_profile() return { 'next': { 'name': 'clinic_branch', 'active_id': obj.id, 'mode': 'form', }, 'flash': 'Branch %s is shared sucessfully'%obj.code, } Branch.register()