36 lines
796 B
Python
36 lines
796 B
Python
|
from django.utils import six
|
||
|
|
||
|
from judge.ratings import rating_class, rating_name, rating_progress
|
||
|
from . import registry
|
||
|
|
||
|
|
||
|
def _get_rating_value(func, obj):
|
||
|
if obj is None:
|
||
|
return None
|
||
|
|
||
|
if isinstance(obj, six.integer_types):
|
||
|
return func(obj)
|
||
|
else:
|
||
|
return func(obj.rating)
|
||
|
|
||
|
|
||
|
@registry.function('rating_class')
|
||
|
def get_rating_class(obj):
|
||
|
return _get_rating_value(rating_class, obj) or 'rate-none'
|
||
|
|
||
|
|
||
|
@registry.function(name='rating_name')
|
||
|
def get_name(obj):
|
||
|
return _get_rating_value(rating_name, obj) or 'Unrated'
|
||
|
|
||
|
|
||
|
@registry.function(name='rating_progress')
|
||
|
def get_progress(obj):
|
||
|
return _get_rating_value(rating_progress, obj) or 0.0
|
||
|
|
||
|
|
||
|
@registry.function
|
||
|
@registry.render_with('user/rating.html')
|
||
|
def rating_number(obj):
|
||
|
return {'rating': obj}
|