Fixed #12390 -- `Distance` and `Area` objects now support multiplication when they are the right-hand side.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@11898 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
5bd63663a9
commit
fed3081caf
|
@ -225,6 +225,9 @@ class Distance(MeasureBase):
|
|||
else:
|
||||
raise TypeError('Distance must be multiplied with number')
|
||||
|
||||
def __rmul__(self, other):
|
||||
return self * other
|
||||
|
||||
def __div__(self, other):
|
||||
if isinstance(other, (int, float, long, Decimal)):
|
||||
return Distance(default_unit=self._default_unit, m=(self.m / float(other)))
|
||||
|
@ -309,6 +312,9 @@ class Area(MeasureBase):
|
|||
else:
|
||||
raise TypeError('Area must be multiplied with number')
|
||||
|
||||
def __rmul__(self, other):
|
||||
return self * other
|
||||
|
||||
def __div__(self, other):
|
||||
if isinstance(other, (int, float, long, Decimal)):
|
||||
return Area(default_unit=self._default_unit, sq_m=(self.sq_m / float(other)))
|
||||
|
|
|
@ -95,6 +95,8 @@ class DistanceTest(unittest.TestCase):
|
|||
|
||||
d3 = d1 * 2
|
||||
self.assertEqual(d3.m, 200)
|
||||
d3 = 2 * d1
|
||||
self.assertEqual(d3.m, 200)
|
||||
d3 *= 5
|
||||
self.assertEqual(d3.m, 1000)
|
||||
|
||||
|
@ -248,6 +250,8 @@ class AreaTest(unittest.TestCase):
|
|||
|
||||
a3 = a1 * 2
|
||||
self.assertEqual(a3.sq_m, 200)
|
||||
a3 = 2 * a1
|
||||
self.assertEqual(a3.sq_m, 200)
|
||||
a3 *= 5
|
||||
self.assertEqual(a3.sq_m, 1000)
|
||||
|
||||
|
@ -319,7 +323,6 @@ class AreaTest(unittest.TestCase):
|
|||
self.assertEqual(repr(a1), 'Area(sq_m=100.0)')
|
||||
self.assertEqual(repr(a2), 'Area(sq_km=3.5)')
|
||||
|
||||
|
||||
def suite():
|
||||
s = unittest.TestSuite()
|
||||
s.addTest(unittest.makeSuite(DistanceTest))
|
||||
|
|
Loading…
Reference in New Issue