Exemplo n.º 1
0
    def feed_sequence_update_alltime(self):

        logging.info("In feed_sequence_update_alltime")
        urlsafe_cursor = self.request.get('cursor')
        cursor_from_url = Cursor(
            urlsafe=urlsafe_cursor) if urlsafe_cursor else None
        logging.info("Cursor in start is: {}".format(cursor_from_url))

        #Define query here
        gql_query_text = 'Select * From TestSequences'

        #Execute query
        query_o = ndb.gql(gql_query_text)
        BATCH_SIZE = 500
        results, next_cursor, more = query_o.fetch_page(
            BATCH_SIZE, start_cursor=cursor_from_url)

        if more:
            pass
        if next_cursor:
            pass

        if not results:
            logging.info("feed_sequence_update_task: all done")
            return

        #Calling fn to insert data in FeedSequence
        record_type = 'alltime'
        FeedModelCheck.add_feeds_sequences_records(self, results, record_type)

        cursor = query_o.fetch()
        taskqueue.add(url='/admin/feed/add-top-searches-alltime',
                      params={'cursor': cursor})
        logging.info("Exiting feed_sequence_update_alltime")
        return
Exemplo n.º 2
0
    def get(self, *args):

        id_defined = False

        if args and len(args) > 1:
            raise DatastoreEndpointException("disobeying rest convension /path/:id")
        elif args:
            id_defined = args[0]

        limit = int(self.request.get("limit", 10))
        offset = int(self.request.get("offset", 0))
        cursor = self.request.get("cursor", None)
        if cursor:
            cursor = Cursor(urlsafe=cursor)
        more = False

        log.info(self.request.params)

        if not id_defined:
            query_dict = {}
            for key, value in self.request.params.items():
                if key not in self.__defined:
                    query_dict.update([(key, value)])
            log.info(query_dict)
            query = _construct_query(self._model, query_dict)
            records, cursor, more = query.fetch_page(limit, start_cursor=cursor, offset=offset)
            query_dict = map(lambda x: x.to_dict(), records)

        else:
            entity = self._model.get_by_id(id_defined)
            self.render_json(entity.to_dict())
            return

        response_template = {
            "limit": limit,
            "offset": offset + len(records),
            "records": query_dict,
            "cursor": cursor.urlsafe() if cursor else None,
            "more": more
        }

        self.render_json(response_template)
Exemplo n.º 3
0
    def get_page(cls, query=None, cursor=None, sort=None, amount=50):
        c = None
        if cursor:
            c = Cursor.from_websafe_string(cursor)
        if not query:
            query = cls.query()

        if sort:
            query = query.order(cls.generate_order_from_string(sort))

        data, next_cursor, more = query.fetch_page(amount, start_cursor=c)
        data = {cls._get_kind(): data}
        if more:
            data["cursor"] = next_cursor.to_websafe_string()
        return data
Exemplo n.º 4
0
    def posts_list(self, request):
        """
        List posts
        """
        limit = min(request.limit, MAX_LIMIT)
        start_cursor = Cursor(urlsafe=request.next_token)

        query = Post.query()
        posts, next_cursor, more = query.fetch_page(limit,
                                                    start_cursor=start_cursor,
                                                    batch_size=limit)

        next_token = next_cursor.urlsafe() if next_cursor and more else None
        resp_posts = [self._post_from_db(post) for post in posts]

        return PostsCollection(posts=resp_posts, next_token=next_token)
Exemplo n.º 5
0
    def paginate_queryset(self, queryset, request, view=None):
        """
        Paginate a queryset if required, either returning a
        page object, or `None` if pagination is not configured for this view.
        """
        self.count = queryset.count()
        self.request = request
        try:
            self.page, self.next_page, self.has_next = queryset.fetch_page(
                self.get_page_size(request),
                start_cursor=Cursor(urlsafe=self.get_page_token()))
        except InvalidPage:
            raise NotFound('Requested page not found')
        except BadValueError as err:
            raise BadRequest(str(err))

        return list(self.page)
Exemplo n.º 6
0
    def get(self):
        url_title = self.request.get('url_title')

        curs = Cursor(urlsafe=self.request.get('cursor'))
        page_size = 60
        if ws.debug:
            page_size = 1
        companies, next_curs, more = Company.randomOrder(1).fetch_page(page_size, start_cursor=curs)

        if more and next_curs:
            next_page_cursor = next_curs.urlsafe()
        else:
            next_page_cursor = None
        extraParams = {
            'companies': companies,
            'next_page_cursor': next_page_cursor,
            'url_title': url_title,
        }
        self.render('templates/companies.jinja2', extraParams)
Exemplo n.º 7
0
 def get_results_with_cursors(self, query, reverse_query, size):
     cursor = self.request.get('cursor', None)
     if cursor:
         try:
             cursor = Cursor.from_websafe_string(cursor)
         except:
             cursor = None
     next_cursor = previous_cursor = None
     if cursor is not None:
         reverse_cursor = cursor.reversed()
         reverse_results, reverse_next_cursor, reverse_more = reverse_query.fetch_page(
             size, start_cursor=reverse_cursor
         )
         if reverse_more:
             previous_cursor = reverse_next_cursor.reversed()
             previous_cursor = previous_cursor.to_websafe_string()
         else:
             previous_cursor = 'START'
     results, next_cursor, more = query.fetch_page(size, start_cursor=cursor)
     if more:
         next_cursor = next_cursor.to_websafe_string()
     else:
         next_cursor = None
     return results, previous_cursor, next_cursor
Exemplo n.º 8
0
        else:
            try:
                limit = int(self.request.GET.get('limit'))
                if limit <= 0: raise ValueError('Limit cannot be zero or less')
            except ValueError, exc:
                # Invalid limit value
                raise RESTException('Invalid "limit" parameter - %s' %
                                    self.request.GET.get('limit'))

        if not self.request.GET.get('cursor'):
            # Fetch results from scratch
            cursor = None
        else:
            # Continue a previous query
            try:
                cursor = Cursor(urlsafe=self.request.GET.get('cursor'))
            except BadValueError, exc:
                raise RESTException('Invalid "cursor" argument - %s' %
                                    self.request.GET.get('cursor'))

        try:
            (results, cursor,
             more_available) = query.fetch_page(limit, start_cursor=cursor)
        except BadRequestError, exc:
            # This happens when we're using an existing cursor and the other query arguments were messed with
            raise RESTException('Invalid "cursor" argument - %s' %
                                self.request.GET.get('cursor'))

        if not more_available:
            cursor = None