feat: added faqs
This commit is contained in:
@@ -7,10 +7,16 @@ from .forms import CommentForm, TicketForm
|
||||
from django.urls import reverse
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.contrib import messages
|
||||
from django.shortcuts import redirect
|
||||
from django.shortcuts import redirect, render
|
||||
from django.db.models import Q
|
||||
from django.http import HttpResponse
|
||||
from reportlab.lib.pagesizes import A4
|
||||
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
|
||||
from reportlab.lib.units import cm
|
||||
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
|
||||
from reportlab.lib.enums import TA_LEFT, TA_CENTER
|
||||
|
||||
from .models import Ticket, TicketHistory
|
||||
from .models import Ticket, TicketHistory, FAQ
|
||||
|
||||
|
||||
class HomeView(TemplateView):
|
||||
@@ -239,3 +245,70 @@ class TicketUpdateView(LoginRequiredMixin, UpdateView):
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse_lazy("detail", kwargs={"pk": self.object.pk})
|
||||
|
||||
|
||||
def faq_list(request):
|
||||
"""Zeigt alle aktiven FAQs an"""
|
||||
faqs = FAQ.objects.filter(is_active=True)
|
||||
return render(request, 'ticketsystem/faq.html', {'faqs': faqs})
|
||||
|
||||
|
||||
def faq_pdf_download(request):
|
||||
"""Generiert PDF mit allen FAQs"""
|
||||
# Response Setup
|
||||
response = HttpResponse(content_type='application/pdf')
|
||||
response['Content-Disposition'] = 'attachment; filename="FAQ_Ticketsystem.pdf"'
|
||||
|
||||
# PDF erstellen
|
||||
doc = SimpleDocTemplate(response, pagesize=A4, topMargin=2 * cm, bottomMargin=2 * cm)
|
||||
|
||||
# Styles
|
||||
styles = getSampleStyleSheet()
|
||||
title_style = ParagraphStyle(
|
||||
'CustomTitle',
|
||||
parent=styles['Heading1'],
|
||||
fontSize=24,
|
||||
textColor='#1a1a1a',
|
||||
spaceAfter=30,
|
||||
alignment=TA_CENTER
|
||||
)
|
||||
question_style = ParagraphStyle(
|
||||
'Question',
|
||||
parent=styles['Heading2'],
|
||||
fontSize=14,
|
||||
textColor='#2563eb',
|
||||
spaceAfter=10
|
||||
)
|
||||
answer_style = ParagraphStyle(
|
||||
'Answer',
|
||||
parent=styles['Normal'],
|
||||
fontSize=11,
|
||||
spaceAfter=20,
|
||||
alignment=TA_LEFT
|
||||
)
|
||||
|
||||
# Content
|
||||
elements = []
|
||||
|
||||
# Titel
|
||||
elements.append(Paragraph("Häufig gestellte Fragen (FAQ)", title_style))
|
||||
elements.append(Spacer(1, 20))
|
||||
|
||||
# FAQs holen
|
||||
faqs = FAQ.objects.filter(is_active=True)
|
||||
|
||||
# FAQs hinzufügen
|
||||
for i, faq in enumerate(faqs, 1):
|
||||
# Frage
|
||||
elements.append(Paragraph(f"{i}. {faq.question}", question_style))
|
||||
|
||||
# Antwort
|
||||
elements.append(Paragraph(faq.answer.replace('\n', '<br/>'), answer_style))
|
||||
|
||||
# Abstand zwischen FAQs
|
||||
elements.append(Spacer(1, 10))
|
||||
|
||||
# PDF generieren
|
||||
doc.build(elements)
|
||||
|
||||
return response
|
||||
Reference in New Issue
Block a user