Ticket #9745: snaptogrid.diff

File snaptogrid.diff, 1.6 KB (added by norn, 7 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