clinic/netforce_clinic/models/branch.py

76 lines
2.7 KiB
Python
Raw Normal View History

from netforce.model import Model, fields, get_model
2015-01-14 07:15:10 +00:00
from netforce.access import get_active_company
2014-11-27 03:50:13 +00:00
class Branch(Model):
_name="clinic.branch"
_string="Branch"
_key=['name']
_fields={
"name": fields.Char("Name",required=True,search=True),
2015-01-14 13:36:23 +00:00
"code": fields.Char("Code",required=True,search=True),
2014-11-27 03:50:13 +00:00
"parent_id": fields.Many2One("clinic.branch","Parent"),
2015-01-14 07:15:10 +00:00
"company_id": fields.Many2One("company","Company"),
2015-01-15 00:59:27 +00:00
'departments': fields.One2Many("clinic.department","branch_id","Departments"),
2015-01-19 09:00:01 +00:00
'active': fields.Boolean("Active"),
2015-03-17 09:29:34 +00:00
"addresses": fields.One2Many("address","related_id","Addresses"),
2015-01-14 07:15:10 +00:00
}
_defaults={
"company_id": lambda *a: get_active_company(),
2015-01-19 09:00:01 +00:00
'active': True,
2014-11-27 03:50:13 +00:00
}
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,
}
2014-11-27 03:50:13 +00:00
Branch.register()