NDOJ/judge/jinja2/rating.py

36 lines
796 B
Python
Raw Normal View History

2020-01-21 06:35:58 +00:00
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}