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()
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)