Beispiel #1
0
def getObjectsFromLinks(base, links):
    """ determine actual objects refered to by given links """
    objects = set()
    url = base.absolute_url()
    scheme, host, path, query, frag = urlsplit(url)
    for link in links:
        s, h, path, q, f = urlsplit(link)
        # relative or local url
        if (not s and not h) or (s == scheme and h == host):
            # Paths should always be strings
            if isinstance(path, unicode):
                path = path.encode('utf-8')

            obj, extra = findObject(base, path)
            if obj:
                if IOFSImage.providedBy(obj):
                    # use atimage object for scaled images
                    obj = aq_parent(obj)
                if not IReferenceable.providedBy(obj):
                    try:
                        obj = IReferenceable(obj)
                    except:
                        continue
                objects.add(obj)
    return objects
Beispiel #2
0
def getObjectsFromLinks(base, links):
    """ determine actual objects refered to by given links """
    objects = set()
    url = base.absolute_url()
    scheme, host, path, query, frag = urlsplit(url)
    for link in links:
        s, h, path, q, f = urlsplit(link)
        # relative or local url
        if (not s and not h) or (s == scheme and h == host):
            # Paths should always be strings
            if isinstance(path, unicode):
                path = path.encode('utf-8')

            obj, extra = findObject(base, path)
            if obj:
                if IOFSImage.providedBy(obj):
                    # use atimage object for scaled images
                    obj = aq_parent(obj)
                if not IReferenceable.providedBy(obj):
                    try:
                        obj = IReferenceable(obj)
                    except:
                        continue
                objects.add(obj)
    return objects
 def service_edit_url(self):
     context, thisurl, url = self.context, "", ""
     if IATImage.providedBy(self.context) or IOFSImage.providedBy(self.context):
         thisurl = self.context.absolute_url()
         surl = "http://www.pixlr.com/editor"
         params = {
             "image": thisurl,
             "locktarget": "true",
             "target": "%s/@@externalimageeditor_save?service=%s&_authenticator=%s"
             % (thisurl, self.name, self.authenticator),
         }
         url = "%s?%s" % (surl, urllib.urlencode(params))
     return url
 def service_edit_url(self):
     context, thisurl, url = self.context, "", ""
     langk = (True == (self.lang in self.langs)) and self.lang or "en"
     lang = self.langs[langk]
     if IATImage.providedBy(self.context) or IOFSImage.providedBy(self.context):
         thisurl = self.context.absolute_url()
         surl = "http://fotoflexer.com/API/API_Loader_v1_01.php"
         params = {
             "ff_image_url": thisurl,
             "ff_cancel_url": "%s/view" % thisurl,
             "ff_lang": lang,
             "ff_callback_url": "%s/@@externalimageeditor_save?service=%s&_authenticator=%s"
             % (thisurl, self.name, self.authenticator),
         }
         url = "%s?%s" % (surl, urllib.urlencode(params))
     return url
def onUserPreferencesChanged(event):
    """ Update user's vcard when their prefs have changed.
    """
    request = getRequest()
    if not IProductLayer.providedBy(request):
        return
    if not isinstance(event.context, UserDataPanel):
        return
    portal = getSite()
    mtool = getToolByName(portal, 'portal_membership')
    member = mtool.getAuthenticatedMember()
    member_id = member.getId()
    pass_storage = getUtility(IXMPPPasswordStorage)
    member_pass = pass_storage.get(member_id)
    if not member_pass:
        log.info('%s is not registered on the XMPP server.' % member_id)
        return
    xmpp_users = getUtility(IXMPPUsers)
    member_jid = xmpp_users.getUserJID(member_id)
    portal_url = getToolByName(portal, 'portal_url')()
    fullname = member.getProperty('fullname').decode('utf-8')
    portrait = mtool.getPersonalPortrait(member_id)
    if IOFSImage.providedBy(portrait):
        raw_image = portrait.data
    elif isinstance(portrait, FSImage):
        raw_image = portrait._data
    else:
        log.warn('Could not get the raw data for portrait image for user %s' \
                 % member_id)
        raw_image = None
    udict = {
        'fullname': fullname,
        'nickname': member_id,
        'email': member.getProperty('email'),
        'userid': member_jid.userhost(),
        'jabberid': member_jid.userhost(),
        'url': '%s/author/%s' % (portal_url, member_id),
        'image_type': portrait.content_type,
        'raw_image': raw_image
    }
    setup.setVCard(udict, member_jid, member_pass)
def getObjectsFromLinks(base, links):
    """ determine actual objects refered to by given links """
    objects = set()
    url = base.absolute_url()
    scheme, host, path, query, frag = urlsplit(url)
    for link in links:
        try:
            s, h, path, q, f = urlsplit(link)
        except ValueError:
            continue
        if (not s and not h) or (s == scheme and h == host):    # relative or local url
            obj, extra = findObject(base, path)
            if obj:
                if IOFSImage.providedBy(obj):
                    obj = aq_parent(obj)    # use atimage object for scaled images
                if not IReferenceable.providedBy(obj):
                    try:
                        obj = IReferenceable(obj)
                    except:
                        continue
                objects.add(obj)
    return objects
                    editor.save()
                except Exception, e:
                    ret = 'An error occured during image record: %s' % e
                ret = 'image updated'
            else:
                ret = 'No edit session!'
        if invalid:
            if not ret:
                ret = 'Invalid edit proxy request!'
            logger.info(ret)
        if IATImage.providedBy(self.context):
            context_url += "/view"
        parent = aq_parent(self.context)

        if (IATContentType.providedBy(parent)
            and IOFSImage.providedBy(self.context)):
            context_url = parent.absolute_url()
        if service not in ['aviary']:
            self.request.response.redirect(context_url)
        return ret

class Edit(BrowserView):
    """Redirect to a specific edit service"""
    interface.implements(IEdit)


    def __call__(self, *args):
        islocalhost = (self.request.URL.startswith('http://localhost')
                       or self.request.URL.startswith('127.0.0.1'))
        if self.request.method == 'GET' and not islocalhost:
            return self.http_get_edit()
Beispiel #8
0
def GrayscaleTransformations(event):
    """
    Changing the response body by converting
    the images to grayscale and changing the
    css colors definitions to colors from gray
    shades palette
    """
    request = event.request
    response = request.response
    context = request.get('PUBLISHED')
    resp_body = response.getBody()
    resp_body = getattr(context, 'GET', lambda: '')()

    if hasattr(context, 'im_self'):
        context = context.im_self
    if isinstance(context, ImageScale):
        context = context.data
    if hasattr(context, 'context'):
        context = context.context

    content_type = getattr(context, 'content_type', '')
    if callable(content_type):
        content_type = content_type() or ''
    if not content_type:
        content_type = response.headers.get('content-type') or ''

    if isinstance(context, FilesystemFile):
        resp_body = context().read()
        content_type = context.getContentType().split(';')[0]

    filename = getattr(context, 'getId', lambda: False)()
    filename = getattr(context, 'filename', filename)
    if not filename:
        try:
            filename = context.__name__
        except AttributeError:
            return

    images_content_types = ['image/png', 'image/jpg', 'image/jpeg', 'image/gif']

    browser_resource_image = False
    if isinstance(context, browserresourcefile) and \
       context.content_type.split(';')[0] in images_content_types:
        browser_resource_image = True

    if content_type:
        content_type = content_type.split(';')[0].strip()

    if 'javascript' in content_type:
        return

    if isinstance(context, FSImage) or \
       IOFSImage.providedBy(context) or \
       IATImage.providedBy(context) or \
       content_type in images_content_types or \
       browser_resource_image:

        try:
            path = '/'.join(context.getPhysicalPath())
        except AttributeError:
            path = filename

        try:
            resp_body = utils.get_resource(request, response, path)
        except NotFound:
            image_body = resp_body
            if not image_body:
                if hasattr(context, 'data'):
                    image_body = context.data
                elif isinstance(context, FSImage):
                    image_body = context._readFile(True)

            if image_body:
                resp_body = utils.image_to_grayscale(image_body, path)
            else:
                log.debug('Image doesn\'t contain any data: %s' % (path))

            if queryUtility(IResourceDirectory, name=u''):
                utils.store_resource(path, resp_body)

    elif IBrowserView.providedBy(request.get('PUBLISHED')) or \
        content_type in ['text/html', 'text/css'] or \
        isinstance(context, (File, FSFile, ATFile, FSPageTemplate)) and \
            context.content_type.split(';')[0] in ['text/html', 'text/css']:

        if hasattr(aq_base(context), 'data'):
            resp_body = context.data
            if hasattr(resp_body, 'data'):
                resp_body = resp_body.data

        if isinstance(context, FSFile):
            resp_body = context._readFile(0)

        if content_type == 'text/css' or \
           isinstance(context, (File, FSFile, ATFile, FSPageTemplate)) and \
           context.content_type.split(';')[0] == 'text/css':

            try:
                resp_body = utils.get_resource(request, response, filename)
            except (NotFound, AttributeError):
                resp_body = utils.transform_style_properties(resp_body)
                resp_body = utils.transform_css_url(resp_body)
                if queryUtility(IResourceDirectory, name=u''):
                    utils.store_resource(filename, resp_body)
        else:
            if not resp_body:
                rendered_body = utils.render_object_html(context, request)
                if rendered_body:
                    resp_body = rendered_body
            resp_body = utils.add_bodyclass(resp_body)
            resp_body = utils.transform_style_properties(resp_body)
            resp_body = utils.transform_css_url(resp_body)
            resp_body = utils.transform_img_src(resp_body)

    response.setBody(resp_body)