feat: added faqs

This commit is contained in:
2025-05-30 00:04:35 +02:00
parent c77c966e0e
commit 51bf409e3c
6 changed files with 123 additions and 5 deletions

View File

@@ -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