def http_get_edit(self): """Aviary use a javascript in our website to edit the image""" ret = '' form = self.request.form service = 'aviary' context_url = self.context.absolute_url() editor = queryMultiAdapter((self.context, self.request), i.IExternalImageEditor, name = service) languages = ['en', 'de', 'fr', 'ja', 'it', 'nl', 'es', 'ru'] if editor.enabled: lang = (True==(editor.lang in languages)) and editor.lang or 'en' here = self.context.absolute_url() params = { 'language': lang, 'apikey': editor.key, 'authenticator': editor.authenticator, 'apisecret': editor.secret, 'callback': '%s/%s' % (here, urllib.quote('@@externalimageeditor_save')), 'image_url': self.image_url, 'image_preview': self.image_preview_url, } params['editor'] = AVIARY_ED % params getMultiAdapter((self.context, self.request), i.IEditSessionHelper).register_edit_session(service) return self.template(**params) else: ret = 'Invalid edit proxy request!' logger.info(ret) url = context_url if IATImage.providedBy(self.context): url += "/view" self.request.response.redirect(url) return ret
def get_image_data(item): if IATImage.providedBy(item): data = item.getImage() return getattr(item, 'data', data) elif isinstance(item, FSImage): return item._readFile(0) elif IImage.providedBy(item): return item.data else: return getattr(item, 'data', '')
def service_edit_url(self): context, thisurl, url = self.context, "", "" if IATImage.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" % (thisurl, self.name), } url = "%s?%s" % (surl, urllib.urlencode(params)) return url
def get_image_data(item): if IATImage.providedBy(item): data = item.getImage() return getattr(item, 'data', data) elif isinstance(item, FSImage): return item._readFile(0) elif IImage.providedBy(item): return item.data else: #exta level to deal with image scales data = getattr(item, 'data', '') return data.data if hasattr(data, 'data') else data
def save(self): """Save the image""" context, request, form = self.context, self.request, self.request.form check(self.request) # raise an error if not authenficated if not "image" in form: raise Exception("invalid request") data = self.fetch(form["image"]) if not data: raise Exception("image download fails") if IATImage.providedBy(self.context): self.at_store(self.context, data) parent = aq_parent(self.context) if IATContentType.providedBy(parent): self.at_store(parent, data, self.context.id())
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 http_get_edit(self): """.""" ret = 'OK' context_url = self.context.absolute_url() form = self.request.form service = form.get('service', 'pixlr') # edit with pixlr by default editor = queryMultiAdapter((self.context, self.request), i.IExternalImageEditor, name = service) if editor is not None: url = editor.service_edit_url getMultiAdapter((self.context, self.request), i.IEditSessionHelper).register_edit_session(service) else: ret = 'Invalid edit proxy request!' logger.info(ret) url = context_url if IATImage.providedBy(self.context): url += "/view" self.request.response.redirect(url) return ret
def get_infos_for(self, context): data = {'embedded_images' : False, 'contexts_info' : []} contexts_info = data['contexts_info'] if IATImage.providedBy(self.context): contexts_info.append({'c':self.context, 'type': 'image'}) if IATContentType.providedBy(self.context): for f in self.context.schema.keys(): field = self.context.schema[f] if 'image' == field.type: data['embedded_images'] = True contexts_info.append( {'c':field.get(self.context), 'type': 'atimage'} ) for context_info in contexts_info: request = self.request adapters = getAdapters((context_info['c'], request), provided=i.IExternalImageEditor) context_info['infos'] = [] for name, a in adapters: if a.enabled: context_info['infos'].append(a.link_infos) return data
if editor is not None: session = getMultiAdapter((self.context, self.request), i.IEditSessionHelper) if session.is_edited_by(service): invalid = False try: 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)