Merge pull request #1003 from Mte90/no-kb

Disable KB without Django errors
This commit is contained in:
Garret Wassermann 2022-03-18 18:01:49 -04:00 committed by GitHub
commit 5920c0f8a0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 64 additions and 35 deletions

View File

@ -1,10 +1,13 @@
from django.contrib import admin
from django.utils.translation import ugettext_lazy as _
from helpdesk.models import Queue, Ticket, FollowUp, PreSetReply, KBCategory
from helpdesk.models import EscalationExclusion, EmailTemplate, KBItem
from helpdesk.models import Queue, Ticket, FollowUp, PreSetReply
from helpdesk.models import EscalationExclusion, EmailTemplate
from helpdesk.models import TicketChange, KBIAttachment, FollowUpAttachment, IgnoreEmail
from helpdesk.models import CustomField
from helpdesk import settings as helpdesk_settings
if helpdesk_settings.HELPDESK_KB_ENABLED:
from helpdesk.models import KBCategory
from helpdesk.models import KBItem
@admin.register(Queue)
class QueueAdmin(admin.ModelAdmin):
@ -68,13 +71,18 @@ class FollowUpAdmin(admin.ModelAdmin):
ticket_get_ticket_for_url.short_description = _('Slug')
@admin.register(KBItem)
class KBItemAdmin(admin.ModelAdmin):
list_display = ('category', 'title', 'last_updated', 'team', 'order', 'enabled')
inlines = [KBIAttachmentInline]
readonly_fields = ('voted_by', 'downvoted_by')
if helpdesk_settings.HELPDESK_KB_ENABLED:
@admin.register(KBItem)
class KBItemAdmin(admin.ModelAdmin):
list_display = ('category', 'title', 'last_updated', 'team', 'order', 'enabled')
inlines = [KBIAttachmentInline]
readonly_fields = ('voted_by', 'downvoted_by')
list_display_links = ('title',)
list_display_links = ('title',)
@admin.register(KBCategory)
class KBCategoryAdmin(admin.ModelAdmin):
list_display = ('name', 'title', 'slug', 'public')
@admin.register(CustomField)
@ -93,10 +101,5 @@ class IgnoreEmailAdmin(admin.ModelAdmin):
list_display = ('name', 'queue_list', 'email_address', 'keep_in_mailbox')
@admin.register(KBCategory)
class KBCategoryAdmin(admin.ModelAdmin):
list_display = ('name', 'title', 'slug', 'public')
admin.site.register(PreSetReply)
admin.site.register(EscalationExclusion)

View File

@ -18,9 +18,13 @@ from django.utils import timezone
from helpdesk.lib import safe_template_context, process_attachments
from helpdesk.models import (Ticket, Queue, FollowUp, IgnoreEmail, TicketCC,
CustomField, TicketCustomFieldValue, TicketDependency, UserSettings, KBItem)
CustomField, TicketCustomFieldValue, TicketDependency, UserSettings)
from helpdesk import settings as helpdesk_settings
if helpdesk_settings.HELPDESK_KB_ENABLED:
from helpdesk.models import (KBItem)
logger = logging.getLogger(__name__)
User = get_user_model()
@ -231,13 +235,14 @@ class AbstractTicketForm(CustomFieldMixin, forms.Form):
def __init__(self, kbcategory=None, *args, **kwargs):
super().__init__(*args, **kwargs)
if kbcategory:
self.fields['kbitem'] = forms.ChoiceField(
widget=forms.Select(attrs={'class': 'form-control'}),
required=False,
label=_('Knowledge Base Item'),
choices=[(kbi.pk, kbi.title) for kbi in KBItem.objects.filter(category=kbcategory.pk, enabled=True)],
)
if helpdesk_settings.HELPDESK_KB_ENABLED:
if kbcategory:
self.fields['kbitem'] = forms.ChoiceField(
widget=forms.Select(attrs={'class': 'form-control'}),
required=False,
label=_('Knowledge Base Item'),
choices=[(kbi.pk, kbi.title) for kbi in KBItem.objects.filter(category=kbcategory.pk, enabled=True)],
)
def _add_form_custom_fields(self, staff_only_filter=None):
if staff_only_filter is None:

View File

@ -20,8 +20,10 @@
<li><a href='{% url 'helpdesk:email_ignore' %}'>{% trans "E-Mail Ignore list" %}</a></li>
<li><a href='{% url 'admin:helpdesk_queue_changelist' %}'>{% trans "Maintain Queues" %}</a></li>
<li><a href='{% url 'admin:helpdesk_presetreply_changelist' %}'>{% trans "Maintain Pre-Set Replies" %}</a></li>
{% if helpdesk_settings.HELPDESK_KB_ENABLED %}
<li><a href='{% url 'admin:helpdesk_kbcategory_changelist' %}'>{% trans "Maintain Knowledgebase Categories" %}</a></li>
<li><a href='{% url 'admin:helpdesk_kbitem_changelist' %}'>{% trans "Maintain Knowledgebase Items" %}</a></li>
{% endif %}
<li><a href='{% url 'admin:helpdesk_emailtemplate_changelist' %}'>{% trans "Maintain E-Mail Templates" %}</a></li>
<li><a href='{% url 'changelist'|user_admin_url %}'>{% trans "Maintain Users" %}</a></li>
</ul>

View File

@ -14,7 +14,13 @@ from django.views.generic import TemplateView
from helpdesk.decorators import helpdesk_staff_member_required, protect_view
from helpdesk import settings as helpdesk_settings
from helpdesk.views import feeds, staff, public, kb, login
from helpdesk.views import feeds, staff, public, login
from helpdesk import settings as helpdesk_settings
if helpdesk_settings.HELPDESK_KB_ENABLED:
from helpdesk.views import kb
try:
# TODO: why is it imported? due to some side-effect or by mistake?
import helpdesk.tasks # NOQA

View File

@ -1,12 +1,15 @@
from helpdesk.models import (
Ticket,
Queue,
KBCategory,
KBItem,
Queue
)
from helpdesk import settings as helpdesk_settings
if helpdesk_settings.HELPDESK_KB_ENABLED:
from helpdesk.models import (
KBCategory,
KBItem
)
def huser_from_request(req):
return HelpdeskUser(req.user)
@ -38,16 +41,18 @@ class HelpdeskUser:
def get_allowed_kb_categories(self):
categories = []
for cat in KBCategory.objects.all():
if self.can_access_kbcategory(cat):
categories.append(cat)
if helpdesk_settings.HELPDESK_KB_ENABLED:
for cat in KBCategory.objects.all():
if self.can_access_kbcategory(cat):
categories.append(cat)
return categories
def get_assigned_kb_items(self):
kbitems = []
for item in KBItem.objects.all():
if item.get_team() and item.get_team().is_member(self.user):
kbitems.append(item)
if helpdesk_settings.HELPDESK_KB_ENABLED:
for item in KBItem.objects.all():
if item.get_team() and item.get_team().is_member(self.user):
kbitems.append(item)
return kbitems
def get_tickets_in_queues(self):

View File

@ -50,9 +50,12 @@ from helpdesk.lib import (
)
from helpdesk.models import (
Ticket, Queue, FollowUp, TicketChange, PreSetReply, FollowUpAttachment, SavedSearch,
IgnoreEmail, TicketCC, TicketDependency, UserSettings, KBItem, CustomField, TicketCustomFieldValue,
IgnoreEmail, TicketCC, TicketDependency, UserSettings, CustomField, TicketCustomFieldValue,
)
from helpdesk import settings as helpdesk_settings
if helpdesk_settings.HELPDESK_KB_ENABLED:
from helpdesk.models import (KBItem)
import helpdesk.views.abstract_views as abstract_views
from helpdesk.views.permissions import MustBeStaffMixin
from ..lib import format_time_spent
@ -1143,13 +1146,18 @@ def ticket_list(request):
'<a href="http://docs.djangoproject.com/en/dev/ref/databases/#sqlite-string-matching">'
'Django Documentation on string matching in SQLite</a>.')
kbitem_choices = [(item.pk, str(item)) for item in KBItem.objects.all()]
kbitem_choices = []
kbitem = []
if helpdesk_settings.HELPDESK_KB_ENABLED:
kbitem_choices = [(item.pk, str(item)) for item in KBItem.objects.all()]
kbitem = KBItem.objects.all()
return render(request, 'helpdesk/ticket_list.html', dict(
context,
default_tickets_per_page=request.user.usersettings_helpdesk.tickets_per_page,
user_choices=User.objects.filter(is_active=True, is_staff=True),
kb_items=KBItem.objects.all(),
kb_items=kbitem,
queue_choices=huser.get_queues(),
status_choices=Ticket.STATUS_CHOICES,
kbitem_choices=kbitem_choices,