def render(self, context):
     # retreiving queryset from admin changelist
     cl = self.cl.resolve(context)
     objects = cl.result_list
     # getting request
     request = context['request']
     # getting stats callables
     callables = cl.model_admin.get_stats(request, objects)
     # getting aggregates (to avoid too many db queries)
     aggregates = models.collect_aggregates(callables)
     # hit the db for aggregated data
     data = models.aggregate(objects, aggregates)
     # calling all stats callbales
     context[self.varname] = [i(request, objects, data) for i in callables]
     return u''
示例#2
0
 def render(self, context):
     # retreiving queryset from admin changelist
     cl = self.cl.resolve(context)
     objects = cl.result_list
     # getting request
     request = context['request']
     # getting stats callables
     callables = cl.model_admin.get_stats(request, objects)
     # getting aggregates (to avoid too many db queries)
     aggregates = models.collect_aggregates(callables)
     # hit the db for aggregated data
     data = models.aggregate(objects, aggregates)
     # calling all stats callbales
     context[self.varname] = [i(request, objects, data) for i in callables]
     return u''
示例#3
0
    def test_aggregates(self):
        stats = avg, sum_, min_, max_, dummy = self.get_stats()
        aggregates = models.collect_aggregates(stats)
        self.assertEqual([type(i) for i in aggregates], 
            [django_models.Avg, django_models.Sum, django_models.Max])
        
        queryset = self.all()
        data = models.aggregate(queryset, aggregates)
        self.assertEqual(data['value__avg'], 6.0)
        self.assertEqual(data['value__sum'], 30)
        self.assertEqual(data['value__max'], 13)

        expected_results = [
            (u'Average value', 6.0), 
            (u'Total value', 30), 
            (u'Min value', 1), 
            (u'Max value', 13), 
            ('answer', 42),
        ]
        results = [i(None, queryset, data) for i in stats]
        self.assertEqual([tuple(i) for i in results], expected_results)