@@ -69,7 +69,9 @@ def build_org_units_queryset(queryset, params, profile):
69
69
queryset = queryset .filter (source_ref__in = [])
70
70
print ("Failed parsing refs in search" , search )
71
71
else :
72
- queryset = queryset .filter (Q (name__icontains = search ) | Q (aliases__contains = [search ]))
72
+ queryset = queryset .filter (
73
+ Q (name__icontains = search ) | Q (aliases__contains = [search ])
74
+ )
73
75
74
76
if group :
75
77
if isinstance (group , str ):
@@ -78,7 +80,7 @@ def build_org_units_queryset(queryset, params, profile):
78
80
group_ids = [group ]
79
81
else :
80
82
group_ids = group
81
- queryset = queryset .filter (groups__in = group_ids )
83
+ queryset = queryset .filter (groups__in = group_ids ). distinct ( "id" )
82
84
83
85
if source :
84
86
source = DataSource .objects .get (id = source )
@@ -103,7 +105,9 @@ def build_org_units_queryset(queryset, params, profile):
103
105
queryset = queryset .filter (instance__created_at__lte = date_to )
104
106
105
107
if date_from is not None and date_to is not None :
106
- queryset = queryset .filter (instance__created_at__range = [date_from , date_to ]).distinct ("id" )
108
+ queryset = queryset .filter (
109
+ instance__created_at__range = [date_from , date_to ]
110
+ ).distinct ("id" )
107
111
108
112
if has_instances is not None :
109
113
if has_instances == "true" :
@@ -138,13 +142,17 @@ def build_org_units_queryset(queryset, params, profile):
138
142
# We need a few things for empty location comparisons:
139
143
# 1. An annotated queryset (geography fields exposed as geometries)
140
144
queryset = queryset .annotate (location_as_geom = Cast ("location" , PointField (dim = 3 )))
141
- queryset = queryset .annotate (simplified_geom_as_geom = Cast ("simplified_geom" , MultiPolygonField ()))
145
+ queryset = queryset .annotate (
146
+ simplified_geom_as_geom = Cast ("simplified_geom" , MultiPolygonField ())
147
+ )
142
148
# 2. Empty features to compare to
143
149
empty_point = GEOSGeometry ("POINT EMPTY" , srid = 4326 )
144
150
empty_multipolygon = GEOSGeometry ("MULTIPOLYGON EMPTY" , srid = 4326 )
145
151
146
152
has_location = Q (location__isnull = False ) & (~ Q (location_as_geom = empty_point ))
147
- has_simplified_geom = Q (simplified_geom__isnull = False ) & (~ Q (simplified_geom_as_geom = empty_multipolygon ))
153
+ has_simplified_geom = Q (simplified_geom__isnull = False ) & (
154
+ ~ Q (simplified_geom_as_geom = empty_multipolygon )
155
+ )
148
156
149
157
if geography == "location" :
150
158
queryset = queryset .filter (has_location )
@@ -209,17 +217,23 @@ def build_org_units_queryset(queryset, params, profile):
209
217
queryset = queryset .filter (sub_source = source_id )
210
218
211
219
if org_unit_type_category :
212
- queryset = queryset .filter (org_unit_type__category = org_unit_type_category .upper ())
220
+ queryset = queryset .filter (
221
+ org_unit_type__category = org_unit_type_category .upper ()
222
+ )
213
223
214
224
if ignore_empty_names :
215
225
queryset = queryset .filter (~ Q (name = "" ))
216
226
217
227
if path_depth is not None :
218
228
queryset = queryset .filter (path__depth = path_depth )
219
229
if opening_date :
220
- queryset = queryset .filter (opening_date = datetime .strptime (opening_date , "%d-%m-%Y" ).date ())
230
+ queryset = queryset .filter (
231
+ opening_date = datetime .strptime (opening_date , "%d-%m-%Y" ).date ()
232
+ )
221
233
if closed_date :
222
- queryset = queryset .filter (closed_date = datetime .strptime (closed_date , "%d-%m-%Y" ).date ())
234
+ queryset = queryset .filter (
235
+ closed_date = datetime .strptime (closed_date , "%d-%m-%Y" ).date ()
236
+ )
223
237
if not direct_children :
224
238
queryset = queryset .exclude (pk = org_unit_parent_id )
225
239
@@ -238,7 +252,11 @@ def annotate_query(queryset, count_instances, count_per_form, forms):
238
252
queryset = queryset .annotate (
239
253
instances_count = Count (
240
254
"instance" ,
241
- filter = (~ Q (instance__file = "" ) & ~ Q (instance__device__test_device = True ) & ~ Q (instance__deleted = True )),
255
+ filter = (
256
+ ~ Q (instance__file = "" )
257
+ & ~ Q (instance__device__test_device = True )
258
+ & ~ Q (instance__deleted = True )
259
+ ),
242
260
)
243
261
)
244
262
0 commit comments