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 d1db559f33
commit 955784fc45
10 changed files with 106 additions and 41 deletions
+52 -8
View File
@@ -13,19 +13,24 @@ from django import forms
from django.contrib.auth.models import User
from django.contrib.gis.forms import GeometryField, OSMWidget
from django.contrib.gis.geos import Polygon
from django.db import transaction
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from konova.models import Document
class BaseForm(forms.Form):
"""
Basic form for that holds attributes needed in all other forms
"""
template = None
action_url = None
form_title = None
cancel_redirect = None
form_caption = None
instance = None # The data holding model object
form_attrs = {} # Holds additional attributes, that can be used in the template
def __init__(self, *args, **kwargs):
self.instance = kwargs.pop("instance", None)
@@ -152,6 +157,7 @@ class RemoveModalForm(BaseModalForm):
)
def __init__(self, *args, **kwargs):
self.template = "modal/modal_form.html"
super().__init__(*args, **kwargs)
self.form_title = _("Remove")
self.form_caption = _("Are you sure?")
@@ -166,16 +172,54 @@ class RemoveModalForm(BaseModalForm):
self.instance.delete()
class RemoveDocumentForm(BaseModalForm):
confirm = forms.BooleanField(
label=_("Confirm"),
class NewDocumentForm(BaseModalForm):
""" Modal form for new documents
"""
title = forms.CharField(
max_length=500,
)
creation_date = forms.DateField(
label=_("Created on"),
label_suffix=_(""),
widget=forms.CheckboxInput(),
required=True,
help_text=_("When has this file been created? Important for photos."),
widget=forms.DateInput(
attrs={
"type": "date",
"data-provide": "datepicker",
},
format="%d.%m.%Y"
)
)
file = forms.FileField(
label=_("File"),
label_suffix=_(""),
help_text=_("Must be smaller than 15 Mb"),
)
comment = forms.CharField(
required=False,
label=_("Comment"),
label_suffix=_(""),
help_text=_("Additional comment on this file"),
widget=forms.Textarea()
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.instance = kwargs.get("instance", None)
self.form_title = _("Remove document")
self.form_caption = _("This will remove '{}'. Are you sure?").format(self.instance.title)
self.form_title = _("Add new document")
self.form_caption = _("")
self.template = "modal/modal_form.html"
self.form_attrs = {
"enctype": "multipart/form-data",
}
def save(self):
with transaction.atomic():
doc = Document.objects.create(
created_by=self.user,
title=self.cleaned_data["title"],
comment=self.cleaned_data["comment"],
document=self.cleaned_data["file"],
date_of_creation=self.cleaned_data["creation_date"],
)
return doc