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 __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()
     elif islocalhost:
         logger.info('doesn t support localhost editing at the moment')
         return 'localhost is not supported'
 def __call__(self, *args):
     editor, ret = None,  ''
     form = self.request.form
     service = form.get('service', 'pixlr')
     context_url = self.context.absolute_url()
     # edit with pixlr by default
     try:
         editor = getMultiAdapter((self.context, self.request), i.IExternalImageEditor, name = service)
     except Exception, e:
         logger.info(
             'Invalid service or context: %s %s %s' % (
                 e, self.context, service
             )
         )
 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
        invalid = True
        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)