def callback_xmlrpc(self, result):
        """
           Handle callbacks
        """
        tt = getUtility(ITranscodeTool)
        secret = tt.secret()
        try:
            result = eval(decrypt(b64decode(result['key']), secret),
                          {"__builtins__": None}, {})
            assert result.__class__ is dict
        except Exception as e:
            log.error("Unauthorized callback %s" % result)
            return

        if result['profile'] == 'iso' and BURNSTATION_SUPPORT:
            bt = getUtility(IBurnTool)
            if result['path']:
                bt.callback(result)
            else:
                bt.errback(result)
        else:
            if result['path']:
                tt.callback(result)
            else:
                tt.errback(result)
 def __call__(self):
     try:
         tt = getUtility(ITranscodeTool)
         key = self.request['key']
         input = decrypt(b64decode(key), tt.secret())
         (uid, self.fieldName, profile) = eval(input,
                                               {"__builtins__": None}, {})
         pm = getToolByName(self.context, 'portal_membership')
         newSecurityManager(
             self.request,
             pm.getMemberById(self.context.getOwner().getId()))
         obj = uuidToObject(uid)
         if obj is None:
             log.error('No object for UUID %s', uid)
             return
         field = self._getField(obj)
         if field is None:
             return
         if tt[uid][self.fieldName][profile]['status'] != 'pending':
             log.error('status not pending')
             raise
         return self._getFile(obj, field)
     except Exception as e:
         log.error('Unauthorized file request: %s' % e)
         return
 def __call__(self):
     try: 
         tt = getUtility(ITranscodeTool)
         key = self.request['key']
         input = decrypt(b64decode(key), tt.secret())
         (uid, fieldName, profile) = eval(input, {"__builtins__":None},{})
         obj = self.context.uid_catalog(UID=uid)[0].getObject()
         if not fieldName:
             fieldName = obj.getPrimaryField().getName()
         field = obj.getField(fieldName)
         if tt[uid][fieldName][profile]['status']!='pending':
             log.error('status not pending')
             raise
         pm = getToolByName(self.context, 'portal_membership')
         newSecurityManager(self.request,pm.getMemberById(self.context.getOwner().getId()))
         if field.getFilename(obj).__class__ is unicode:
             # Monkey patch the getFilename to go around plone.app.blob unicode filename bug
             def getFilenameAsString(obj):
                 return field.oldGetFilename(obj).encode(obj.getCharset(),'ignore')
             field.oldGetFilename = field.getFilename
             field.getFilename = getFilenameAsString
             dl = field.download(obj)
             field.getFilename = field.oldGetFilename
             del field.oldGetFilename
             return dl
         else:
             return field.download(obj)
     except Exception as e:
         log.error('Unauthorized file request: %s' % e)
         return
 def __call__(self):
     try:
         tt = getUtility(ITranscodeTool)
         key = self.request['key']
         input = decrypt(b64decode(key), tt.secret())
         (uid, self.fieldName, profile) = eval(input, {"__builtins__":None}, {})
         pm = getToolByName(self.context, 'portal_membership')
         newSecurityManager(self.request,
                            pm.getMemberById(self.context.getOwner().getId()))
         obj = uuidToObject(uid)
         if obj is None:
             log.error('No object for UUID %s', uid)
             return
         field = self._getField(obj)
         if field is None:
             return
         if tt[uid][self.fieldName][profile]['status']!='pending':
             log.error('status not pending')
             raise
         return self._getFile(obj, field)
     except Exception as e:
         log.error('Unauthorized file request: %s' % e)
         return
    def callback_xmlrpc(self, result):
        """
           Handle callbacks
        """
        tt = getUtility(ITranscodeTool)
        secret = tt.secret()
        try:
            result = eval(decrypt(b64decode(result['key']), secret), {"__builtins__":None},{})
            assert result.__class__ is dict
        except Exception as e:
            log.error("Unauthorized callback %s" % result)
            return

        if result['profile'] == 'iso' and BURNSTATION_SUPPORT:
            bt = getUtility(IBurnTool)
            if result['path']:
                bt.callback(result)
            else:
                bt.errback(result)
        else:
            if result['path']:
                tt.callback(result)
            else:
                tt.errback(result)