Document upload

* adds document upload form
* refactors modal form templates into form classes
* adds document upload route to intervention routes of urls.py
This commit is contained in:
mipel
2021-07-26 15:16:16 +02:00
parent 1d4be22da5
commit 1ff02c30a6
10 changed files with 106 additions and 41 deletions

View File

@@ -12,12 +12,10 @@
</div>
<div class="col-sm-6">
<div class="d-flex justify-content-end">
<a href="{% url 'doc-new' %}" title="{% trans 'Add new document' %}">
<button class="btn btn-outline-default ">
{% fa5_icon 'plus' %}
{% fa5_icon 'file' %}
</button>
</a>
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'intervention:new-doc' intervention.id %}" title="{% trans 'Add new document' %}">
{% fa5_icon 'plus' %}
{% fa5_icon 'file' %}
</button>
</div>
</div>
</div>

View File

@@ -7,12 +7,13 @@ Created on: 30.11.20
"""
from django.urls import path
from intervention.views import index_view, new_view, open_view, edit_view, remove_view
from intervention.views import index_view, new_view, open_view, edit_view, remove_view, new_document_view
app_name = "intervention"
urlpatterns = [
path("", index_view, name="index"),
path('new/', new_view, name='new'),
path('<id>/document/new/', new_document_view, name='new-doc'),
path('<id>', open_view, name='open'),
path('<id>/edit', edit_view, name='edit'),
path('<id>/remove', remove_view, name='remove'),

View File

@@ -9,7 +9,7 @@ from intervention.models import Intervention
from intervention.tables import InterventionTable
from konova.contexts import BaseContext
from konova.decorators import *
from konova.forms import RemoveForm, SimpleGeomForm
from konova.forms import RemoveForm, SimpleGeomForm, NewDocumentForm
@login_required
@@ -73,6 +73,45 @@ def new_view(request: HttpRequest):
return render(request, template, context)
@login_required
def new_document_view(request: HttpRequest, id: str):
""" Renders a form for uploading new documents
Args:
request (HttpRequest): The incoming request
id (str): The intervention's id to which the new document will be related
Returns:
"""
form = NewDocumentForm(request.POST, request.FILES, user=request.user)
template = form.template
if request.method == "POST":
if form.is_valid():
doc = form.save()
intervention = get_object_or_404(Intervention, id=id)
intervention.documents.add(doc)
messages.success(
request,
_("Document '{}' added").format(doc.title)
)
return redirect(request.META.get("HTTP_REFERER", "home"))
else:
messages.info(
request,
_("There was an error on this form.")
)
return redirect(request.META.get("HTTP_REFERER", "home"))
elif request.method == "GET":
context = {
"form": form
}
context = BaseContext(request, context).context
return render(request, template, context)
else:
raise NotImplementedError
@login_required
def open_view(request: HttpRequest, id: str):
""" Renders a detail view for viewing an intervention's data