예제 #1
0
    def handle_object(self,obj):
        
        if type(obj) == dict and len(obj.keys())==1 and obj.has_key('_ref'):
            
            L.info("ReferenceFetcher: Attempting to fetch %r" % obj)
            
            url = obj['_ref']
            if url.strip() == '':
                return None
            
            data = None
            try:
                data = internal_find(url,follow=False,lang=self.token.lang)
                if data != None:
                    return data
            except Exception:
                L.exception("ReferenceFetcher: Failed to fetch %r" % obj)
            
        elif type(obj) == dict:
            return dict([ (k,self.handle_object(v)) for k,v in obj.iteritems()])

        elif type(obj) == list:
            return [ self.handle_object(el) for el in obj]
        
        return obj
예제 #2
0
    def handle_object(self, obj):

        if type(obj) == dict and len(obj.keys()) == 1 and obj.has_key('_ref'):

            L.info("ReferenceFetcher: Attempting to fetch %r" % obj)

            url = obj['_ref']
            if url.strip() == '':
                return None

            data = None
            try:
                data = internal_find(url, follow=False, lang=self.token.lang)
                if data != None:
                    return data
            except Exception:
                L.exception("ReferenceFetcher: Failed to fetch %r" % obj)

        elif type(obj) == dict:
            return dict([(k, self.handle_object(v))
                         for k, v in obj.iteritems()])

        elif type(obj) == list:
            return [self.handle_object(el) for el in obj]

        return obj
예제 #3
0
    def post(self):
        try:
            rec = g.db.find_one({self.META_PATH: self.token.path, self.META_ID: self.token.slug})

            if rec == None:
                g.db.save(
                    {
                        self.META_EL: {self.PATH_EL: self.token.path, self.ID_EL: self.token.slug},
                        self.DATA_EL: self.token.data,
                    }
                )
            else:
                rec[self.DATA_EL] = self.token.data
                g.db.save(rec)

            self.token.response = True
        except:
            L.exception("db_op::post")
            self.token.response = False
예제 #4
0
 def post(self):
     if self.token.slug == None:
         self.token.slug = uuid.uuid4()
     try:
         rec = g.db.find_one({self.META_PATH : self.token.path,
                              self.META_ID   : self.token.slug })
         
         if rec == None:
             g.db.save( { self.META_EL : { self.PATH_EL : self.token.path,
                                           self.ID_EL   : self.token.slug },
                          self.DATA_EL : self.token.data })
         else:
             rec[self.DATA_EL] = self.token.data
             g.db.save(rec)
             
         self.token.response = True, self.token.path, self.token.slug
     except:
         L.exception('db_op::post')
         self.token.response = False