mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 19:17:13 -05:00 
			
		
		
		
	removed duplicate code
This commit is contained in:
		
							parent
							
								
									ef0d37985b
								
							
						
					
					
						commit
						25a6aa909b
					
				@ -8,7 +8,7 @@ from documents.classifier import DocumentClassifier
 | 
			
		||||
from documents.models import Tag, Correspondent, DocumentType
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def add_tag_to_selected(modeladmin, request, queryset):
 | 
			
		||||
def select_action(modeladmin, request, queryset, title, action, modelclass, message_type='add', document_action=None, queryset_action=None):
 | 
			
		||||
    opts = modeladmin.model._meta
 | 
			
		||||
    app_label = opts.app_label
 | 
			
		||||
 | 
			
		||||
@ -17,21 +17,32 @@ def add_tag_to_selected(modeladmin, request, queryset):
 | 
			
		||||
 | 
			
		||||
    if request.POST.get('post'):
 | 
			
		||||
        n = queryset.count()
 | 
			
		||||
        tag = Tag.objects.get(id=request.POST.get('tag_id'))
 | 
			
		||||
        selected_object = modelclass.objects.get(id=request.POST.get('obj_id'))
 | 
			
		||||
        if n:
 | 
			
		||||
            for obj in queryset:
 | 
			
		||||
                obj.tags.add(tag)
 | 
			
		||||
                obj_display = str(obj)
 | 
			
		||||
                modeladmin.log_change(request, obj, obj_display)
 | 
			
		||||
            modeladmin.message_user(request, "Successfully added tag %(tag)s to %(count)d %(items)s." % {
 | 
			
		||||
                "tag": tag.name, "count": n, "items": model_ngettext(modeladmin.opts, n)
 | 
			
		||||
            for document in queryset:
 | 
			
		||||
                if document_action:
 | 
			
		||||
                    document_action(document, selected_object)
 | 
			
		||||
                document_display = str(document)
 | 
			
		||||
                modeladmin.log_change(request, document, document_display)
 | 
			
		||||
            if queryset_action:
 | 
			
		||||
                queryset_action(queryset, selected_object)
 | 
			
		||||
 | 
			
		||||
            if message_type == 'add':
 | 
			
		||||
                message = "Successfully added %(model_name)s %(tag)s to %(count)d %(items)s."
 | 
			
		||||
            elif message_type == 'remove':
 | 
			
		||||
                message = "Successfully removed %(model_name)s %(tag)s from %(count)d %(items)s."
 | 
			
		||||
            elif message_type == 'set':
 | 
			
		||||
                message = "Successfully set %(model_name)s %(tag)s on %(count)d %(items)s."
 | 
			
		||||
            else:
 | 
			
		||||
                raise ValueError("Unknown message type")
 | 
			
		||||
 | 
			
		||||
            modeladmin.message_user(request, message % {
 | 
			
		||||
                "model_name": model_ngettext(modelclass, 1), "tag": selected_object.name, "count": n, "items": model_ngettext(modeladmin.opts, n)
 | 
			
		||||
            }, messages.SUCCESS)
 | 
			
		||||
 | 
			
		||||
        # Return None to display the change list page again.
 | 
			
		||||
        return None
 | 
			
		||||
 | 
			
		||||
    title = "Add tag to multiple documents"
 | 
			
		||||
 | 
			
		||||
    context = dict(
 | 
			
		||||
        modeladmin.admin_site.each_context(request),
 | 
			
		||||
        title=title,
 | 
			
		||||
@ -39,213 +50,97 @@ def add_tag_to_selected(modeladmin, request, queryset):
 | 
			
		||||
        opts=opts,
 | 
			
		||||
        action_checkbox_name=helpers.ACTION_CHECKBOX_NAME,
 | 
			
		||||
        media=modeladmin.media,
 | 
			
		||||
        action="add_tag_to_selected",
 | 
			
		||||
        tags=Tag.objects.all()
 | 
			
		||||
        action=action,
 | 
			
		||||
        objects=modelclass.objects.all(),
 | 
			
		||||
        itemname=model_ngettext(modelclass,1)
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    request.current_app = modeladmin.admin_site.name
 | 
			
		||||
 | 
			
		||||
    return TemplateResponse(request,
 | 
			
		||||
        "admin/%s/%s/mass_modify_tag.html" % (app_label, opts.model_name)
 | 
			
		||||
        "admin/%s/%s/select_object.html" % (app_label, opts.model_name)
 | 
			
		||||
    , context)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def simple_action(modeladmin, request, queryset, document_action=None, queryset_action=None):
 | 
			
		||||
    if not modeladmin.has_change_permission(request):
 | 
			
		||||
        raise PermissionDenied
 | 
			
		||||
 | 
			
		||||
    n = queryset.count()
 | 
			
		||||
    if n:
 | 
			
		||||
        for document in queryset:
 | 
			
		||||
            if document_action:
 | 
			
		||||
                document_action(document)
 | 
			
		||||
            document_display = str(document)
 | 
			
		||||
            modeladmin.log_change(request, document, document_display)
 | 
			
		||||
        if queryset_action:
 | 
			
		||||
            queryset_action(queryset)
 | 
			
		||||
        modeladmin.message_user(request, "Successfully edited %(count)d %(items)s." % {
 | 
			
		||||
            "count": n, "items": model_ngettext(modeladmin.opts, n)
 | 
			
		||||
        }, messages.SUCCESS)
 | 
			
		||||
 | 
			
		||||
    return None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def add_tag_to_selected(modeladmin, request, queryset):
 | 
			
		||||
    return select_action(modeladmin=modeladmin, request=request, queryset=queryset,
 | 
			
		||||
                         title="Add tag to multiple documents",
 | 
			
		||||
                         action="add_tag_to_selected",
 | 
			
		||||
                         modelclass=Tag,
 | 
			
		||||
                         message_type='add',
 | 
			
		||||
                         document_action=lambda doc, tag: doc.tags.add(tag))
 | 
			
		||||
add_tag_to_selected.short_description = "Add tag to selected documents"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def remove_tag_from_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()
 | 
			
		||||
        tag = Tag.objects.get(id=request.POST.get('tag_id'))
 | 
			
		||||
        if n:
 | 
			
		||||
            for obj in queryset:
 | 
			
		||||
                obj.tags.remove(tag)
 | 
			
		||||
                obj_display = str(obj)
 | 
			
		||||
                modeladmin.log_change(request, obj, obj_display)
 | 
			
		||||
            modeladmin.message_user(request, "Successfully removed tag %(tag)s from %(count)d %(items)s." % {
 | 
			
		||||
                "tag": tag.name, "count": n, "items": model_ngettext(modeladmin.opts, n)
 | 
			
		||||
            }, messages.SUCCESS)
 | 
			
		||||
 | 
			
		||||
        # Return None to display the change list page again.
 | 
			
		||||
        return None
 | 
			
		||||
 | 
			
		||||
    title = "Remove tag from 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,
 | 
			
		||||
        action="remove_tag_from_selected",
 | 
			
		||||
        tags=Tag.objects.all()
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    request.current_app = modeladmin.admin_site.name
 | 
			
		||||
 | 
			
		||||
    return TemplateResponse(request,
 | 
			
		||||
        "admin/%s/%s/mass_modify_tag.html" % (app_label, opts.model_name)
 | 
			
		||||
    , context)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    return select_action(modeladmin=modeladmin, request=request, queryset=queryset,
 | 
			
		||||
                         title="Remove tag from multiple documents",
 | 
			
		||||
                         action="remove_tag_from_selected",
 | 
			
		||||
                         modelclass=Tag,
 | 
			
		||||
                         message_type='remove',
 | 
			
		||||
                         document_action=lambda doc, tag: doc.tags.remove(tag))
 | 
			
		||||
remove_tag_from_selected.short_description = "Remove tag from selected documents"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def set_correspondent_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()
 | 
			
		||||
        correspondent = Correspondent.objects.get(id=request.POST.get('correspondent_id'))
 | 
			
		||||
        if n:
 | 
			
		||||
            for obj in queryset:
 | 
			
		||||
                obj_display = str(obj)
 | 
			
		||||
                modeladmin.log_change(request, obj, obj_display)
 | 
			
		||||
            queryset.update(correspondent=correspondent)
 | 
			
		||||
            modeladmin.message_user(request, "Successfully set correspondent %(correspondent)s on %(count)d %(items)s." % {
 | 
			
		||||
                "correspondent": correspondent.name, "count": n, "items": model_ngettext(modeladmin.opts, n)
 | 
			
		||||
            }, messages.SUCCESS)
 | 
			
		||||
 | 
			
		||||
        # Return None to display the change list page again.
 | 
			
		||||
        return None
 | 
			
		||||
 | 
			
		||||
    title = "Set correspondent 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,
 | 
			
		||||
        correspondents=Correspondent.objects.all()
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    request.current_app = modeladmin.admin_site.name
 | 
			
		||||
 | 
			
		||||
    return TemplateResponse(request,
 | 
			
		||||
        "admin/%s/%s/set_correspondent.html" % (app_label, opts.model_name)
 | 
			
		||||
    , context)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    return select_action(modeladmin=modeladmin, request=request, queryset=queryset,
 | 
			
		||||
                         title="Set correspondent on multiple documents",
 | 
			
		||||
                         action="set_correspondent_on_selected",
 | 
			
		||||
                         modelclass=Correspondent,
 | 
			
		||||
                         message_type='set',
 | 
			
		||||
                         queryset_action=lambda queryset, correspondent: queryset.update(correspondent=correspondent))
 | 
			
		||||
set_correspondent_on_selected.short_description = "Set correspondent on selected documents"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def remove_correspondent_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(correspondent=None)
 | 
			
		||||
        modeladmin.message_user(request, "Successfully removed correspondent from %(count)d %(items)s." % {
 | 
			
		||||
            "count": n, "items": model_ngettext(modeladmin.opts, n)
 | 
			
		||||
        }, messages.SUCCESS)
 | 
			
		||||
 | 
			
		||||
    return None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    return simple_action(modeladmin=modeladmin, request=request, queryset=queryset,
 | 
			
		||||
                         queryset_action=lambda qs: qs.update(correspondent=None))
 | 
			
		||||
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)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    return select_action(modeladmin=modeladmin, request=request, queryset=queryset,
 | 
			
		||||
                         title="Set document type on multiple documents",
 | 
			
		||||
                         action="set_document_type_on_selected",
 | 
			
		||||
                         modelclass=DocumentType,
 | 
			
		||||
                         message_type='set',
 | 
			
		||||
                         queryset_action=lambda queryset, document_type: queryset.update(document_type=document_type))
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    return simple_action(modeladmin=modeladmin, request=request, queryset=queryset,
 | 
			
		||||
                         queryset_action=lambda qs: qs.update(document_type=None))
 | 
			
		||||
remove_document_type_from_selected.short_description = "Remove document type from selected documents"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def run_document_classifier_on_selected(modeladmin, request, queryset):
 | 
			
		||||
    if not modeladmin.has_change_permission(request):
 | 
			
		||||
        raise PermissionDenied
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        clf = DocumentClassifier.load_classifier()
 | 
			
		||||
    except FileNotFoundError:
 | 
			
		||||
        modeladmin.message_user(request, "Classifier model file not found.", messages.ERROR)
 | 
			
		||||
        return None
 | 
			
		||||
 | 
			
		||||
    n = queryset.count()
 | 
			
		||||
    if n:
 | 
			
		||||
        for obj in queryset:
 | 
			
		||||
            clf.classify_document(obj, classify_correspondent=True, classify_tags=True, classify_document_type=True, replace_tags=True)
 | 
			
		||||
            modeladmin.log_change(request, obj, str(obj))
 | 
			
		||||
        modeladmin.message_user(request, "Successfully applied tags, correspondent and document type to %(count)d %(items)s." % {
 | 
			
		||||
            "count": n, "items": model_ngettext(modeladmin.opts, n)
 | 
			
		||||
        }, messages.SUCCESS)
 | 
			
		||||
 | 
			
		||||
    return None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    return simple_action(modeladmin=modeladmin, request=request, queryset=queryset,
 | 
			
		||||
                         document_action=lambda doc: clf.classify_document(doc, classify_correspondent=True, classify_tags=True, classify_document_type=True))
 | 
			
		||||
run_document_classifier_on_selected.short_description = "Run document classifier on selected"
 | 
			
		||||
 | 
			
		||||
@ -21,16 +21,16 @@
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block content %}
 | 
			
		||||
<p>Please select the tag.</p>
 | 
			
		||||
<p>Please select the {{itemname}}.</p>
 | 
			
		||||
<form method="post">{% csrf_token %}
 | 
			
		||||
    <div>
 | 
			
		||||
        {% for obj in queryset %}
 | 
			
		||||
        <input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk|unlocalize }}"/>
 | 
			
		||||
        {% endfor %}
 | 
			
		||||
        <p>
 | 
			
		||||
            <select name="tag_id">
 | 
			
		||||
                {% for tag in tags %}
 | 
			
		||||
                <option value="{{tag.id}}">{{tag.name}}</option>
 | 
			
		||||
            <select name="obj_id">
 | 
			
		||||
                {% for obj in objects %}
 | 
			
		||||
                <option value="{{obj.id}}">{{obj.name}}</option>
 | 
			
		||||
                {% endfor %}
 | 
			
		||||
            </select>
 | 
			
		||||
        </p>
 | 
			
		||||
@ -1,46 +0,0 @@
 | 
			
		||||
{% extends "admin/base_site.html" %}
 | 
			
		||||
{% load i18n l10n admin_urls static %}
 | 
			
		||||
{% load staticfiles %}
 | 
			
		||||
 | 
			
		||||
{% block extrahead %}
 | 
			
		||||
{{ block.super }}
 | 
			
		||||
{{ media }}
 | 
			
		||||
<script type="text/javascript" src="{% static 'admin/js/cancel.js' %}"></script>
 | 
			
		||||
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation delete-selected-confirmation{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block breadcrumbs %}
 | 
			
		||||
<div class="breadcrumbs">
 | 
			
		||||
    <a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
 | 
			
		||||
    › <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
 | 
			
		||||
    › <a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>
 | 
			
		||||
    › {{title}}
 | 
			
		||||
</div>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block content %}
 | 
			
		||||
<p>Please select the correspondent.</p>
 | 
			
		||||
<form method="post">{% csrf_token %}
 | 
			
		||||
    <div>
 | 
			
		||||
        {% for obj in queryset %}
 | 
			
		||||
        <input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk|unlocalize }}"/>
 | 
			
		||||
        {% endfor %}
 | 
			
		||||
        <p>
 | 
			
		||||
            <select name="correspondent_id">
 | 
			
		||||
                {% for correspondent in correspondents %}
 | 
			
		||||
                <option value="{{correspondent.id}}">{{correspondent.name}}</option>
 | 
			
		||||
                {% endfor %}
 | 
			
		||||
            </select>
 | 
			
		||||
        </p>
 | 
			
		||||
 | 
			
		||||
        <input type="hidden" name="action" value="set_correspondent_on_selected"/>
 | 
			
		||||
        <input type="hidden" name="post" value="yes"/>
 | 
			
		||||
        <p>
 | 
			
		||||
            <input type="submit" value="{% trans " Confirm" %}" />
 | 
			
		||||
            <a href="#" class="button cancel-link">{% trans "Go back" %}</a>
 | 
			
		||||
        </p>
 | 
			
		||||
    </div>
 | 
			
		||||
</form>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
@ -1,46 +0,0 @@
 | 
			
		||||
{% extends "admin/base_site.html" %}
 | 
			
		||||
{% load i18n l10n admin_urls static %}
 | 
			
		||||
{% load staticfiles %}
 | 
			
		||||
 | 
			
		||||
{% block extrahead %}
 | 
			
		||||
{{ block.super }}
 | 
			
		||||
{{ media }}
 | 
			
		||||
<script type="text/javascript" src="{% static 'admin/js/cancel.js' %}"></script>
 | 
			
		||||
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation delete-selected-confirmation{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block breadcrumbs %}
 | 
			
		||||
<div class="breadcrumbs">
 | 
			
		||||
    <a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
 | 
			
		||||
    › <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
 | 
			
		||||
    › <a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>
 | 
			
		||||
    › {{title}}
 | 
			
		||||
</div>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block content %}
 | 
			
		||||
<p>Please select the document type.</p>
 | 
			
		||||
<form method="post">{% csrf_token %}
 | 
			
		||||
    <div>
 | 
			
		||||
        {% for obj in queryset %}
 | 
			
		||||
        <input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk|unlocalize }}"/>
 | 
			
		||||
        {% endfor %}
 | 
			
		||||
        <p>
 | 
			
		||||
            <select name="document_type_id">
 | 
			
		||||
                {% for document_type in document_types %}
 | 
			
		||||
                <option value="{{document_type.id}}">{{document_type.name}}</option>
 | 
			
		||||
                {% endfor %}
 | 
			
		||||
            </select>
 | 
			
		||||
        </p>
 | 
			
		||||
 | 
			
		||||
        <input type="hidden" name="action" value="set_document_type_on_selected"/>
 | 
			
		||||
        <input type="hidden" name="post" value="yes"/>
 | 
			
		||||
        <p>
 | 
			
		||||
            <input type="submit" value="{% trans " Confirm" %}" />
 | 
			
		||||
            <a href="#" class="button cancel-link">{% trans "Go back" %}</a>
 | 
			
		||||
        </p>
 | 
			
		||||
    </div>
 | 
			
		||||
</form>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user