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.template import loader
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.db.models import Q
|
|
||||||
|
|
||||||
from ..authentication.models import Department
|
from ..authentication.models import Department
|
||||||
from .models import Ticket, TicketPriority, TicketTag
|
from .models import Ticket, TicketPriority, TicketTag
|
||||||
@ -52,27 +51,14 @@ def get_ticket(request):
|
|||||||
def get_tickets(request):
|
def get_tickets(request):
|
||||||
|
|
||||||
filters = json.loads(request.POST.get("filters", "{}"))
|
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 key, values in filters.items():
|
||||||
for value in values:
|
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]}
|
data = {"tickets": [ticket.serialize() for ticket in tickets]}
|
||||||
|
|
||||||
return JsonResponse(data)
|
return JsonResponse(data)
|
||||||
|
@ -348,63 +348,35 @@
|
|||||||
console.error(error)
|
console.error(error)
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#filterSidebar .filter-department").each(function() {
|
setupFilter("#filterSidebar .filter-department", "author__department__in");
|
||||||
var uuid = $(this).data("uuid");
|
setupFilter("#filterSidebar .filter-tag", "tags__in")
|
||||||
var checkbox = $(this).find("input[type=checkbox]");
|
setupFilter("#filterSidebar .filter-priority", "priority__in")
|
||||||
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();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
loadFilterCounts();
|
loadFilterCounts();
|
||||||
loadAllTickets();
|
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) {
|
$("#ticketModal form").on("submit", function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user