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}