本文整理匯總了Python中ebpub.db.schemafilters.FilterChain.update_from_query_params方法的典型用法代碼示例。如果您正苦於以下問題:Python FilterChain.update_from_query_params方法的具體用法?Python FilterChain.update_from_query_params怎麽用?Python FilterChain.update_from_query_params使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類ebpub.db.schemafilters.FilterChain
的用法示例。
在下文中一共展示了FilterChain.update_from_query_params方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: newsitems_geojson
# 需要導入模塊: from ebpub.db.schemafilters import FilterChain [as 別名]
# 或者: from ebpub.db.schemafilters.FilterChain import update_from_query_params [as 別名]
def newsitems_geojson(request):
"""Get a list of newsitems, optionally filtered for one place ID
and/or one schema slug.
Response is a geojson string.
"""
# Note: can't use @cache_page here because that ignores all requests
# with query parameters (in FetchFromCacheMiddleware.process_request).
# So, we'll use the low-level cache API.
# Copy-pasted code from ajax_place_newsitems. Refactoring target:
# Seems like there are a number of similar code blocks in
# ebpub.db.views?
pid = request.GET.get('pid', '')
schema = request.GET.get('schema', None)
if schema is not None:
schema = get_object_or_404(Schema, slug=schema)
nid = request.GET.get('newsitem', '')
newsitem_qs = NewsItem.objects.all()
if nid:
newsitem_qs = newsitem_qs.filter(id=nid)
else:
filters = FilterChain(request=request, queryset=newsitem_qs, schema=schema)
if pid:
filters.add_by_place_id(pid)
else:
# Whole city!
pass
# More copy/paste from ebpub.db.views...
# As an optimization, limit the NewsItems to those published in the
# last few days.
filters.update_from_query_params(request)
if not filters.has_key('date'):
end_date = today()
start_date = end_date - datetime.timedelta(days=settings.DEFAULT_DAYS)
filters.add('date', start_date, end_date)
newsitem_qs = filters.apply()
newsitem_qs = newsitem_qs
if not has_staff_cookie(request):
newsitem_qs = newsitem_qs.filter(schema__is_public=True)
# Put a hard limit on the number of newsitems, and throw away
# older items.
newsitem_qs = newsitem_qs.select_related().order_by('-item_date', '-id')
newsitem_qs = newsitem_qs[:constants.NUM_NEWS_ITEMS_PLACE_DETAIL]
# Done preparing the query; cache based on the raw SQL
# to be sure we capture everything that matters.
cache_seconds = 60 * 5
cache_key = 'newsitem_geojson:' + _make_cache_key_from_queryset(newsitem_qs)
output = cache.get(cache_key, None)
if output is None:
newsitem_list = list(newsitem_qs)
output = api_items_geojson(newsitem_list)
cache.set(cache_key, output, cache_seconds)
response = HttpResponse(output, mimetype="application/javascript")
patch_response_headers(response, cache_timeout=60 * 5)
return response