1from __future__ import unicode_literals
2
3from django.contrib import admin
4from django.utils.translation import ugettext_lazy as _
5
6from . import app_settings, get_star_ratings_rating_model
7from .models import UserRating
8from django.utils.html import format_html
9
10
11class UserRatingAdmin(admin.ModelAdmin):
12    def get_queryset(self, request):
13        return super(UserRatingAdmin, self).get_queryset(request).select_related('rating', 'user').prefetch_related('rating__content_object')
14
15    def stars(self, obj):
16        html = "<span style='display: block; width: {}px; height: 10px; " + \
17               "background: url(/static/star-ratings/images/admin_stars.png)'>&nbsp;</span>"
18        return format_html(html, obj.score * 10)
19
20    stars.allow_tags = True
21    stars.short_description = _('Score')
22    list_display = ('__str__', 'stars')
23
24
25class RatingAdmin(admin.ModelAdmin):
26    def get_queryset(self, request):
27        return super(RatingAdmin, self).get_queryset(request).prefetch_related('content_object')
28
29    def stars(self, obj):
30        html = "<div style='position: relative;'>"
31        html += "<span style='position: absolute; top: 0; left: 0; width: {}px; height: 10px; " + \
32                "background: url(/static/star-ratings/images/admin_stars.png) 0px 10px'>&nbsp;</span>"
33        html += "<span style='position: absolute; top: 0; left: 0; width: {}px; height: 10px; " + \
34                "background: url(/static/star-ratings/images/admin_stars.png)'>&nbsp;</span>"
35        html += "</div>"
36        return format_html(html, app_settings.STAR_RATINGS_RANGE * 10, obj.average * 10)
37
38    stars.allow_tags = True
39    stars.short_description = _('Rating average')
40    list_display = ('__str__', 'stars')
41
42
43admin.site.register(get_star_ratings_rating_model(), RatingAdmin)
44admin.site.register(UserRating, UserRatingAdmin)
45