From f21debe95d9d82b397cc34c81327eaa2682e391b Mon Sep 17 00:00:00 2001 From: Jonas Winkler Date: Mon, 16 Jul 2018 14:39:09 +0200 Subject: [PATCH 1/2] css stuff --- src/documents/static/paperless.css | 13 +++++++++++++ .../admin/documents/document/change_form.html | 9 +++++---- 2 files changed, 18 insertions(+), 4 deletions(-) mode change 100644 => 100755 src/documents/static/paperless.css diff --git a/src/documents/static/paperless.css b/src/documents/static/paperless.css old mode 100644 new mode 100755 index 506debb6d..3ede53d38 --- a/src/documents/static/paperless.css +++ b/src/documents/static/paperless.css @@ -20,4 +20,17 @@ td a.tag { #result_list td textarea { width: 90%; height: 5em; +} + +#change_form_twocolumn_parent { + display: flex; +} +#change_form_form_parent { + flex:50%; + margin-right: 10px; +} +#change_form_viewer_parent { + flex:50%; + margin-left: 10px; + text-align: center; } \ No newline at end of file diff --git a/src/documents/templates/admin/documents/document/change_form.html b/src/documents/templates/admin/documents/document/change_form.html index 47bb1efd7..04f369018 100755 --- a/src/documents/templates/admin/documents/document/change_form.html +++ b/src/documents/templates/admin/documents/document/change_form.html @@ -5,9 +5,9 @@ {{ block.super }} {% if file_type in "pdf jpg png" %} -
-
-
+
+
+
{% if file_type == "pdf" %} {% include "admin/documents/document/viewers/viewer_pdf.html" %} {% endif %} @@ -18,7 +18,8 @@
{% endif %} From f0c94cc65fe16e128da9d58da257d1ef41ed90f8 Mon Sep 17 00:00:00 2001 From: Jonas Winkler Date: Mon, 16 Jul 2018 16:08:51 +0200 Subject: [PATCH 2/2] Added 'save and edit next' functionality --- src/documents/admin.py | 49 ++++++++++++++++++- .../admin/documents/document/change_form.html | 12 +++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/src/documents/admin.py b/src/documents/admin.py index 7b1f9f110..be37188e6 100755 --- a/src/documents/admin.py +++ b/src/documents/admin.py @@ -1,10 +1,14 @@ from datetime import datetime from django.conf import settings -from django.contrib import admin +from django.contrib import admin, messages +from django.contrib.admin.templatetags.admin_urls import add_preserved_filters from django.contrib.auth.models import User, Group +from django.http import HttpResponseRedirect from django.urls import reverse from django.templatetags.static import static +from django.utils.html import format_html +from django.utils.http import urlquote from django.utils.safestring import mark_safe from .models import Correspondent, Tag, Document, Log @@ -117,6 +121,8 @@ class DocumentAdmin(CommonAdmin): date_hierarchy = 'created' + document_queue = None + def has_add_permission(self, request): return False @@ -124,15 +130,56 @@ class DocumentAdmin(CommonAdmin): return obj.created.date().strftime("%Y-%m-%d") created_.short_description = "Created" + def changelist_view(self, request, extra_context=None): + response = super().changelist_view(request, extra_context) + + self.document_queue = [doc.id for doc in response.context_data['cl'].queryset] + + return response + def change_view(self, request, object_id=None, form_url='', extra_context=None): extra_context = extra_context or {} doc = Document.objects.get(id=object_id) extra_context['download_url'] = doc.download_url extra_context['file_type'] = doc.file_type + if self.document_queue: + #There is a queue of documents + current_index = self.document_queue.index(int(object_id)) + if current_index < len(self.document_queue) - 1: + #... and there are still documents in the queue + next_object = self.document_queue[current_index + 1] + extra_context['next_object'] = next_object return super(DocumentAdmin, self).change_view( request, object_id, form_url, extra_context=extra_context, ) + def response_change(self, request, obj): + + # This is mostly copied from ModelAdmin.response_change() + opts = self.model._meta + preserved_filters = self.get_preserved_filters(request) + + msg_dict = { + 'name': opts.verbose_name, + 'obj': format_html('{}', urlquote(request.path), obj), + } + if "_saveandeditnext" in request.POST: + msg = format_html( + 'The {name} "{obj}" was changed successfully. Editing next object.', + **msg_dict + ) + self.message_user(request, msg, messages.SUCCESS) + redirect_url = reverse('admin:%s_%s_change' % + (opts.app_label, opts.model_name), + args=(request.POST['_next_object'],), + current_app=self.admin_site.name) + redirect_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, redirect_url) + response = HttpResponseRedirect(redirect_url) + else: + response = super().response_change(request, obj) + + return response + @mark_safe def thumbnail(self, obj): return self._html_tag( diff --git a/src/documents/templates/admin/documents/document/change_form.html b/src/documents/templates/admin/documents/document/change_form.html index 04f369018..9f184415c 100755 --- a/src/documents/templates/admin/documents/document/change_form.html +++ b/src/documents/templates/admin/documents/document/change_form.html @@ -5,6 +5,7 @@ {{ block.super }} {% if file_type in "pdf jpg png" %} +
@@ -21,6 +22,17 @@ django.jQuery("#change_form_form_parent").append(django.jQuery("#document_form")); django.jQuery("#content-main").append(django.jQuery("#change_form_twocolumn_parent")); + + {% if next_object %} + + {% endif %} {% endif %} {% endblock content %}