예제 #1
0
        mapping['name'] = name
        mapping['description'] = description
        mapping['code'] = code
        self._save(mapping, "{}.mapping".format(identifier))
        mapping = Mapping(identifier)
        mapping.setCode(code)
        try:
            mapping.validate()
        except Exception, e:
            raise ValueError(e)

    def deleteMapping(self, identifier, domainId):
        domain = self.getDomain(domainId)
        domain['mappingIds'].remove(identifier)
        self._save(domain, "{}.domain".format(domainId))
        self._delete("{}.mapping".format(identifier))

    #
    def _save(self, data, filename):
        with open(join(self._dataPath, filename), 'w') as f:
            data.dump(f, indent=4, sort_keys=True)

    def _delete(self, filename):
        remove(join(self._dataPath, filename))

    def _exists(self, filename):
        return isfile(join(self._dataPath, filename))


XMLHEADER = compileRe(r'(?s)^(?P<header>\<\?.*\?\>\s+)?(?P<body>.*)$')
예제 #2
0
        if not self._parseOptions is None:
            parseKwargs = dict(parser=XMLParser(**self._parseOptions))
        if isinstance(anObject, str):
            anObject = bytes(anObject, encoding='utf-8')
        return parse(BytesIO(bytes(anObject)), **parseKwargs)


class XmlPrintLxml(Converter):
    def __init__(self, pretty_print=True, **kwargs):
        Converter.__init__(self, **kwargs)
        self._pretty_print = pretty_print

    def _convert(self, anObject):
        return lxmltobytes(anObject, pretty_print=self._pretty_print)


_CHAR_REF = compileRe(rb'\&\#(?P<code>x?[0-9a-fA-F]+);')


def _replCharRef(matchObj):
    code = matchObj.groupdict()['code']
    code = int(code[1:], base=16) if b'x' in code else int(code)
    return bytes(chr(code), encoding='utf-8')


def _fixLxmltostringRootElement(value):
    firstGt = value.find(b'>')
    if value.find(b'&#', 0, firstGt) > -1:
        return _CHAR_REF.sub(_replCharRef, value[:firstGt]) + value[firstGt:]
    return value
예제 #3
0
        mapping.setCode(code)
        try:
            mapping.validate()
        except Exception as e:
            raise ValueError(e)

    def deleteMapping(self, identifier, domainId):
        domain = self.getDomain(domainId)
        domain['mappingIds'].remove(identifier)
        self._store.deleteData(id_combine(domainId, identifier), 'mapping')
        self._store.addData(domainId, 'domain', domain)

    # fielddefinition
    def getFieldDefinition(self, domainId, guid=None):
        try:
            return self._store.getData(domainId, 'fielddefinition', guid)
        except ValueError:
            return {}

    def updateFieldDefinition(self, domainId, data):
        self._store.addData(domainId, 'fielddefinition', data)

    def getPublicRecord(self, guid):
        "Retrieves a record given its uuid only"
        return self._store.getGuid(guid)


id_combine = lambda *ids: '.'.join(ids)

XMLHEADER = compileRe(r'(?s)^(?P<header>\<\?.*\?\>\s+)?(?P<body>.*)$')
예제 #4
0
        Converter.__init__(self, **kwargs)
        self._parseOptions = parseOptions

    def _convert(self, anObject):
        parseKwargs = {}
        if not self._parseOptions is None:
            parseKwargs = dict(parser=XMLParser(**self._parseOptions))
        return parse(StringIO(anObject.encode('UTF-8')), **parseKwargs)


class XmlPrintLxml(Converter):
    def __init__(self, pretty_print=True, **kwargs):
        Converter.__init__(self, **kwargs)
        self._pretty_print = pretty_print

    def _convert(self, anObject):
        return lxmltostring(anObject, pretty_print=self._pretty_print)


_CHAR_REF = compileRe(r'\&\#(?P<code>x?[0-9a-fA-F]+);')
def _replCharRef(matchObj):
    code = matchObj.groupdict()['code']
    code = int(code[1:], base=16) if 'x' in code else int(code)
    return str(unichr(code))

def _fixLxmltostringRootElement(aString):
    firstGt = aString.find('>')
    if aString.find('&#', 0, firstGt) > -1:
        return _CHAR_REF.sub(_replCharRef, aString[:firstGt]) + aString[firstGt:]
    return aString