Beispiel #1
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"Недостаточно прав для данной операции!")
Beispiel #2
0
def cardData(context,
             main=None,
             add=None,
             filterinfo=None,
             session=None,
             elementId=None):
    u'''Функция данных для карточки редактирования содержимого таблицы разрешения. '''

    permissions = PermissionsCursor(context)

    if add == 'add':
        formData = json.loads(session)['sessioncontext']['related'][
            "xformsContext"]["formData"]["schema"]
        xformsdata = {
            "schema": {
                "roleid": formData["roleid"],
                "grainid": formData["grainid"],
                "tablename": formData["tablename"],
                "r": "",
                "i": "",
                "m": "",
                "d": ""
            }
        }
    elif add == 'edit':
        currIdEncoded = json.loads(session)['sessioncontext']['related'][
            'gridContext']['currentRecordId']
        currId = json.loads(base64.b64decode(currIdEncoded))
        permissions.get(*currId)
        xformsdata = {
            "schema": {
                "roleid": permissions.roleid,
                "grainid": permissions.grainid,
                "tablename": permissions.tablename,
                "r": unicode(permissions.r).lower(),
                "i": unicode(permissions.i).lower(),
                "m": unicode(permissions.m).lower(),
                "d": unicode(permissions.d).lower()
            }
        }

    # print xformsdata
    xformssettings = {
        "properties": {
            "event": {
                "@name": "single_click",
                "@linkId": "1",
                "action": {
                    "#sorted": [{
                        "main_context": "current"
                    }, {
                        "datapanel": {
                            "@type": "current",
                            "@tab": "current",
                            "element": {
                                "@id": "permGrid",
                                "add_context": ""
                            }
                        }
                    }]
                }
            }
        }
    }

    return JythonDTO(XMLJSONConverter.jsonToXml(json.dumps(xformsdata)),
                     XMLJSONConverter.jsonToXml(json.dumps(xformssettings)))