Example #1
0
    def setData(self, data):
        charset = extractCharset(data['contentType'])
        try:
            encodeddata = data['data'].encode(charset)
        except LookupError:
            raise UnknownCharset(charset)
        except UnicodeEncodeError:
            raise CharsetTooWeak(charset)

        modified = []
        if encodeddata != self.context.data:
            self.context.data = encodeddata
            modified.append('data')

        if self.context.contentType != data['contentType']:
            self.context.contentType = data['contentType']
            modified.append('contentType')
        formatter = self.request.locale.dates.getFormatter(
            'dateTime', 'medium')
        if modified:
            event = lifecycleevent.ObjectModifiedEvent(
                self.context, lifecycleevent.Attributes(IFile, *modified))
            zope.event.notify(event)

        return _("Updated on ${date_time}",
                 mapping={'date_time': formatter.format(datetime.utcnow())})
Example #2
0
    def migrate(self):
        orig_id = self.context.getId()
        orig_obj = self.context.aq_base

        field = orig_obj.getPrimaryField()
        file = field.getEditAccessor(orig_obj)()
        if isinstance(file, filewrapper.FileWrapper):
            fd, tempfilename = tempfile.mkstemp('', 'ATVideoMigratable__temp__')
            f = open(tempfilename, 'wb')
            for x in file.filestream():
                f.write(x)
            f.close()
        else:
            tempfilename = fileutils.write_to_tempfile(file)

        self.container.manage_delObjects([orig_id])

        self.container.invokeFactory('File', orig_id)
        file = self.container[orig_id]
        f = open(tempfilename, 'rb')
        file.setFile(f)
        f.close()

        os.remove(tempfilename)

        evt = lifecycleevent.ObjectModifiedEvent(file)
        event.notify(evt)

        return True
Example #3
0
def apply_data_event(context, form_fields, data, adapters=None, update=False):
    """Like apply_data, but also sends an IObjectModifiedEvent.
    """
    changes = apply_data(context, form_fields, data, adapters, update)

    if changes:
        descriptions = []
        for interface, names in changes.items():
            descriptions.append(lifecycleevent.Attributes(interface, *names))
        event.notify(lifecycleevent.ObjectModifiedEvent(
            context, *descriptions))

    return changes
    def set_document_xml_from(self, data, format='kupu', request=None):
        """Set the document xml of the version from the given data
        in the given format.
        """
        transformer = EditorTransformer(editor=format)
        context = Context(self, request)

        document = transformer.to_source(targetobj=data, context=context)[0]
        title = document.find('title')[0].extract_text()
        content = document.find('doc')[0].asBytes(encoding="UTF8")
        self.content.manage_edit(content)
        self.set_title(title)

        notify(lifecycleevent.ObjectModifiedEvent(self))
Example #5
0
    def update_object(self, data, contenttype):
        self.context.contentType = contenttype

        descriptor = lifecycleevent.Attributes(IFile, "contentType")

        # Update *only* if a new value is specified
        if data:
            self.context.data = data
            descriptor.attributes += ("data", )

        event = lifecycleevent.ObjectModifiedEvent(self.context, descriptor)
        zope.event.notify(event)

        formatter = self.request.locale.dates.getFormatter(
            'dateTime', 'medium')
        return _("Updated on ${date_time}",
                 mapping={'date_time': formatter.format(datetime.utcnow())})
Example #6
0
    def query(self):
        context = Acquisition.aq_inner(self.context)

        retriever = component.queryUtility(embedifaces.IVideoMetadataRetriever)
        if retriever is None:
            raise QueryException('Remote metadata retrieval misconfigured.')
        url = embedifaces.ILinkProvider(context).getLink()
        data = retriever.get_metadata(url)

        result = False

        if data is None:
            raise QueryException('Retriever returned no data, most likely '
                                 'cause is that there is no registered '
                                 'lookup component for "%s"' % url)

        video = interfaces.IVideo(context)
        if getattr(data, 'thumbnail_url', None):
            video.video_image = build_ofsimage(data.thumbnail_url)
        if getattr(data, 'title', None):
            video.title = data.title
        if getattr(data, 'description', None):
            video.description = data.description
        if getattr(data, 'author', None):
            video.video_author = data.author
        if getattr(data, 'duration', None):
            video.duration = data.duration

        if getattr(data, 'tags', None) and \
               has_contenttagging_support(context):
            from lovely.tag import interfaces as tagifaces
            tagging = tagifaces.ITagging(context)
            user = self.username()
            tags = set(tagging.getTags([user]))
            for x in data.tags:
                tags.add(x)
            tagging.update(user, tags)

        event.notify(lifecycleevent.ObjectModifiedEvent(context))