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:
|
else:
|
||||||
raise TypeError('Distance must be multiplied with number')
|
raise TypeError('Distance must be multiplied with number')
|
||||||
|
|
||||||
|
def __rmul__(self, other):
|
||||||
|
return self * other
|
||||||
|
|
||||||
def __div__(self, other):
|
def __div__(self, other):
|
||||||
if isinstance(other, (int, float, long, Decimal)):
|
if isinstance(other, (int, float, long, Decimal)):
|
||||||
return Distance(default_unit=self._default_unit, m=(self.m / float(other)))
|
return Distance(default_unit=self._default_unit, m=(self.m / float(other)))
|
||||||
|
@ -309,6 +312,9 @@ class Area(MeasureBase):
|
||||||
else:
|
else:
|
||||||
raise TypeError('Area must be multiplied with number')
|
raise TypeError('Area must be multiplied with number')
|
||||||
|
|
||||||
|
def __rmul__(self, other):
|
||||||
|
return self * other
|
||||||
|
|
||||||
def __div__(self, other):
|
def __div__(self, other):
|
||||||
if isinstance(other, (int, float, long, Decimal)):
|
if isinstance(other, (int, float, long, Decimal)):
|
||||||
return Area(default_unit=self._default_unit, sq_m=(self.sq_m / float(other)))
|
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
|
d3 = d1 * 2
|
||||||
self.assertEqual(d3.m, 200)
|
self.assertEqual(d3.m, 200)
|
||||||
|
d3 = 2 * d1
|
||||||
|
self.assertEqual(d3.m, 200)
|
||||||
d3 *= 5
|
d3 *= 5
|
||||||
self.assertEqual(d3.m, 1000)
|
self.assertEqual(d3.m, 1000)
|
||||||
|
|
||||||
|
@ -248,6 +250,8 @@ class AreaTest(unittest.TestCase):
|
||||||
|
|
||||||
a3 = a1 * 2
|
a3 = a1 * 2
|
||||||
self.assertEqual(a3.sq_m, 200)
|
self.assertEqual(a3.sq_m, 200)
|
||||||
|
a3 = 2 * a1
|
||||||
|
self.assertEqual(a3.sq_m, 200)
|
||||||
a3 *= 5
|
a3 *= 5
|
||||||
self.assertEqual(a3.sq_m, 1000)
|
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(a1), 'Area(sq_m=100.0)')
|
||||||
self.assertEqual(repr(a2), 'Area(sq_km=3.5)')
|
self.assertEqual(repr(a2), 'Area(sq_km=3.5)')
|
||||||
|
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
s = unittest.TestSuite()
|
s = unittest.TestSuite()
|
||||||
s.addTest(unittest.makeSuite(DistanceTest))
|
s.addTest(unittest.makeSuite(DistanceTest))
|
||||||
|
|
Loading…
Reference in New Issue