diff --git a/apps/tickets/mixins.py b/apps/tickets/mixins.py index d648ffe19..6f052df66 100644 --- a/apps/tickets/mixins.py +++ b/apps/tickets/mixins.py @@ -1,18 +1,16 @@ # -*- coding: utf-8 -*- # from django.db.models import Q +from .models import Ticket class TicketMixin: def get_queryset(self): - queryset = super().get_queryset() assign = self.request.GET.get('assign', None) if assign is None: - queryset = queryset.filter( - Q(assignees=self.request.user) | Q(user=self.request.user) - ).distinct() + queryset = Ticket.get_related_tickets(self.request.user) elif assign in ['1']: - queryset = queryset.filter(assignees=self.request.user) + queryset = Ticket.get_assigned_tickets(self.request.user) else: - queryset = queryset.filter(user=self.request.user) + queryset = Ticket.get_my_tickets(self.request.user) return queryset diff --git a/apps/tickets/models/ticket.py b/apps/tickets/models/ticket.py index 0db499817..0fdd1c8bd 100644 --- a/apps/tickets/models/ticket.py +++ b/apps/tickets/models/ticket.py @@ -2,6 +2,7 @@ # from django.db import models +from django.db.models import Q from django.utils.translation import ugettext_lazy as _ from common.mixins.models import CommonModelMixin @@ -95,6 +96,29 @@ class Ticket(CommonModelMixin): def is_user(self, user): return self.user == user + @classmethod + def get_related_tickets(cls, user, queryset=None): + if queryset is None: + queryset = cls.objects.all() + queryset = queryset.filter( + Q(assignees=user) | Q(user=user) + ).distinct() + return queryset + + @classmethod + def get_assigned_tickets(cls, user, queryset=None): + if queryset is None: + queryset = cls.objects.all() + queryset = queryset.filter(assignees=user) + return queryset + + @classmethod + def get_my_tickets(cls, user, queryset=None): + if queryset is None: + queryset = cls.objects.all() + queryset = queryset.filter(user=user) + return queryset + class Meta: ordering = ('-date_created',) diff --git a/apps/tickets/templates/tickets/ticket_list.html b/apps/tickets/templates/tickets/ticket_list.html index fa7654180..c51d48072 100644 --- a/apps/tickets/templates/tickets/ticket_list.html +++ b/apps/tickets/templates/tickets/ticket_list.html @@ -7,7 +7,7 @@