fixed issues with multiple filters
This commit is contained in:
parent
f581e22a78
commit
2dbc08b93c
@ -10,7 +10,6 @@ from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
|
||||
from django.template import loader
|
||||
from django.shortcuts import render
|
||||
from django.urls import reverse
|
||||
from django.db.models import Q
|
||||
|
||||
from ..authentication.models import Department
|
||||
from .models import Ticket, TicketPriority, TicketTag
|
||||
@ -52,27 +51,14 @@ def get_ticket(request):
|
||||
def get_tickets(request):
|
||||
|
||||
filters = json.loads(request.POST.get("filters", "{}"))
|
||||
queryset = Ticket.objects.all()
|
||||
|
||||
# conditions = [Q(**{key: value}) for key, value in filters.items()]
|
||||
# combined_conditions = Q()
|
||||
# for condition in conditions:
|
||||
# combined_conditions &= condition
|
||||
|
||||
# print(combined_conditions)
|
||||
|
||||
# query = Q()
|
||||
# for key, values in filters.items():
|
||||
# print("keyvalues", key, values)
|
||||
# query &= Q(**{key: values})
|
||||
|
||||
query = Q()
|
||||
for key, values in filters.items():
|
||||
for value in values:
|
||||
query &= Q(**{key: [value]})
|
||||
queryset = queryset.filter(**{key: [value]})
|
||||
|
||||
print(query)
|
||||
tickets = queryset.order_by("-create_timestamp")
|
||||
|
||||
tickets = Ticket.objects.filter(query).order_by("-create_timestamp")
|
||||
data = {"tickets": [ticket.serialize() for ticket in tickets]}
|
||||
|
||||
return JsonResponse(data)
|
||||
|
@ -348,63 +348,35 @@
|
||||
console.error(error)
|
||||
});
|
||||
|
||||
$("#filterSidebar .filter-department").each(function() {
|
||||
var uuid = $(this).data("uuid");
|
||||
var checkbox = $(this).find("input[type=checkbox]");
|
||||
checkbox.on("change", function() {
|
||||
var departmentKey = "author__department__in";
|
||||
|
||||
if ($(this).is(":checked")) {
|
||||
if (!filters.hasOwnProperty(departmentKey)) {
|
||||
filters[departmentKey] = [uuid];
|
||||
}
|
||||
else {
|
||||
filters[departmentKey].push(uuid);
|
||||
}
|
||||
}
|
||||
else {
|
||||
filters[departmentKey].splice(filters[departmentKey].indexOf(uuid), 1);
|
||||
|
||||
if (filters.hasOwnProperty(departmentKey) && filters[departmentKey].length === 0) {
|
||||
delete filters[departmentKey]
|
||||
}
|
||||
}
|
||||
|
||||
loadAllTickets();
|
||||
alert(JSON.stringify(filters, null, 4));
|
||||
});
|
||||
});
|
||||
|
||||
$("#filterSidebar .filter-tag").each(function() {
|
||||
var uuid = $(this).data("uuid");
|
||||
var checkbox = $(this).find("input[type=checkbox]");
|
||||
checkbox.on("change", function() {
|
||||
var departmentKey = "tags__in";
|
||||
|
||||
if ($(this).is(":checked")) {
|
||||
if (!filters.hasOwnProperty(departmentKey)) {
|
||||
filters[departmentKey] = [uuid];
|
||||
}
|
||||
else {
|
||||
filters[departmentKey].push(uuid);
|
||||
}
|
||||
}
|
||||
else {
|
||||
filters[departmentKey].splice(filters[departmentKey].indexOf(uuid), 1);
|
||||
|
||||
if (filters.hasOwnProperty(departmentKey) && filters[departmentKey].length === 0) {
|
||||
delete filters[departmentKey]
|
||||
}
|
||||
}
|
||||
|
||||
loadAllTickets();
|
||||
});
|
||||
});
|
||||
setupFilter("#filterSidebar .filter-department", "author__department__in");
|
||||
setupFilter("#filterSidebar .filter-tag", "tags__in")
|
||||
setupFilter("#filterSidebar .filter-priority", "priority__in")
|
||||
|
||||
loadFilterCounts();
|
||||
loadAllTickets();
|
||||
});
|
||||
|
||||
function setupFilter(selector, key) {
|
||||
$(selector).each(function () {
|
||||
var uuid = $(this).data("uuid");
|
||||
var checkbox = $(this).find("input[type=checkbox]");
|
||||
checkbox.on("change", function () {
|
||||
if ($(this).is(":checked")) {
|
||||
filters[key] = filters[key] || [];
|
||||
filters[key].push(uuid);
|
||||
} else {
|
||||
filters[key].splice(filters[key].indexOf(uuid), 1);
|
||||
if (filters[key].length === 0) {
|
||||
delete filters[key];
|
||||
}
|
||||
}
|
||||
|
||||
loadAllTickets();
|
||||
console.log(JSON.stringify(filters, null, 4));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
$("#ticketModal form").on("submit", function(event) {
|
||||
event.preventDefault();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user