Exemplo n.º 1
0
    def get(self):
        try:
            cursor = Cursor.from_websafe_string(self.request.get('cursor'))
        except BadValueError:
            cursor = None

        try:
            limit = int(self.request.get('limit'))
            if limit <= 0:
                raise ValueError
        except (TypeError, ValueError):
            limit = 100

        query = Poll.query().order(-Poll.created)
        polls, next_cursor, has_more = query.fetch_page(limit,
                                                        start_cursor=cursor)

        for poll in polls:
            self.response.write(poll.render_html() + '\n\n<hr>\n\n')

        if not has_more:
            return

        more_url = '?cursor={}&limit={}'.format(
            next_cursor.to_websafe_string(), limit)
        self.response.write('<p><a href="{}">More</a></p>'.format(more_url))
Exemplo n.º 2
0
def create_matches_for_user(app_user, group_id, cursor=None):
    logging.debug('debugging_news create_matches_for_user user:%s group:%s', app_user, group_id)

    user_settings = NewsSettingsUser.create_key(app_user).get()

    batch_count = 50
    qry = NewsItem.list_published_by_group_id(group_id)
    start_cursor = Cursor.from_websafe_string(cursor) if cursor else None
    items, new_cursor, has_more = qry.fetch_page(batch_count, start_cursor=start_cursor)
    si_users = []
    for news_item in items:
        if news_item.sender in si_users:
            continue
        si_users.append(news_item.sender)

    to_put = []
    for news_item in items:
        m = _create_news_item_match(user_settings, news_item)
        if not m:
            continue
        to_put.append(m)
    if to_put:
        put_in_chunks(to_put, is_ndb=True)

    if has_more and new_cursor:
        new_cursor_str = new_cursor.to_websafe_string().decode('utf-8')
        deferred.defer(create_matches_for_user, app_user, group_id, new_cursor_str, _queue=NEWS_MATCHING_QUEUE)
Exemplo n.º 3
0
def _get_jobs(qry, cursor, language):
    fetch_size = 10
    items, new_cursor, has_more = qry.fetch_page(fetch_size, start_cursor=Cursor.from_websafe_string(cursor) if cursor else None, keys_only=True)

    result = GetJobsResponseTO()
    result.has_criteria = True
    result.items = []
    for m in ndb.get_multi(items):
        job_offer = JobOffer.get_by_id(m.job_id)
        timestamp = get_epoch_from_datetime(m.created)
        interested = m.interested if hasattr(m, 'interested') else False
        job_offer_to = JobOfferTO.fromJobOffer(job_offer, timestamp, interested, language)
        if not job_offer_to:
            continue
        result.items.append(job_offer_to)
    result.cursor = new_cursor.to_websafe_string().decode('utf-8') if new_cursor else None
    result.has_more = has_more
    return result
Exemplo n.º 4
0
def list_view(request, query, context={}, page_size=50, template_name=None):
    template_name = get_list_template_name(query, template_name, request.is_ajax())
    start_cursor = request.GET.get('page')
    page_size = int(request.GET.get('page_size', page_size))
    if start_cursor:
        start_cursor = Cursor.from_websafe_string(start_cursor)
    col, cursor, more = query.fetch_page(page_size, start_cursor=start_cursor)
    d = {
        'list': col,
        'page_obj': {'has_next': more, 'next_cursor': cursor.to_websafe_string() if cursor else None }
    }
    context.update(d)
    context = RequestContext(request, context)
    template = loader.get_template(template_name)
    response = HttpResponse(template.render(context))
    if request.is_ajax() and more:
        response['X-Cursor'] = cursor.to_websafe_string()
    return response