mirror of
https://gitea.mueller.network/extern/django-helpdesk.git
synced 2024-11-21 23:43:11 +01:00
Merge branch 'main' into main
This commit is contained in:
commit
d147f8b1a0
@ -499,41 +499,44 @@ def create_object_from_email_message(message, ticket_id, payload, files, logger)
|
||||
logger.info(
|
||||
"Message seems to be auto-reply, not sending any emails back to the sender")
|
||||
else:
|
||||
# send mail to appropriate people now depending on what objects
|
||||
# were created and who was CC'd
|
||||
# Add auto-reply headers because it's an auto-reply and we must
|
||||
extra_headers = {
|
||||
'In-Reply-To': message_id,
|
||||
"Auto-Submitted": "auto-replied",
|
||||
"X-Auto-Response-Suppress": "All",
|
||||
"Precedence": "auto_reply",
|
||||
}
|
||||
if new:
|
||||
ticket.send(
|
||||
{'submitter': ('newticket_submitter', context),
|
||||
'new_ticket_cc': ('newticket_cc', context),
|
||||
'ticket_cc': ('newticket_cc', context)},
|
||||
fail_silently=True,
|
||||
extra_headers=extra_headers,
|
||||
)
|
||||
else:
|
||||
context.update(comment=f.comment)
|
||||
ticket.send(
|
||||
{'submitter': ('newticket_submitter', context),
|
||||
'assigned_to': ('updated_owner', context)},
|
||||
fail_silently=True,
|
||||
extra_headers=extra_headers,
|
||||
)
|
||||
if queue.enable_notifications_on_email_events:
|
||||
ticket.send(
|
||||
{'ticket_cc': ('updated_cc', context)},
|
||||
fail_silently=True,
|
||||
extra_headers=extra_headers,
|
||||
)
|
||||
|
||||
send_info_email(message_id, f, ticket, context, queue, new)
|
||||
return ticket
|
||||
|
||||
|
||||
def send_info_email(message_id: str, f: FollowUp, ticket: Ticket, context: dict, queue: dict, new: bool):
|
||||
# send mail to appropriate people now depending on what objects
|
||||
# were created and who was CC'd
|
||||
# Add auto-reply headers because it's an auto-reply and we must
|
||||
extra_headers = {
|
||||
'In-Reply-To': message_id,
|
||||
"Auto-Submitted": "auto-replied",
|
||||
"X-Auto-Response-Suppress": "All",
|
||||
"Precedence": "auto_reply",
|
||||
}
|
||||
if new:
|
||||
ticket.send(
|
||||
{'submitter': ('newticket_submitter', context),
|
||||
'new_ticket_cc': ('newticket_cc', context),
|
||||
'ticket_cc': ('newticket_cc', context)},
|
||||
fail_silently=True,
|
||||
extra_headers=extra_headers,
|
||||
)
|
||||
else:
|
||||
context.update(comment=f.comment)
|
||||
ticket.send(
|
||||
{'submitter': ('newticket_submitter', context),
|
||||
'assigned_to': ('updated_owner', context)},
|
||||
fail_silently=True,
|
||||
extra_headers=extra_headers,
|
||||
)
|
||||
if queue.enable_notifications_on_email_events:
|
||||
ticket.send(
|
||||
{'ticket_cc': ('updated_cc', context)},
|
||||
fail_silently=True,
|
||||
extra_headers=extra_headers,
|
||||
)
|
||||
|
||||
|
||||
def get_ticket_id_from_subject_slug(
|
||||
queue_slug: str,
|
||||
subject: str,
|
||||
|
@ -81,12 +81,12 @@ def text_is_spam(text, request):
|
||||
# This will return 'True' is the given text is deemed to be spam, or
|
||||
# False if it is not spam. If it cannot be checked for some reason, we
|
||||
# assume it isn't spam.
|
||||
from django.contrib.sites.models import Site
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
try:
|
||||
from akismet import Akismet
|
||||
except ImportError:
|
||||
return False
|
||||
from django.contrib.sites.models import Site
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
try:
|
||||
site = Site.objects.get_current()
|
||||
except ImproperlyConfigured:
|
||||
|
@ -151,7 +151,7 @@ urlpatterns += [
|
||||
|
||||
urlpatterns += [
|
||||
re_path(
|
||||
r"^rss/user/(?P<user_name>[a-zA-Z0-9\_\.]+)/",
|
||||
r"^rss/user/(?P<user_name>[^/]+)/",
|
||||
helpdesk_staff_member_required(feeds.OpenTicketsByUser()),
|
||||
name="rss_user",
|
||||
),
|
||||
|
@ -23,7 +23,9 @@ from django.http import Http404, HttpResponse, HttpResponseRedirect, JsonRespons
|
||||
from django.shortcuts import get_object_or_404, redirect, render
|
||||
from django.urls import reverse, reverse_lazy
|
||||
from django.utils import timezone
|
||||
from django.utils.dateparse import parse_datetime
|
||||
from django.utils.html import escape
|
||||
from django.utils.timezone import make_aware
|
||||
from django.utils.translation import gettext as _
|
||||
from django.views.decorators.csrf import requires_csrf_token
|
||||
from django.views.generic.edit import FormView, UpdateView
|
||||
@ -536,12 +538,7 @@ def get_due_date_from_request_or_ticket(
|
||||
due_date = request.POST.get('due_date', None) or None
|
||||
|
||||
if due_date is not None:
|
||||
# based on Django code to parse dates:
|
||||
# https://docs.djangoproject.com/en/2.0/_modules/django/utils/dateparse/
|
||||
match = DATE_RE.match(due_date)
|
||||
if match:
|
||||
kw = {k: int(v) for k, v in match.groupdict().items()}
|
||||
due_date = date(**kw)
|
||||
due_date = make_aware(parse_datetime(due_date))
|
||||
else:
|
||||
due_date_year = int(request.POST.get('due_date_year', 0))
|
||||
due_date_month = int(request.POST.get('due_date_month', 0))
|
||||
|
Loading…
Reference in New Issue
Block a user