88 lines
2.7 KiB
Python
88 lines
2.7 KiB
Python
from django.shortcuts import render, get_object_or_404, redirect
|
|
from django.contrib.auth.decorators import login_required
|
|
from accounts.decorators import permission_required
|
|
from projects.models import ProjectMembership
|
|
from .models import Document, DocumentCategory
|
|
from .forms import DocumentForm
|
|
|
|
|
|
@login_required
|
|
@permission_required("projects_documents_view")
|
|
def document_overview(request, project_id):
|
|
|
|
membership = get_object_or_404(ProjectMembership, user=request.user, project_id=project_id)
|
|
project = membership.project
|
|
|
|
documents = Document.objects.filter(project=project).order_by("-created_at")
|
|
categories = DocumentCategory.objects.all()
|
|
|
|
form = DocumentForm()
|
|
|
|
if request.method == "POST":
|
|
form = DocumentForm(request.POST, request.FILES)
|
|
if form.is_valid():
|
|
doc = form.save(commit=False)
|
|
doc.project = project
|
|
doc.uploaded_by = request.user
|
|
doc.save()
|
|
return redirect("documents:overview", project.id)
|
|
|
|
# gruppiert nach Kategorie
|
|
grouped = {}
|
|
|
|
for cat in categories:
|
|
docs = list(documents.filter(category=cat))
|
|
|
|
if docs:
|
|
grouped[cat] = docs
|
|
|
|
uncategorized = documents.filter(category__isnull=True)
|
|
|
|
return render(request, "documents/overview.html", {
|
|
"project": project,
|
|
"form": form,
|
|
"grouped": grouped,
|
|
"uncategorized": uncategorized,
|
|
})
|
|
|
|
|
|
@login_required
|
|
@permission_required("projects_documents_delete")
|
|
def document_delete(request, project_id, doc_id):
|
|
membership = get_object_or_404(ProjectMembership, user=request.user, project_id=project_id)
|
|
doc = get_object_or_404(Document, id=doc_id, project=membership.project)
|
|
doc.file.delete()
|
|
doc.delete()
|
|
return redirect("documents:overview", project_id)
|
|
|
|
|
|
@login_required
|
|
@permission_required("projects_documents_add")
|
|
def document_add(request, project_id):
|
|
membership = get_object_or_404(ProjectMembership, user=request.user, project_id=project_id)
|
|
project = membership.project
|
|
|
|
documents = Document.objects.filter(project=project).order_by("-created_at")
|
|
categories = DocumentCategory.objects.all()
|
|
|
|
form = DocumentForm()
|
|
|
|
if request.method == "POST":
|
|
form = DocumentForm(request.POST, request.FILES)
|
|
if form.is_valid():
|
|
doc = form.save(commit=False)
|
|
doc.project = project
|
|
doc.uploaded_by = request.user
|
|
doc.save()
|
|
return redirect("documents:overview", project.id)
|
|
else:
|
|
form = DocumentForm()
|
|
|
|
return render(
|
|
request,
|
|
"documents/add.html",
|
|
{
|
|
"project": project,
|
|
"form": form,
|
|
}
|
|
) |