Exemplo n.º 1
0
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
Exemplo n.º 2
0
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"Недостаточно прав для данной операции!")
Exemplo n.º 3
0
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()