From 54dc9469dd6d06f549a78b09d432cd1535e50064 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Tue, 12 Nov 2019 01:35:04 -0400 Subject: [PATCH] Use TemplateField for Index expression field Signed-off-by: Roberto Rosario --- HISTORY.rst | 2 ++ mayan/apps/document_indexing/forms.py | 49 +++------------------------ mayan/apps/document_indexing/views.py | 7 +--- 3 files changed, 7 insertions(+), 51 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 1cbdf7eeee..fbcb614064 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -129,6 +129,8 @@ now get the permission inheritance from their base models. - Update common.http.URL to allow passing a query dictionary. - Add the document template sandbox feature. +- Use the generic TemplateField for the expression field + of index tree templates. 3.2.10 (2019-XX-XX) =================== diff --git a/mayan/apps/document_indexing/forms.py b/mayan/apps/document_indexing/forms.py index 935ea3b343..33a37ae741 100644 --- a/mayan/apps/document_indexing/forms.py +++ b/mayan/apps/document_indexing/forms.py @@ -1,52 +1,16 @@ from __future__ import absolute_import, unicode_literals from django import forms -from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ -from mayan.apps.common.classes import ModelProperty from mayan.apps.common.forms import FilteredSelectionForm from mayan.apps.documents.models import Document +from mayan.apps.templating.fields import TemplateField from .models import Index, IndexTemplateNode from .permissions import permission_document_indexing_rebuild -class DocumentTemplateSandboxForm(forms.Form): - template = forms.CharField( - help_text=_( - 'The template string to be evaluated. The current document ' - 'is available as the {{ document }} variable.' - ), label=_('Template'), widget=forms.widgets.Textarea( - attrs={'rows': 5} - ) - ) - result = forms.CharField( - help_text=_('Resulting text from the evaluated template.'), - label=_('Result'), required=False, widget=forms.widgets.Textarea( - attrs={'rows': 5} - ) - ) - - def __init__(self, *args, **kwargs): - super(DocumentTemplateSandboxForm, self).__init__(*args, **kwargs) - self.fields['template'].help_text = ' '.join( - [ - force_text(self.fields['template'].help_text), - force_text( - _( - 'Use Django\'s default templating language ' - '(https://docs.djangoproject.com/en/1.11/ref/templates/builtins/)' - ), - ), - '
', - ModelProperty.get_help_text_for( - model=Document, show_name=True - ).replace('\n', '
') - ] - ) - - class IndexTemplateFilteredForm(FilteredSelectionForm): class Meta: allow_multiple = True @@ -66,14 +30,9 @@ class IndexTemplateNodeForm(forms.ModelForm): super(IndexTemplateNodeForm, self).__init__(*args, **kwargs) self.fields['index'].widget = forms.widgets.HiddenInput() self.fields['parent'].widget = forms.widgets.HiddenInput() - self.fields['expression'].help_text = ' '.join( - [ - force_text(self.fields['expression'].help_text), - '
', - ModelProperty.get_help_text_for( - model=Document, show_name=True - ).replace('\n', '
') - ] + self.fields['expression'] = TemplateField( + label=_('Template'), model=Document, + model_variable='document', required=False ) class Meta: diff --git a/mayan/apps/document_indexing/views.py b/mayan/apps/document_indexing/views.py index 4f36c63e94..384e45064f 100644 --- a/mayan/apps/document_indexing/views.py +++ b/mayan/apps/document_indexing/views.py @@ -1,11 +1,8 @@ from __future__ import absolute_import, unicode_literals from django.contrib import messages -from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404 -from django.template import ( - Context, RequestContext, Template, TemplateSyntaxError -) +from django.template import RequestContext from django.urls import reverse, reverse_lazy from django.utils.html import mark_safe from django.utils.translation import ugettext_lazy as _, ungettext @@ -15,8 +12,6 @@ from mayan.apps.common.generics import ( AddRemoveView, ConfirmView, FormView, SingleObjectCreateView, SingleObjectDeleteView, SingleObjectEditView, SingleObjectListView ) -from mayan.apps.common.http import URL -from mayan.apps.common.mixins import ExternalObjectMixin from mayan.apps.documents.events import event_document_type_edited from mayan.apps.documents.models import Document, DocumentType from mayan.apps.documents.permissions import (