#18 File upload in certain folders
* refactors documents and file upload to be distributed into different subfolders, depending on the type of document (InterventionDocument, RevocationDocument, ...) * refactors Document model into AbstractDocument * subclasses RevocationDocument, InterventionDocument, COmpensationDocument, EmaDocument and EcoAccountDocument from AbstractDocument to provide proper functionality for each * adds new specialized routes for each new document type (opening, removing) * drops generic get and remove routes for documents
This commit is contained in:
50
konova/utils/documents.py
Normal file
50
konova/utils/documents.py
Normal file
@@ -0,0 +1,50 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||||
Contact: michel.peltriaux@sgdnord.rlp.de
|
||||
Created on: 01.09.21
|
||||
|
||||
"""
|
||||
from django.http import FileResponse, HttpRequest
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from konova.forms import RemoveModalForm
|
||||
from konova.models import AbstractDocument
|
||||
|
||||
|
||||
def get_document(doc: AbstractDocument):
|
||||
""" Returns a document as downloadable attachment
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
id (str): The document id
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
return FileResponse(doc.file, as_attachment=True)
|
||||
|
||||
|
||||
def remove_document(request: HttpRequest, doc: AbstractDocument):
|
||||
""" Renders a form for uploading new documents
|
||||
|
||||
This function works using a modal. We are not using the regular way, the django bootstrap modal forms are
|
||||
intended to be used. Instead of View classes we work using the classic way of dealing with forms (see below).
|
||||
It is important to mention, that modal forms, which should reload the page afterwards, must provide a
|
||||
'reload_page' bool in the context. This way, the modal may reload the page or not.
|
||||
|
||||
For further details see the comments in templates/modal or
|
||||
https://github.com/trco/django-bootstrap-modal-forms
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
title = doc.title
|
||||
form = RemoveModalForm(request.POST or None, instance=doc, user=request.user)
|
||||
return form.process_request(
|
||||
request=request,
|
||||
msg_success=_("Document '{}' deleted").format(title)
|
||||
)
|
||||
Reference in New Issue
Block a user