def _get_chart(): def _serialize(item): item['object'] = serializers.serialize_work(item['object']) return item w = weekly() chart = PopularWorksChart(w, 5) return map(_serialize, chart)
def _get_chart(): def _serialize(item): work = item['object'] item['object'] = serializers.serialize_work(work) return item w = weekly() chart = compare_charts( PopularWorksChart(w, 5), PopularWorksChart(w.prev()) ) return map(_serialize, chart)
def main(request): w = weekly() chart = compare_charts( PopularWorksChart(w, 5), PopularWorksChart(w.prev()) ) return render(request, 'chart/index.html', { 'weekly_works': load_comments(chart), 'timeline': (History.objects.select_related('user', 'work') .filter(work__index__record_count__gt=1) .exclude(comment='')[:6].transform(include_records)) })
def get(self, request, range): if range == 'weekly': range_obj = weekly() elif range == 'monthly': range_obj = monthly() else: range_obj = None limit = int(request.GET['limit']) def serialize_chart(chart, limit): data = {} if chart.range: data['start'] = chart.start.strftime('%Y-%m-%d') data['end'] = chart.end.strftime('%Y-%m-%d') data['has_diff'] = True else: data['has_diff'] = False items = [] for item in chart: if item['rank'] > limit: break item['object'] = { 'link': item['object'].get_absolute_url(), 'text': unicode(item['object']) } items.append(item) data['items'] = items return data cache_key = '/charts/{}/{}/{}?limit=%d'.format( self.chart_class.__name__, range, limit) result = cache.get(cache_key) if result is None: if range_obj: chart = compare_charts(self.chart_class(range_obj, limit), self.chart_class(range_obj.prev())) else: chart = self.chart_class(limit=limit) result = serialize_chart(chart, limit) result['title'] = self.chart_class.title cache.set(cache_key, result, 60 * 60 * 2) return result