Merge branch 'ui-improvements' into dev

This commit is contained in:
Jonas Winkler 2018-07-16 16:09:41 +02:00
commit d72604eb86
3 changed files with 78 additions and 5 deletions

View File

@ -1,10 +1,14 @@
from datetime import datetime from datetime import datetime
from django.conf import settings 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.contrib.auth.models import User, Group
from django.http import HttpResponseRedirect
from django.urls import reverse from django.urls import reverse
from django.templatetags.static import static 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 django.utils.safestring import mark_safe
from documents.actions import add_tag_to_selected, remove_tag_from_selected, set_correspondent_on_selected, \ from documents.actions import add_tag_to_selected, remove_tag_from_selected, set_correspondent_on_selected, \
@ -137,6 +141,8 @@ class DocumentAdmin(CommonAdmin):
date_hierarchy = 'created' date_hierarchy = 'created'
document_queue = None
def has_add_permission(self, request): def has_add_permission(self, request):
return False return False
@ -144,15 +150,56 @@ class DocumentAdmin(CommonAdmin):
return obj.created.date().strftime("%Y-%m-%d") return obj.created.date().strftime("%Y-%m-%d")
created_.short_description = "Created" 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): def change_view(self, request, object_id=None, form_url='', extra_context=None):
extra_context = extra_context or {} extra_context = extra_context or {}
doc = Document.objects.get(id=object_id) doc = Document.objects.get(id=object_id)
extra_context['download_url'] = doc.download_url extra_context['download_url'] = doc.download_url
extra_context['file_type'] = doc.file_type 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( return super(DocumentAdmin, self).change_view(
request, object_id, form_url, extra_context=extra_context, 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('<a href="{}">{}</a>', 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 @mark_safe
def thumbnail(self, obj): def thumbnail(self, obj):
return self._html_tag( return self._html_tag(

13
src/documents/static/paperless.css Normal file → Executable file
View File

@ -20,4 +20,17 @@ td a.tag {
#result_list td textarea { #result_list td textarea {
width: 90%; width: 90%;
height: 5em; 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;
} }

View File

@ -5,9 +5,10 @@
{{ block.super }} {{ block.super }}
{% if file_type in "pdf jpg png" %} {% if file_type in "pdf jpg png" %}
<div id="twocolumn_parent" style="display: flex;">
<div id="form_parent" style="flex:50%; margin-right: 10px;"></div> <div id="change_form_twocolumn_parent">
<div id="viewer_parent" style="flex:50%; margin-left: 10px; text-align: center;"> <div id="change_form_form_parent"></div>
<div id="change_form_viewer_parent">
{% if file_type == "pdf" %} {% if file_type == "pdf" %}
{% include "admin/documents/document/viewers/viewer_pdf.html" %} {% include "admin/documents/document/viewers/viewer_pdf.html" %}
{% endif %} {% endif %}
@ -18,8 +19,20 @@
</div> </div>
<script> <script>
django.jQuery("#form_parent").append(django.jQuery("#document_form")); django.jQuery("#change_form_form_parent").append(django.jQuery("#document_form"));
django.jQuery("#content-main").append(django.jQuery("#change_form_twocolumn_parent"));
</script> </script>
{% if next_object %}
<script type="text/javascript">//<![CDATA[
(function($){
$('<input type="submit" value="Save and edit next" name="_saveandeditnext" />')
.prependTo('div.submit-row');
$('<input type="hidden" value="{{next_object}}" name="_next_object" />')
.prependTo('div.submit-row');
})(django.jQuery);
//]]></script>
{% endif %}
{% endif %} {% endif %}
{% endblock content %} {% endblock content %}