def gridSaveRecord(context=None, main=None, add=None, session=None, filterinfo=None, elementId=None, saveData=None): saveData = json.loads(saveData)["savedata"]["data"] permissions = PermissionsCursor(context) roleId = saveData["col1"] grainId = saveData["col2"] tableName = saveData["col3"] r = True if saveData["col4"] else False i = True if saveData["col5"] else False m = True if saveData["col6"] else False d = True if saveData["col7"] else False restrictError = u"Недостаточно прав для данной операции!" if permissions.tryGet(roleId, grainId, tableName): if r or i or m or d: permissions.r = r permissions.i = i permissions.m = m permissions.d = d if permissions.canModify(): permissions.update() else: context.error(restrictError) else: if permissions.canDelete(): permissions.delete() else: context.error(restrictError) else: if r or i or m or d: permissions.roleid = roleId permissions.grainid = grainId permissions.tablename = tableName permissions.r = r permissions.i = i permissions.m = m permissions.d = d if permissions.canInsert(): permissions.insert() else: context.error(restrictError) res = GridSaveResult() res.setRefreshAfterSave(0) return res
def cardDataSave(context, main=None, add=None, filterinfo=None, session=None, elementId=None, xformsdata=None): u'''Функция сохранения карточки редактирования содержимого справочника разрешений. ''' permissions = PermissionsCursor(context) content = json.loads(xformsdata)["schema"] # for field in permissions.meta().getColumns(): # permissions.__setattr__(field, content[field]) permissions.roleid = content["roleid"] permissions.grainid = content["grainid"] permissions.tablename = content["tablename"] permissions.r = content["r"] == "true" permissions.i = content["i"] == "true" permissions.m = content["m"] == "true" permissions.d = content["d"] == "true" if add == 'add' and permissions.canInsert() and permissions.canModify(): if not permissions.tryInsert(): permissionsOld = PermissionsCursor(context) permissionsOld.get(content["roleid"], content["grainid"], content["tablename"]) permissionsOld.r = content["r"] == "true" permissionsOld.i = content["i"] == "true" permissionsOld.m = content["m"] == "true" permissionsOld.d = content["d"] == "true" permissionsOld.update() elif add == 'add' and permissions.canInsert(): permissions.insert() elif add == 'edit' and permissions.canModify(): permissionsOld = PermissionsCursor(context) currIdEncoded = json.loads(session)['sessioncontext']['related'][ 'gridContext']['currentRecordId'] currId = json.loads(base64.b64decode(currIdEncoded)) permissionsOld.get(*currId) if permissionsOld.roleid==permissions.roleid and \ permissionsOld.grainid==permissions.grainid and \ permissionsOld.tablename==permissions.tablename: permissions.recversion = permissionsOld.recversion permissions.update() elif permissions.canInsert(): permissions.insert() permissionsOld.delete() else: raise CelestaException(u"Недостаточно прав для данной операции!") else: raise CelestaException(u"Недостаточно прав для данной операции!")
def rolesReadPermission(rec): context = rec.callContext() permissions = PermissionsCursor(context) tables = { 'celesta': ['userroles', 'permissions', 'roles'], 'security': ['customPerms', 'rolesCustomPerms', 'customPermsTypes'] } for grain in tables.keys(): for table in tables[grain]: if permissions.tryGet(rec.id, grain, table): permissions.r = True permissions.update() else: permissions.roleid = rec.id permissions.grainid = grain permissions.tablename = table permissions.r = True permissions.i = False permissions.m = False permissions.d = False permissions.insert()