First attempts at a get_favored_results method to find what people are generally...
[philo.git] / contrib / sobol / admin.py
1 from django.contrib import admin
2 from django.db.models import Count
3 from philo.admin import EntityAdmin
4 from philo.contrib.sobol.models import Search, ResultURL, SearchView
5
6
7 class ResultURLInline(admin.TabularInline):
8         model = ResultURL
9         template = 'search/admin/chosen_result_inline.html'
10         readonly_fields = ('url',)
11         can_delete = False
12         extra = 0
13         max_num = 0
14
15
16 class SearchAdmin(admin.ModelAdmin):
17         readonly_fields = ('string',)
18         inlines = [ResultURLInline]
19         list_display = ['string', 'unique_urls', 'total_clicks']
20         search_fields = ['string', 'result_urls__url']
21         
22         def unique_urls(self, obj):
23                 return obj.unique_urls
24         unique_urls.admin_order_field = 'unique_urls'
25         
26         def total_clicks(self, obj):
27                 return obj.total_clicks
28         total_clicks.admin_order_field = 'total_clicks'
29         
30         def queryset(self, request):
31                 qs = super(SearchAdmin, self).queryset(request)
32                 return qs.annotate(total_clicks=Count('result_urls__clicks', distinct=True), unique_urls=Count('result_urls', distinct=True))
33
34
35 class SearchViewAdmin(EntityAdmin):
36         raw_id_fields = ('results_page',)
37         related_lookup_fields = {'fk': raw_id_fields}
38
39
40 admin.site.register(Search, SearchAdmin)
41 admin.site.register(SearchView, SearchViewAdmin)