Ticket #9745: snaptogrid.diff

File snaptogrid.diff, 1.6 KB (added by norn, 15 years ago)

SnapToGrid support patch against django-1.0.2-final

Line 
1diff -r Django-1.0.2-final/django/contrib/gis/db/backend/postgis/__init__.py Django-1.0.2-final-patched/django/contrib/gis/db/backend/postgis/__init__.py
231a32
3> snaptogrid=SNAP_TO_GRID,
4diff -r Django-1.0.2-final/django/contrib/gis/db/backend/postgis/query.py Django-1.0.2-final-patched/django/contrib/gis/db/backend/postgis/query.py
562a63
6> SNAP_TO_GRID = get_func('SnapToGrid')
7diff -r Django-1.0.2-final/django/contrib/gis/db/models/manager.py Django-1.0.2-final-patched/django/contrib/gis/db/models/manager.py
865a66,68
9> def snaptogrid(self, *args, **kwargs):
10> return self.get_query_set().snaptogrid(*args, **kwargs)
11>
12diff -r Django-1.0.2-final/django/contrib/gis/db/models/query.py Django-1.0.2-final-patched/django/contrib/gis/db/models/query.py
13219a220,237
14> def snaptogrid(self, size=0.01, **kwargs):
15> """
16> Snap all points of the input geometry to the grid defined by
17> cell size.
18> """
19> if SpatialBackend.version[0]<1:
20> raise "Postgis version doesn't support SnapToGrid"
21> if not isinstance(size, (float, int)):
22> raise TypeError('Size of the grid must be float or int.')
23>
24> field_name = kwargs.get('field_name', None)
25> tmp, geo_field = self._spatial_setup('snaptogrid', field_name=field_name)
26> field_col = self._geocol_select(geo_field, field_name)
27> geo_col = self.query.custom_select.get(geo_field, field_col)
28> custom_sel = '%s(%s, %s)' % (SpatialBackend.snaptogrid, geo_col, size)
29> self.query.custom_select[geo_field] = custom_sel
30> return self._clone()
31>
Back to Top