12
12
13
13
14
14
class BaseFilter (ABC ):
15
- geom_field : type [InstrumentedAttribute ]
16
-
17
15
def apply (
18
16
self ,
19
17
request : schemas .BaseSearchRequest ,
@@ -58,9 +56,9 @@ def _apply_geometry_filter(
58
56
query : Select ,
59
57
) -> Select :
60
58
filter_func_type = _get_filter_func (geometry_filter .method )
61
- geom_field = getattr ( self .geom_field , 'geom' )
59
+ geom_field = self .Meta . geom_field
62
60
if geom_field is None :
63
- raise ValueError ('Geometry field is not defined' )
61
+ raise ValueError ('geom_field in meta is not defined' )
64
62
65
63
if ewkb := geometry_filter .ewkb :
66
64
query = _filter_by_geometry (
@@ -99,8 +97,6 @@ def _apply_geometry_filter(
99
97
100
98
101
99
class CountiesFilter (BaseFilter ):
102
- geom_field = models .Counties .geom
103
-
104
100
def apply (
105
101
self ,
106
102
request : schemas .CountiesSearchRequest ,
@@ -118,9 +114,11 @@ def apply(
118
114
119
115
return query
120
116
117
+ class Meta :
118
+ geom_field = models .Counties .geom
119
+
121
120
122
121
class MunicipalitiesFilter (CountiesFilter ):
123
- geom_field = models .Municipalities .geom
124
122
125
123
def apply (
126
124
self ,
@@ -138,9 +136,11 @@ def apply(
138
136
139
137
return query
140
138
139
+ class Meta :
140
+ geom_field = models .Municipalities .geom
141
+
141
142
142
143
class EldershipsFilter (MunicipalitiesFilter ):
143
- geom_field = models .Elderships .geom
144
144
145
145
def apply (
146
146
self ,
@@ -157,10 +157,11 @@ def apply(
157
157
)
158
158
return query
159
159
160
+ class Meta :
161
+ geom_field = models .Elderships .geom
160
162
161
- class ResidentialAreasFilter (MunicipalitiesFilter ):
162
- geom_field = models .ResidentialAreas .geom
163
163
164
+ class ResidentialAreasFilter (MunicipalitiesFilter ):
164
165
def apply (
165
166
self ,
166
167
request : schemas .ResidentialAreasSearchRequest ,
@@ -177,10 +178,11 @@ def apply(
177
178
178
179
return query
179
180
181
+ class Meta :
182
+ geom_field = models .ResidentialAreas .geom
180
183
181
- class StreetsFilter (ResidentialAreasFilter ):
182
- geom_field = models .Streets .geom
183
184
185
+ class StreetsFilter (ResidentialAreasFilter ):
184
186
def apply (
185
187
self ,
186
188
request : schemas .StreetsSearchRequest ,
@@ -197,9 +199,11 @@ def apply(
197
199
198
200
return query
199
201
202
+ class Meta :
203
+ geom_field = models .Streets .geom
204
+
200
205
201
206
class AddressesFilter (StreetsFilter ):
202
- geom_field = models .Addresses .geom
203
207
204
208
def apply (
205
209
self ,
@@ -211,6 +215,9 @@ def apply(
211
215
212
216
return query
213
217
218
+ class Meta :
219
+ geom_field = models .Addresses .geom
220
+
214
221
215
222
def _is_valid_geometry (db : Session , geom : GenericFunction ) -> bool :
216
223
try :
0 commit comments