95 lines
2.9 KiB
Python
95 lines
2.9 KiB
Python
import logging
|
|
import yaml
|
|
|
|
from django.shortcuts import render, redirect , get_object_or_404
|
|
from .forms import OrganizationForm
|
|
from .models import Organization,Document,Risk, DocumentTemplate,DocumentRiskControl
|
|
from backend.accounts.utils import send_confirmation_email,send_document_email
|
|
from django.contrib.admin.views.decorators import staff_member_required
|
|
|
|
|
|
# @login_required
|
|
# def index(request):
|
|
# return HttpResponse('<h1>Django</h1><p>Página simples.</p>')
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
# @login_required
|
|
def index(request):
|
|
template_name = 'index.html'
|
|
return render(request, template_name)
|
|
|
|
|
|
def signup(request):
|
|
if request.method == 'POST':
|
|
form = OrganizationForm(request.POST)
|
|
if form.is_valid():
|
|
form.save()
|
|
send_confirmation_email(form.data['email'])
|
|
return render(request, 'thankyou.html', {
|
|
'email': form.data['email'],
|
|
})
|
|
else:
|
|
logging.error(form.errors)
|
|
return render(request, 'signup.html', {'form': form})
|
|
else:
|
|
form = OrganizationForm()
|
|
|
|
return render(request, 'signup.html', {'form': form})
|
|
|
|
|
|
def thankyou(request):
|
|
return render(request, 'thankyou.html')
|
|
|
|
def document(request, document_id):
|
|
print(f"Document ID received: {document_id}")
|
|
doc = get_object_or_404(Document, id=document_id)
|
|
|
|
return render(request, 'document.html', {
|
|
'document': doc,
|
|
'organization': doc.organization,
|
|
'segments': doc.segments.all(),
|
|
})
|
|
|
|
@staff_member_required
|
|
def template_preview(request, name):
|
|
template = get_object_or_404(DocumentTemplate, name=name)
|
|
parsed_template = template.to_dict()
|
|
return render(request, 'template_preview.html', {'template': parsed_template})
|
|
|
|
def payment_page(request):
|
|
email = request.GET.get("email")
|
|
organization = Organization.objects.get(email=email)
|
|
document = Document.objects.get(organization=organization)
|
|
document_link = f"http://127.0.0.1:8000/document/{document.id}/"
|
|
|
|
if request.method == "POST":
|
|
send_document_email(email, document_link)
|
|
return redirect(document_link)
|
|
|
|
return render(request, "payment.html", {"email": email})
|
|
|
|
|
|
def docprew(request, document_id):
|
|
doc = get_object_or_404(Document, id=document_id)
|
|
org = doc.organization
|
|
|
|
document_risk_controls = DocumentRiskControl.objects.filter(document=doc)
|
|
|
|
unique_risks = Risk.objects.filter(id__in=document_risk_controls.values('risk_id')).distinct()
|
|
|
|
risks_with_controls = {}
|
|
|
|
for risk in unique_risks:
|
|
related_controls = DocumentRiskControl.objects.filter(risk=risk)
|
|
|
|
risk_controls = [control.control.name for control in related_controls]
|
|
|
|
risks_with_controls[risk] = ", ".join(risk_controls)
|
|
|
|
return render(request, 'document_detail.html', {
|
|
'document': doc,
|
|
'organization': org,
|
|
'created_at': doc.created_at,
|
|
'risks_with_controls': risks_with_controls,
|
|
}) |