mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-12-11 00:57:09 +01:00
Added document type
This commit is contained in:
parent
dfa5ea423f
commit
d7ab69fed9
9 changed files with 222 additions and 10 deletions
|
|
@ -4,7 +4,7 @@ from django.contrib.admin.utils import model_ngettext
|
|||
from django.core.exceptions import PermissionDenied
|
||||
from django.template.response import TemplateResponse
|
||||
|
||||
from documents.models import Tag, Correspondent
|
||||
from documents.models import Tag, Correspondent, DocumentType
|
||||
|
||||
|
||||
def add_tag_to_selected(modeladmin, request, queryset):
|
||||
|
|
@ -159,3 +159,67 @@ def remove_correspondent_from_selected(modeladmin, request, queryset):
|
|||
|
||||
|
||||
remove_correspondent_from_selected.short_description = "Remove correspondent from selected documents"
|
||||
|
||||
|
||||
def set_document_type_on_selected(modeladmin, request, queryset):
|
||||
opts = modeladmin.model._meta
|
||||
app_label = opts.app_label
|
||||
|
||||
if not modeladmin.has_change_permission(request):
|
||||
raise PermissionDenied
|
||||
|
||||
if request.POST.get('post'):
|
||||
n = queryset.count()
|
||||
document_type = DocumentType.objects.get(id=request.POST.get('document_type_id'))
|
||||
if n:
|
||||
for obj in queryset:
|
||||
obj_display = str(obj)
|
||||
modeladmin.log_change(request, obj, obj_display)
|
||||
queryset.update(document_type=document_type)
|
||||
modeladmin.message_user(request, "Successfully set document type %(document_type)s on %(count)d %(items)s." % {
|
||||
"document_type": document_type.name, "count": n, "items": model_ngettext(modeladmin.opts, n)
|
||||
}, messages.SUCCESS)
|
||||
|
||||
# Return None to display the change list page again.
|
||||
return None
|
||||
|
||||
title = "Set document type on multiple documents"
|
||||
|
||||
context = dict(
|
||||
modeladmin.admin_site.each_context(request),
|
||||
title=title,
|
||||
queryset=queryset,
|
||||
opts=opts,
|
||||
action_checkbox_name=helpers.ACTION_CHECKBOX_NAME,
|
||||
media=modeladmin.media,
|
||||
document_types=DocumentType.objects.all()
|
||||
)
|
||||
|
||||
request.current_app = modeladmin.admin_site.name
|
||||
|
||||
return TemplateResponse(request,
|
||||
"admin/%s/%s/set_document_type.html" % (app_label, opts.model_name)
|
||||
, context)
|
||||
|
||||
|
||||
set_document_type_on_selected.short_description = "Set document type on selected documents"
|
||||
|
||||
|
||||
def remove_document_type_from_selected(modeladmin, request, queryset):
|
||||
if not modeladmin.has_change_permission(request):
|
||||
raise PermissionDenied
|
||||
|
||||
n = queryset.count()
|
||||
if n:
|
||||
for obj in queryset:
|
||||
obj_display = str(obj)
|
||||
modeladmin.log_change(request, obj, obj_display)
|
||||
queryset.update(document_type=None)
|
||||
modeladmin.message_user(request, "Successfully removed document type from %(count)d %(items)s." % {
|
||||
"count": n, "items": model_ngettext(modeladmin.opts, n)
|
||||
}, messages.SUCCESS)
|
||||
|
||||
return None
|
||||
|
||||
|
||||
remove_document_type_from_selected.short_description = "Remove document type from selected documents"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue