def __call__(self, value, filestore, item): if isinstance(value, dict): encoding = value.get('encoding', getSiteEncoding()) contenttype = value.get('contenttype', None) if contenttype is not None: contenttype = str(contenttype) file = value.get('file', None) if file is not None: data = self._convert_object(filestore[file]['data'],encoding) else: data = self._convert_object(value['data'],encoding) else: encoding = getSiteEncoding() data = self._convert_object(value,encoding) contenttype = None if contenttype is None: contenttype = self.field.default_mime_type instance = self._type( raw=data, mimeType=contenttype, outputMimeType=self.field.output_mime_type, encoding=encoding, ) self.field.validate(instance) return instance
def fromUnicode(self, str): return XMLTextValue( raw=str, mimeType=self.default_mime_type, outputMimeType=self.output_mime_type, encoding=getSiteEncoding(), )
def searchableIndexer(context): transforms = getToolByName(context, 'portal_transforms') if context.body: html = context.body.raw_encoded text = transforms.convert('html_to_text', html).getData() text = text.decode(getSiteEncoding()) else: text = '' return "%s %s %s" % (context.title, context.description, text)
def extract(self, default=NOVALUE): raw = self.request.get(self.name, default) if raw is default: return default mimeType = self.request.get("%s.mimeType" % self.name, self.field.default_mime_type) return RichTextValue(raw=raw, mimeType=mimeType, outputMimeType=self.field.output_mime_type, encoding=getSiteEncoding())
def __call__(self, value, filestore, item, disable_constraints=False, logger=None): if isinstance(value, dict): encoding = value.get('encoding', getSiteEncoding()) contenttype = value.get('contenttype', None) if contenttype is not None: contenttype = str(contenttype) file = value.get('file', None) if file is not None: data = self._convert_object(filestore[file]['data'],encoding) else: data = self._convert_object(value['data'],encoding) else: encoding = getSiteEncoding() data = self._convert_object(value,encoding) contenttype = None if contenttype is None: contenttype = self.field.default_mime_type instance = self._type( raw=data, mimeType=contenttype, outputMimeType=self.field.output_mime_type, encoding=encoding, ) try: self.field.validate(instance) except Exception, e: if not disable_constraints: raise e else: if logger: logger( "%s is invalid in %s: %s" % ( self.field.__name__, item['_path'], e) )