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)'> </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'> </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)'> </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