Source code for indicator.percentage

#!/usr/bin/env python
# vim: ai ts=4 sts=4 et sw=4 coding=utf-8

import fractions

from django.utils.translation import ugettext as _

[docs]class Percentage(fractions.Fraction): """ This is exactly like :class:`fractions.Fraction` except that :class:`Percentage` never simplifies the numerator or denominator. """ num = 0 den = 1 @property
[docs] def empty(self): return (self.den == 0)
def __new__(cls, n, d): obj = super(Percentage,cls).__new__(cls, n, 1 if (d == 0) else d) obj.num = n obj.den = d return obj def __repr__(self): return u"Percentage(%d, %d)" % (self.num, self.den) def __str__(self): return unicode(self) def __unicode__(self): return "%s (%d/%d)" % (self.short_str(), self.num, self.den) def __reduce__(self): return (self.__class__, (self.num, self.den))
[docs] def short_str(self): return u'--' if self.empty else (u"%d%%" % int(100.0*self))