Skip to content

querysets

django_spire.help_desk.querysets

HelpDeskTicketQuerySet

Bases: HistoryQuerySet

annotate_calculated_cost

Source code in django_spire/help_desk/querysets.py
def annotate_calculated_cost(self) -> QuerySet:
    return self.annotate(calculated_cost=Cast(F('id') * Value(100), FloatField()))

annotate_calculated_price

Source code in django_spire/help_desk/querysets.py
def annotate_calculated_price(self) -> QuerySet:
    return self.annotate(calculated_price=Cast(F('id') * Value(150), FloatField()))

annotate_user_count

Source code in django_spire/help_desk/querysets.py
def annotate_user_count(self) -> QuerySet:
    return self.annotate(user_count=Count('user'))

bulk_filter

Source code in django_spire/help_desk/querysets.py
def bulk_filter(self, filter_data: dict) -> QuerySet[HelpDeskTicketQuerySet]:
    queryset = self

    search_term = filter_data.get('search')
    if search_term:
        queryset = queryset.search(search_term)

    return queryset

complete

Source code in django_spire/help_desk/querysets.py
def complete(self) -> QuerySet:
    return self.filter(status='done')

prefetch_users

Source code in django_spire/help_desk/querysets.py
def prefetch_users(self) -> QuerySet:
    return self.prefetch_related('users__user')

search

Source code in django_spire/help_desk/querysets.py
def search(self, search_value: str | None) -> QuerySet:
    if not search_value:
        return self

    search_value = search_value.strip()

    return self.filter(Q(description__icontains=search_value))

sort_by_column

Source code in django_spire/help_desk/querysets.py
def sort_by_column(self, sort_column: str, sort_direction: str = 'asc') -> QuerySet:
    sort_mapping = {
        'user': 'user',
        'description': 'description',
        'quantity': 'user_count',
        'date': 'created_datetime',
    }

    sort_field = sort_mapping.get(sort_column, 'created_datetime')
    order_by = f'{"-" if sort_direction == "desc" else ""}{sort_field}'

    return self.order_by(order_by)