Author: adrian Date: 2009-04-10 11:58:29 -0500 (Fri, 10 Apr 2009) New Revision: 10486
Modified: django/trunk/django/contrib/gis/db/models/fields/__init__.py Log: Changed GeoDjango GeometryField to lazily load units, units_name and _spheroid Modified: django/trunk/django/contrib/gis/db/models/fields/__init__.py =================================================================== --- django/trunk/django/contrib/gis/db/models/fields/__init__.py 2009-04-10 16:34:49 UTC (rev 10485) +++ django/trunk/django/contrib/gis/db/models/fields/__init__.py 2009-04-10 16:58:29 UTC (rev 10486) @@ -46,8 +46,10 @@ # Setting the SRID and getting the units. Unit information must be # easily available in the field instance for distance queries. self.srid = srid - self.units, self.units_name, self._spheroid = get_srid_info(srid) + # units_cache, units_name_cache and _spheroid_cache are lazily loaded. + self._units_cache = self._units_name_cache = self._spheroid_cache = None + # Setting the dimension of the geometry field. self.dim = dim @@ -57,6 +59,27 @@ super(GeometryField, self).__init__(**kwargs) # Calling the parent initializtion function + def _populate_srid_info(self): + self._units_cache, self._units_name_cache, self._spheroid_cache = get_srid_info(self.srid) + + def _get_units(self): + if self._units_cache is None: + self._populate_srid_info() + return self._units_cache + units = property(_get_units) + + def _get_units_name(self): + if self._units_name_cache is None: + self._populate_srid_info() + return self._units_name_cache + units_name = property(_get_units_name) + + def _get_spheroid(self): + if self._spheroid_cache is None: + self._populate_srid_info() + return self._spheroid_cache + _spheroid = property(_get_spheroid) + # The following properties are for formerly private variables that are now # public for GeometryField. Because of their use by third-party applications, # a deprecation warning is issued to notify them to use new attribute name. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-updates@googlegroups.com To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-updates?hl=en -~----------~----~----~----~------~----~------~--~---