From 4a777e4b01c1f877ff4f86384eee296068afac67 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Thu, 10 Feb 2022 10:28:41 +0100 Subject: [PATCH] #86 Edit document EMA * adds buttons and urls for ema --- .../ema/detail/includes/documents.html | 15 +++++-- ema/urls.py | 5 ++- ema/views.py | 41 +++++++++++++++++-- 3 files changed, 52 insertions(+), 9 deletions(-) diff --git a/ema/templates/ema/detail/includes/documents.html b/ema/templates/ema/detail/includes/documents.html index dbc8927..7be632d 100644 --- a/ema/templates/ema/detail/includes/documents.html +++ b/ema/templates/ema/detail/includes/documents.html @@ -27,6 +27,9 @@ {% trans 'Title' %} + + {% trans 'Created on' %} + {% trans 'Comment' %} @@ -41,18 +44,24 @@ {% for doc in obj.documents.all %} - + {{ doc.title }} + + {{ doc.date_of_creation }} +
{{ doc.comment }}
- + {% if is_default_member and has_access %} - + {% endif %} diff --git a/ema/urls.py b/ema/urls.py index 1aa5278..a2ee618 100644 --- a/ema/urls.py +++ b/ema/urls.py @@ -30,7 +30,8 @@ urlpatterns = [ # Documents path('/document/new/', document_new_view, name='new-doc'), - path('document/', get_document_view, name='get-doc'), - path('document//remove/', remove_document_view, name='remove-doc'), + path('/document/', get_document_view, name='get-doc'), + path('/document//edit/', edit_document_view, name='edit-doc'), + path('/document//remove/', remove_document_view, name='remove-doc'), ] \ No newline at end of file diff --git a/ema/views.py b/ema/views.py index 99c80be..343953f 100644 --- a/ema/views.py +++ b/ema/views.py @@ -15,7 +15,8 @@ from intervention.forms.modalForms import ShareModalForm from konova.contexts import BaseContext from konova.decorators import conservation_office_group_required, shared_access_required from ema.models import Ema, EmaDocument -from konova.forms import RemoveModalForm, SimpleGeomForm, RecordModalForm, RemoveDeadlineModalForm +from konova.forms import RemoveModalForm, SimpleGeomForm, RecordModalForm, RemoveDeadlineModalForm, \ + EditDocumentModalForm from konova.models import Deadline from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER @@ -23,7 +24,7 @@ from konova.utils.documents import get_document, remove_document from konova.utils.generators import generate_qr_code from konova.utils.message_templates import IDENTIFIER_REPLACED, FORM_INVALID, DATA_UNSHARED, DATA_UNSHARED_EXPLANATION, \ DOCUMENT_ADDED, COMPENSATION_STATE_REMOVED, COMPENSATION_STATE_ADDED, COMPENSATION_ACTION_REMOVED, \ - COMPENSATION_ACTION_ADDED, DEADLINE_ADDED, DEADLINE_REMOVED + COMPENSATION_ACTION_ADDED, DEADLINE_ADDED, DEADLINE_REMOVED, DOCUMENT_EDITED from konova.utils.user_checks import in_group @@ -366,18 +367,21 @@ def document_new_view(request: HttpRequest, id: str): @login_required @conservation_office_group_required -def get_document_view(request: HttpRequest, doc_id: str): +@shared_access_required(Ema, "id") +def get_document_view(request: HttpRequest, id: str, doc_id: str): """ Returns the document as downloadable file Wraps the generic document fetcher function from konova.utils. Args: request (HttpRequest): The incoming request + id (str): The EMA id doc_id (str): The document id Returns: """ + ema = get_object_or_404(Ema, id=id) doc = get_object_or_404(EmaDocument, id=doc_id) user = request.user instance = doc.instance @@ -393,18 +397,47 @@ def get_document_view(request: HttpRequest, doc_id: str): @login_required @conservation_office_group_required -def remove_document_view(request: HttpRequest, doc_id: str): +@shared_access_required(Ema, "id") +def edit_document_view(request: HttpRequest, id: str, doc_id: str): + """ Removes the document from the database and file system + + Wraps the generic functionality from konova.utils. + + Args: + request (HttpRequest): The incoming request + id (str): The EMA id + doc_id (str): The document id + + Returns: + + """ + ema = get_object_or_404(Ema, id=id) + doc = get_object_or_404(EmaDocument, id=doc_id) + form = EditDocumentModalForm(request.POST or None, request.FILES or None, instance=ema, document=doc, request=request) + return form.process_request( + request, + DOCUMENT_EDITED, + reverse("ema:detail", args=(id,)) + "#related_data" + ) + + +@login_required +@conservation_office_group_required +@shared_access_required(Ema, "id") +def remove_document_view(request: HttpRequest, id:str, doc_id: str): """ Removes the document from the database and file system Wraps the generic functionality from konova.utils. Args: request (HttpRequest): The incoming request + id (str): The EMA id doc_id (str): The document id Returns: """ + ema = get_object_or_404(Ema, id=id) doc = get_object_or_404(EmaDocument, id=doc_id) return remove_document( request,