#coding=utf-8 ''' ''' import json from django.db import transaction import common.models as cm import common.error_info as ce import common.common_functions as ccf import common.common_control as ccc def get_role_list(query=None,relations=None,page=None,page_size=None): """ """ qset = cm.Role.objects.all() if query and query.get("platform"): qset = qset.filter(platform=query.get("platform")) total,qset = ccc.get_page_qset(qset,page,page_size) roles = qset.values("id","name","desc","ctime","platform") if relations: for i,role in enumerate(roles): permissions = list(qset[i].permission.all().values_list("name",flat=True)) role.update({"permissions":",".join(permissions)}) return total,list(roles) def get_role_info(*ids): """ """ qset = cm.Role.objects.filter(id__in=ids) roles = list(qset.values()) for i,role in enumerate(roles): role["permission_addroles"] = json.loads(role["permission_addroles"]) permissions = list(qset[i].permission.all().values("name","id")) role.update({"permissions":permissions}) return roles def get_all_role_list(): qset = cm.Role.objects.all() roles = qset.values("id","name","desc","ctime","platform") return list(roles) def add_role(**kwargs): """ """ need_params = ["name","platform","permissions"] mse = ccf.check_params(*need_params,**kwargs) if mse: raise ce.TipException(mse) need_params.extend(["cperson","desc"]) try: permission_addroles = kwargs.pop("permission_addroles") permissions = kwargs.pop("permissions") except KeyError: permission_addroles = None permissions = None cvals = ccf.get_need_params(*need_params,**kwargs) with transaction.atomic(): robj = cm.Role.objects.create(**cvals) #添加permission robj.permission_addroles = json.dumps(permission_addroles) robj.permission.add(*permissions) robj.save() def update_role(**kwargs): """ """ need_params = ["id"] mse = ccf.check_params(*need_params,**kwargs) if mse: raise ce.TipException(mse) id = kwargs.get("id") uvals = {} if "name" in kwargs: uvals["name"] = kwargs.get("name") if "desc" in kwargs: uvals["desc"] = kwargs.get("desc") if "permission_addroles" in kwargs: uvals["permission_addroles"] = json.dumps(kwargs.get("permission_addroles")) with transaction.atomic(): robj = cm.Role.objects.filter(id=id).first() cm.Role.objects.filter(id=id).update(**uvals) if robj: robj.permission.remove() robj.permission.add(*kwargs.get("permissions")) def delete_role(**kwargs): """ """ need_params = ["id"] mse = ccf.check_params(*need_params,**kwargs) if mse: raise ce.TipException(mse) ids = str(kwargs.get("id")).split(",") cm.Role.objects.filter(id__in=ids).delete()