mirror of
https://github.com/django/django.git
synced 2024-12-22 09:05:43 +00:00
Fixed #35117 -- Added support for the hectare unit in Area.
This commit is contained in:
parent
6debeac9e7
commit
c7e986fc9f
@ -347,8 +347,13 @@ class Distance(MeasureBase):
|
||||
class Area(MeasureBase):
|
||||
STANDARD_UNIT = AREA_PREFIX + Distance.STANDARD_UNIT
|
||||
# Getting the square units values and the alias dictionary.
|
||||
UNITS = {"%s%s" % (AREA_PREFIX, k): v**2 for k, v in Distance.UNITS.items()}
|
||||
ALIAS = {k: "%s%s" % (AREA_PREFIX, v) for k, v in Distance.ALIAS.items()}
|
||||
UNITS = {"%s%s" % (AREA_PREFIX, k): v**2 for k, v in Distance.UNITS.items()} | {
|
||||
"ha": 10000,
|
||||
}
|
||||
ALIAS = {k: "%s%s" % (AREA_PREFIX, v) for k, v in Distance.ALIAS.items()} | {
|
||||
"hectare": "ha",
|
||||
}
|
||||
|
||||
LALIAS = {k.lower(): v for k, v in ALIAS.items()}
|
||||
|
||||
def __truediv__(self, other):
|
||||
|
@ -116,6 +116,19 @@ Unit Attribute Full name or alias(es)
|
||||
For example, ``Area(sq_m=2)`` creates an :class:`Area` object
|
||||
representing two square meters.
|
||||
|
||||
In addition to unit with the ``sq_`` prefix, the following units are also
|
||||
supported on :class:`Area`:
|
||||
|
||||
================================= ========================================
|
||||
Unit Attribute Full name or alias(es)
|
||||
================================= ========================================
|
||||
``ha`` Hectare
|
||||
================================= ========================================
|
||||
|
||||
.. versionchanged:: 5.1
|
||||
|
||||
Support for the ``ha`` unit was added.
|
||||
|
||||
Measurement API
|
||||
===============
|
||||
|
||||
|
@ -70,6 +70,8 @@ Minor features
|
||||
``metro_code`` and ``region_code``, but the previous keys are also retained
|
||||
for backward compatibility.
|
||||
|
||||
* :class:`~django.contrib.gis.measure.Area` now supports the ``ha`` unit.
|
||||
|
||||
:mod:`django.contrib.messages`
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
@ -38,6 +38,10 @@ class DistanceTest(SimpleTestCase):
|
||||
with self.assertRaises(AttributeError):
|
||||
D(banana=100)
|
||||
|
||||
def test_init_invalid_area_only_units(self):
|
||||
with self.assertRaises(AttributeError):
|
||||
D(ha=100)
|
||||
|
||||
def test_access(self):
|
||||
"Testing access in different units"
|
||||
d = D(m=100)
|
||||
@ -294,6 +298,13 @@ class AreaTest(unittest.TestCase):
|
||||
self.assertEqual(repr(a1), "Area(sq_m=100.0)")
|
||||
self.assertEqual(repr(a2), "Area(sq_km=3.5)")
|
||||
|
||||
def test_hectare(self):
|
||||
a = A(sq_m=10000)
|
||||
self.assertEqual(a.ha, 1)
|
||||
|
||||
def test_hectare_unit_att_name(self):
|
||||
self.assertEqual(A.unit_attname("Hectare"), "ha")
|
||||
|
||||
def test_hash(self):
|
||||
a1 = A(sq_m=100)
|
||||
a2 = A(sq_m=1000000)
|
||||
|
Loading…
Reference in New Issue
Block a user