1 from django.db.models.manager import Manager |
1 from django.db.models.manager import Manager |
2 from django.contrib.gis.db.models.query import GeoQuerySet |
2 from django.contrib.gis.db.models.query import GeoQuerySet |
3 from django.contrib.gis.db.models.sql.subqueries import insert_query |
|
4 |
3 |
5 class GeoManager(Manager): |
4 class GeoManager(Manager): |
6 "Overrides Manager to return Geographic QuerySets." |
5 "Overrides Manager to return Geographic QuerySets." |
7 |
6 |
8 # This manager should be used for queries on related fields |
7 # This manager should be used for queries on related fields |
9 # so that geometry columns on Oracle and MySQL are selected |
8 # so that geometry columns on Oracle and MySQL are selected |
10 # properly. |
9 # properly. |
11 use_for_related_fields = True |
10 use_for_related_fields = True |
12 |
11 |
13 def get_query_set(self): |
12 def get_query_set(self): |
14 return GeoQuerySet(model=self.model) |
13 return GeoQuerySet(self.model, using=self._db) |
15 |
14 |
16 def area(self, *args, **kwargs): |
15 def area(self, *args, **kwargs): |
17 return self.get_query_set().area(*args, **kwargs) |
16 return self.get_query_set().area(*args, **kwargs) |
18 |
17 |
19 def centroid(self, *args, **kwargs): |
18 def centroid(self, *args, **kwargs): |
32 return self.get_query_set().envelope(*args, **kwargs) |
31 return self.get_query_set().envelope(*args, **kwargs) |
33 |
32 |
34 def extent(self, *args, **kwargs): |
33 def extent(self, *args, **kwargs): |
35 return self.get_query_set().extent(*args, **kwargs) |
34 return self.get_query_set().extent(*args, **kwargs) |
36 |
35 |
|
36 def extent3d(self, *args, **kwargs): |
|
37 return self.get_query_set().extent3d(*args, **kwargs) |
|
38 |
|
39 def force_rhr(self, *args, **kwargs): |
|
40 return self.get_query_set().force_rhr(*args, **kwargs) |
|
41 |
|
42 def geohash(self, *args, **kwargs): |
|
43 return self.get_query_set().geohash(*args, **kwargs) |
|
44 |
37 def geojson(self, *args, **kwargs): |
45 def geojson(self, *args, **kwargs): |
38 return self.get_query_set().geojson(*args, **kwargs) |
46 return self.get_query_set().geojson(*args, **kwargs) |
39 |
47 |
40 def gml(self, *args, **kwargs): |
48 def gml(self, *args, **kwargs): |
41 return self.get_query_set().gml(*args, **kwargs) |
49 return self.get_query_set().gml(*args, **kwargs) |
49 def length(self, *args, **kwargs): |
57 def length(self, *args, **kwargs): |
50 return self.get_query_set().length(*args, **kwargs) |
58 return self.get_query_set().length(*args, **kwargs) |
51 |
59 |
52 def make_line(self, *args, **kwargs): |
60 def make_line(self, *args, **kwargs): |
53 return self.get_query_set().make_line(*args, **kwargs) |
61 return self.get_query_set().make_line(*args, **kwargs) |
54 |
62 |
55 def mem_size(self, *args, **kwargs): |
63 def mem_size(self, *args, **kwargs): |
56 return self.get_query_set().mem_size(*args, **kwargs) |
64 return self.get_query_set().mem_size(*args, **kwargs) |
57 |
65 |
58 def num_geom(self, *args, **kwargs): |
66 def num_geom(self, *args, **kwargs): |
59 return self.get_query_set().num_geom(*args, **kwargs) |
67 return self.get_query_set().num_geom(*args, **kwargs) |
64 def perimeter(self, *args, **kwargs): |
72 def perimeter(self, *args, **kwargs): |
65 return self.get_query_set().perimeter(*args, **kwargs) |
73 return self.get_query_set().perimeter(*args, **kwargs) |
66 |
74 |
67 def point_on_surface(self, *args, **kwargs): |
75 def point_on_surface(self, *args, **kwargs): |
68 return self.get_query_set().point_on_surface(*args, **kwargs) |
76 return self.get_query_set().point_on_surface(*args, **kwargs) |
|
77 |
|
78 def reverse_geom(self, *args, **kwargs): |
|
79 return self.get_query_set().reverse_geom(*args, **kwargs) |
69 |
80 |
70 def scale(self, *args, **kwargs): |
81 def scale(self, *args, **kwargs): |
71 return self.get_query_set().scale(*args, **kwargs) |
82 return self.get_query_set().scale(*args, **kwargs) |
72 |
83 |
73 def snap_to_grid(self, *args, **kwargs): |
84 def snap_to_grid(self, *args, **kwargs): |
88 def union(self, *args, **kwargs): |
99 def union(self, *args, **kwargs): |
89 return self.get_query_set().union(*args, **kwargs) |
100 return self.get_query_set().union(*args, **kwargs) |
90 |
101 |
91 def unionagg(self, *args, **kwargs): |
102 def unionagg(self, *args, **kwargs): |
92 return self.get_query_set().unionagg(*args, **kwargs) |
103 return self.get_query_set().unionagg(*args, **kwargs) |
93 |
|
94 def _insert(self, values, **kwargs): |
|
95 return insert_query(self.model, values, **kwargs) |
|