Skip to content

Commit b47e1ef

Browse files
committed
Lower cyclomatic complexity of incident_list_filter
1 parent 0abb3a0 commit b47e1ef

File tree

1 file changed

+30
-24
lines changed

1 file changed

+30
-24
lines changed

src/argus/htmx/incident/filter.py

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -162,39 +162,45 @@ def get_success_url(self):
162162
return reverse("htmx:filter-list")
163163

164164

165+
# Not a view!
165166
def incident_list_filter(request, qs, use_empty_filter=False):
166167
LOG = logging.getLogger(__name__ + ".incident_list_filter")
167-
LOG.debug("GET at start: %s", request.GET)
168-
filter_pk, filter_obj = request.session.get("selected_filter", None), None
168+
LOG.debug("GET: %s", request.GET)
169+
170+
filter_pk = request.session.get("selected_filter_pk", None)
171+
converted_filterblob = {}
169172
if filter_pk:
170173
filter_obj = Filter.objects.get(pk=filter_pk)
171-
if filter_obj:
172-
form = IncidentFilterForm(_convert_filterblob(filter_obj.filter))
173-
LOG.debug("using stored filter: %s", filter_obj.filter)
174-
else:
175-
if request.method == "POST":
176-
form = IncidentFilterForm(request.POST)
177-
LOG.debug("using POST: %s", request.POST)
178-
else:
179-
if use_empty_filter:
180-
filterblob = IncidentFilterForm.EMPTY_FILTERBLOB
181-
form = IncidentFilterForm(filterblob)
182-
LOG.debug("using empty filter: %s", filterblob)
183-
else:
184-
form = IncidentFilterForm(request.GET or None)
185-
LOG.debug("using GET: %s", request.GET)
174+
LOG.debug('found stored filter "%s": %s', filter_obj.name, filter_obj.filter)
175+
converted_filterblob = _convert_filterblob(filter_obj.filter)
176+
177+
if converted_filterblob:
178+
form_data = converted_filterblob
179+
LOG.debug("using converted stored filter: %s", form_data)
180+
elif request.POST:
181+
form_data = request.POST
182+
LOG.debug("using POST: %s", form_data)
183+
elif use_empty_filter:
184+
form_data = IncidentFilterForm.EMPTY_FILTERBLOB
185+
LOG.debug("using empty filter: %s", form_data)
186+
else: # request.GET
187+
form_data = request.GET or None
188+
LOG.debug("using GET: %s", form_data)
189+
190+
form = IncidentFilterForm(form_data)
191+
form.is_valid() # fill cleaned_data
192+
if use_empty_filter:
193+
return form, qs
186194

187195
if form.is_valid():
188-
LOG.debug("Cleaned data: %s", form.cleaned_data)
196+
LOG.debug("Cleaned data: %s, getting query set", form.cleaned_data)
189197
filterblob = form.to_filterblob()
198+
LOG.debug("using filterblob: %s", filterblob)
190199
qs = QuerySetFilter.filtered_incidents(filterblob, qs)
191200
else:
192-
if not request.GET:
193-
LOG.debug("empty form")
194-
else:
195-
LOG.debug("Dirty form: %s", form.errors)
196-
for field, error_messages in form.errors.items():
197-
messages.error(request, f"{field}: {','.join(error_messages)}")
201+
LOG.debug("Dirty form: %s", form.errors)
202+
for field, error_messages in form.errors.items():
203+
messages.error(request, f"{field}: {','.join(error_messages)}")
198204
return form, qs
199205

200206

0 commit comments

Comments
 (0)