mirror of
https://gitea.mueller.network/extern/django-helpdesk.git
synced 2025-08-17 10:11:26 +02:00
fix unassign action in update ticket + refactor the get_active_users function into lib
This commit is contained in:
@ -15,7 +15,12 @@ from django.core.exceptions import ObjectDoesNotExist, ValidationError
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from helpdesk import settings as helpdesk_settings
|
from helpdesk import settings as helpdesk_settings
|
||||||
from helpdesk.lib import convert_value, process_attachments, safe_template_context
|
from helpdesk.lib import (
|
||||||
|
convert_value,
|
||||||
|
process_attachments,
|
||||||
|
safe_template_context,
|
||||||
|
get_active_users,
|
||||||
|
)
|
||||||
from helpdesk.models import (
|
from helpdesk.models import (
|
||||||
Checklist,
|
Checklist,
|
||||||
ChecklistTemplate,
|
ChecklistTemplate,
|
||||||
@ -472,16 +477,8 @@ class TicketForm(AbstractTicketForm):
|
|||||||
if queue_choices:
|
if queue_choices:
|
||||||
self.fields["queue"].choices = queue_choices
|
self.fields["queue"].choices = queue_choices
|
||||||
self.fields["body"].required = body_reqd
|
self.fields["body"].required = body_reqd
|
||||||
if helpdesk_settings.HELPDESK_STAFF_ONLY_TICKET_OWNERS:
|
|
||||||
assignable_users = User.objects.filter(
|
|
||||||
is_active=True, is_staff=True
|
|
||||||
).order_by(User.USERNAME_FIELD)
|
|
||||||
else:
|
|
||||||
assignable_users = User.objects.filter(is_active=True).order_by(
|
|
||||||
User.USERNAME_FIELD
|
|
||||||
)
|
|
||||||
self.fields["assigned_to"].choices = [("", "--------")] + [
|
self.fields["assigned_to"].choices = [("", "--------")] + [
|
||||||
(u.id, u.get_username()) for u in assignable_users
|
(u.id, u.get_username()) for u in get_active_users()
|
||||||
]
|
]
|
||||||
self._add_form_custom_fields()
|
self._add_form_custom_fields()
|
||||||
|
|
||||||
|
@ -6,21 +6,21 @@ django-helpdesk - A Django powered ticket tracker for small enterprise.
|
|||||||
lib.py - Common functions (eg multipart e-mail)
|
lib.py - Common functions (eg multipart e-mail)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from datetime import date, datetime, time
|
|
||||||
from django.conf import settings
|
|
||||||
from django.core.exceptions import ValidationError, ImproperlyConfigured
|
|
||||||
from django.utils.encoding import smart_str
|
|
||||||
from helpdesk.settings import (
|
|
||||||
CUSTOMFIELD_DATE_FORMAT,
|
|
||||||
CUSTOMFIELD_DATETIME_FORMAT,
|
|
||||||
CUSTOMFIELD_TIME_FORMAT,
|
|
||||||
)
|
|
||||||
import logging
|
import logging
|
||||||
import mimetypes
|
import mimetypes
|
||||||
|
from datetime import date, datetime, time
|
||||||
|
from django.conf import settings
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.core.exceptions import ValidationError, ImproperlyConfigured
|
||||||
|
from django.db.models.query import QuerySet
|
||||||
|
from django.utils.encoding import smart_str
|
||||||
|
from helpdesk import settings as helpdesk_settings
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger("helpdesk")
|
logger = logging.getLogger("helpdesk")
|
||||||
|
|
||||||
|
User = get_user_model()
|
||||||
|
|
||||||
|
|
||||||
def ticket_template_context(ticket):
|
def ticket_template_context(ticket):
|
||||||
context = {}
|
context = {}
|
||||||
@ -205,11 +205,11 @@ def format_time_spent(time_spent):
|
|||||||
def convert_value(value):
|
def convert_value(value):
|
||||||
"""Convert date/time data type to known fixed format string"""
|
"""Convert date/time data type to known fixed format string"""
|
||||||
if type(value) is datetime:
|
if type(value) is datetime:
|
||||||
return value.strftime(CUSTOMFIELD_DATETIME_FORMAT)
|
return value.strftime(helpdesk_settings.CUSTOMFIELD_DATETIME_FORMAT)
|
||||||
elif type(value) is date:
|
elif type(value) is date:
|
||||||
return value.strftime(CUSTOMFIELD_DATE_FORMAT)
|
return value.strftime(helpdesk_settings.CUSTOMFIELD_DATE_FORMAT)
|
||||||
elif type(value) is time:
|
elif type(value) is time:
|
||||||
return value.strftime(CUSTOMFIELD_TIME_FORMAT)
|
return value.strftime(helpdesk_settings.CUSTOMFIELD_TIME_FORMAT)
|
||||||
else:
|
else:
|
||||||
return value
|
return value
|
||||||
|
|
||||||
@ -282,3 +282,12 @@ def daily_time_spent_calculation(earliest, latest, open_hours):
|
|||||||
time_spent_seconds += day_delta.seconds
|
time_spent_seconds += day_delta.seconds
|
||||||
|
|
||||||
return time_spent_seconds
|
return time_spent_seconds
|
||||||
|
|
||||||
|
|
||||||
|
def get_active_users() -> QuerySet:
|
||||||
|
users = User.objects.filter(is_active=True).order_by(User.USERNAME_FIELD)
|
||||||
|
|
||||||
|
if helpdesk_settings.HELPDESK_STAFF_ONLY_TICKET_OWNERS:
|
||||||
|
users = users.filter(is_staff=True)
|
||||||
|
|
||||||
|
return users
|
||||||
|
@ -299,7 +299,7 @@ def update_ticket(
|
|||||||
f.ticketchange_set.create(
|
f.ticketchange_set.create(
|
||||||
field=_("Owner"),
|
field=_("Owner"),
|
||||||
old_value=old_owner,
|
old_value=old_owner,
|
||||||
new_value=ticket.assigned_to,
|
new_value=ticket.assigned_to if ticket.assigned_to else _("Unassigned"),
|
||||||
)
|
)
|
||||||
|
|
||||||
if priority != ticket.priority:
|
if priority != ticket.priority:
|
||||||
|
@ -21,7 +21,6 @@ from django.core.exceptions import PermissionDenied
|
|||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.core.handlers.wsgi import WSGIRequest
|
||||||
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
|
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
|
||||||
from django.db.models import Q, Case, When
|
from django.db.models import Q, Case, When
|
||||||
from django.db.models.query import QuerySet
|
|
||||||
from django.forms import HiddenInput, inlineformset_factory, TextInput
|
from django.forms import HiddenInput, inlineformset_factory, TextInput
|
||||||
from django.http import Http404, HttpResponse, HttpResponseRedirect, JsonResponse
|
from django.http import Http404, HttpResponse, HttpResponseRedirect, JsonResponse
|
||||||
from django.shortcuts import get_object_or_404, redirect, render
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
@ -57,7 +56,7 @@ from helpdesk.forms import (
|
|||||||
TicketResolvesForm,
|
TicketResolvesForm,
|
||||||
UserSettingsForm,
|
UserSettingsForm,
|
||||||
)
|
)
|
||||||
from helpdesk.lib import queue_template_context, safe_template_context
|
from helpdesk.lib import queue_template_context, safe_template_context, get_active_users
|
||||||
from helpdesk.models import (
|
from helpdesk.models import (
|
||||||
Checklist,
|
Checklist,
|
||||||
ChecklistTask,
|
ChecklistTask,
|
||||||
@ -127,16 +126,6 @@ def _get_queue_choices(queues):
|
|||||||
return queue_choices
|
return queue_choices
|
||||||
|
|
||||||
|
|
||||||
def get_active_users() -> QuerySet:
|
|
||||||
if helpdesk_settings.HELPDESK_STAFF_ONLY_TICKET_OWNERS:
|
|
||||||
users = User.objects.filter(is_active=True, is_staff=True).order_by(
|
|
||||||
User.USERNAME_FIELD
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
users = User.objects.filter(is_active=True).order_by(User.USERNAME_FIELD)
|
|
||||||
return users
|
|
||||||
|
|
||||||
|
|
||||||
def get_user_queues(user) -> dict[str, str]:
|
def get_user_queues(user) -> dict[str, str]:
|
||||||
queues = HelpdeskUser(user).get_queues()
|
queues = HelpdeskUser(user).get_queues()
|
||||||
return _get_queue_choices(queues)
|
return _get_queue_choices(queues)
|
||||||
@ -675,9 +664,9 @@ def save_ticket_update(form, ticket, user):
|
|||||||
comment=comment,
|
comment=comment,
|
||||||
files=form.files.getlist("attachment"),
|
files=form.files.getlist("attachment"),
|
||||||
public=form.data.get("public", False),
|
public=form.data.get("public", False),
|
||||||
owner=owner or -1,
|
owner=owner,
|
||||||
priority=priority or -1,
|
priority=priority,
|
||||||
queue=queue or -1,
|
queue=queue,
|
||||||
new_status=new_status,
|
new_status=new_status,
|
||||||
time_spent=get_time_spent_from_form(form),
|
time_spent=get_time_spent_from_form(form),
|
||||||
due_date=due_date,
|
due_date=due_date,
|
||||||
|
Reference in New Issue
Block a user