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>.*)$')
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
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>.*)$')
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