예제 #1
0
파일: nodes.py 프로젝트: iofun/treehouse
    def head(self, account=None, node_uuid=None, page_num=0):
        '''
            Head nodes
        '''
        # logging request query arguments
        logging.info('request query arguments {0}'.format(self.request.arguments))

        # request query arguments
        query_args = self.request.arguments

        # get the current frontend logged username
        username = self.get_current_username()

        # if the user don't provide an account we use the frontend username as last resort
        account = (query_args.get('account', [username])[0] if not account else account)

        # query string checked from string to boolean
        checked = str2bool(str(query_args.get('checked', [False])[0]))

        if not node_uuid:
            # get list of nodes
            nodes = yield self.get_node_list(account, checked, page_num)
            self.set_status(200)
            self.finish({'nodes':nodes})
        else:
            # try to get stuff from cache first
            logging.info('node_uuid {0}'.format(node_uuid.rstrip('/')))
            
            data = self.cache.get('nodes:{0}'.format(node_uuid))

            if data is not None:
                logging.info('nodes:{0} done retrieving!'.format(node_uuid))
                result = data
            else:
                data = yield self.get_node(account, node_uuid.rstrip('/'))
                if self.cache.add('nodes:{0}'.format(node_uuid), data, 1):
                    logging.info('new cache entry {0}'.format(str(data)))
                    result = data


            # result = yield self.get_node(account, node_uuid)
  
            if not result:

                # -- need more info

                self.set_status(400)
                
                # -- why missing account?
                self.finish({'missing':account})
            else:
                self.set_status(200)
                self.finish(result)
예제 #2
0
파일: imps.py 프로젝트: iofun/treehouse
    def get(self, account=None, imp_uuid=None, page_num=0):
        '''
            Get imps
        '''
        # logging request query arguments
        logging.info('request query arguments {0}'.format(self.request.arguments))

        # request query arguments
        query_args = self.request.arguments

        # get the current frontend logged username
        username = self.get_current_username()

        # if the user don't provide an account we use the frontend username as last resort
        account = (query_args.get('account', [username])[0] if not account else account)

        # query string checked from string to boolean
        checked = str2bool(str(query_args.get('checked', [False])[0]))

        if not imp_uuid:
            # get list of directories
            imps = yield self.get_imp_list(account, checked, page_num)
            self.set_status(200)
            self.finish({'imps':imps})
        else:
            # try to get stuff from cache first
            logging.info('imp_uuid {0}'.format(imp_uuid.rstrip('/')))
            
            data = self.cache.get('imps:{0}'.format(imp_uuid))

            if data is not None:
                logging.info('imps:{0} done retrieving!'.format(imp_uuid))
                result = data
            else:
                data = yield self.get_imp(account, imp_uuid.rstrip('/'))
                if self.cache.add('imps:{0}'.format(imp_uuid), data, 1):
                    logging.info('new cache entry {0}'.format(str(data)))
                    result = data

            if not result:

                # -- need moar info

                self.set_status(400)
                self.finish({'missing account {0} imp_uuid {1} page_num {2} checked {3}'.format(
                    account, imp_uuid.rstrip('/'), page_num, checked):result})
            else:
                self.set_status(200)
                self.finish(result)
예제 #3
0
파일: nodes.py 프로젝트: iofun/treehouse
    def get(self, account=None, node_uuid=None, page_num=0):
        '''
            Get nodes
        '''
        # logging request query arguments
        logging.info('request query arguments {0}'.format(self.request.arguments))

        # request query arguments
        query_args = self.request.arguments

        # get the current frontend logged username
        username = self.get_current_username()

        # if the user don't provide an account we use the frontend username as last resort
        account = (query_args.get('account', [username])[0] if not account else account)

        # query string checked from string to boolean
        checked = query_args.get('checked', [False])[0]

        logging.warning(checked)

        testc = str2bool(str(checked))

        logging.warning(testc)

        if not node_uuid:
            # get list of nodes
            nodes = yield self.get_node_list(account, checked, page_num)
            self.set_status(200)
            self.finish({'nodes':nodes})
        else:
            #account = account.rstrip('/')
            logging.info('node_uuid {0}'.format(node_uuid.rstrip('/')))
            result = yield self.get_node(account, node_uuid.rstrip('/'))

            if not result:
                
                # -- need to clean this info

                self.set_status(400)
                self.finish({'missing account {0} node_uuid {1} page_num {2} checked {3}'.format(
                    account, node_uuid.rstrip('/'), page_num, checked):result})
            else:
                self.set_status(200)
                self.finish(result)
예제 #4
0
파일: nodes.py 프로젝트: iofun/treehouse
    def get_nodes_list(self, account, checked, page_num):
        '''
            Get nodes list
        '''
        page_num = int(page_num)
        page_size = self.settings.get('page_size')
        nodes_list = []

        find_query = {'account':account}

        if checked != 'all':
            find_query['checked'] = str2bool(str(checked))

        query = self.db.nodes.find(find_query, {'_id':0, 'resources.imps.contains':0}) # imps or nodes?
        q = query.sort([('_id', -1)]).skip(int(page_num) * page_size).limit(page_size)

        try:
            while (yield query.fetch_next):
                node = q.next_object()
                nodes_list.append(node)
        except Exception, e:
            logging.exception(e)
            raise gen.Return(e)