diff --git a/mayan/apps/control_codes/apps.py b/mayan/apps/control_codes/apps.py index 07ac2e7b21..45554e886a 100644 --- a/mayan/apps/control_codes/apps.py +++ b/mayan/apps/control_codes/apps.py @@ -28,7 +28,10 @@ from .handlers import ( from .links import ( link_control_sheet_create, link_control_sheet_delete, link_control_sheet_edit, link_control_sheet_list, - link_control_sheet_preview + link_control_sheet_preview, + + link_control_sheet_code_delete, link_control_sheet_code_edit, + link_control_sheet_code_list ) from .methods import method_document_submit, method_document_version_submit from .permissions import ( @@ -87,6 +90,19 @@ class ControlCodesApp(MayanAppConfig): source=ControlSheet ) + SourceColumn( + attribute='get_label', is_identifier=True,# is_sortable=True, + source=ControlSheetCode + ) + SourceColumn( + attribute='order', is_sortable=True, + source=ControlSheetCode + ) + SourceColumn( + attribute='arguments', + source=ControlSheetCode + ) + menu_list_facet.bind_links( links=( link_acl_list, #link_events_for_object, @@ -95,16 +111,23 @@ class ControlCodesApp(MayanAppConfig): ) menu_list_facet.bind_links( links=( - link_control_sheet_preview, + link_control_sheet_code_list, ), sources=(ControlSheet,) ) menu_object.bind_links( links=( link_control_sheet_edit, link_control_sheet_delete, + link_control_sheet_preview, ), sources=(ControlSheet,) ) + menu_object.bind_links( + links=( + link_control_sheet_code_delete, link_control_sheet_code_edit, + ), + sources=(ControlSheetCode,) + ) menu_secondary.bind_links( links=(link_control_sheet_list, link_control_sheet_create), sources=( diff --git a/mayan/apps/control_codes/forms.py b/mayan/apps/control_codes/forms.py index db4b88ab5a..12a31dad7d 100644 --- a/mayan/apps/control_codes/forms.py +++ b/mayan/apps/control_codes/forms.py @@ -13,100 +13,46 @@ from .classes import ControlCode from .models import ControlSheet, ControlSheetCode -class ControlCodeClassSelectionForm(forms.Form): +class ControlSheetCodeClassSelectionForm(forms.Form): control_code = forms.ChoiceField( choices=(), help_text=_('Available control codes.'), label=_('Control code'), ) def __init__(self, *args, **kwargs): - super(ControlCodeClassSelectionForm, self).__init__(*args, **kwargs) + super(ControlSheetCodeClassSelectionForm, self).__init__(*args, **kwargs) self.fields[ 'control_code' ].choices = ControlCode.get_choices() -""" -class ControlSheetDetailForm(DetailForm): - ''' - def __init__(self, *args, **kwargs): - document = kwargs['instance'] - extra_fields = [ - { - 'label': _('Date added'), - 'field': 'date_added', - 'widget': forms.widgets.DateTimeInput - }, - {'label': _('UUID'), 'field': 'uuid'}, - { - 'label': _('Language'), - 'field': lambda x: get_language(language_code=document.language) - }, - ] - - if document.latest_version: - extra_fields += ( - { - 'label': _('File mimetype'), - 'field': lambda x: document.file_mimetype or _('None') - }, - { - 'label': _('File encoding'), - 'field': lambda x: document.file_mime_encoding or _( - 'None' - ) - }, - { - 'label': _('File size'), - 'field': lambda document: filesizeformat( - document.size - ) if document.size else '-' - }, - {'label': _('Exists in storage'), 'field': 'exists'}, - { - 'label': _('File path in storage'), - 'field': 'latest_version.file' - }, - {'label': _('Checksum'), 'field': 'checksum'}, - {'label': _('Pages'), 'field': 'page_count'}, - ) - - kwargs['extra_fields'] = extra_fields - super(DocumentPropertiesForm, self).__init__(*args, **kwargs) - ''' - class Meta: - fields = ('label', 'codes') - model = ControlSheet - -""" - -""" class ControlSheetCodeForm(forms.ModelForm): class Meta: fields = ('arguments', 'order') - model = LayerTransformation + model = ControlSheetCode def __init__(self, *args, **kwargs): - transformation_name = kwargs.pop('transformation_name', None) - super(LayerTransformationForm, self).__init__(*args, **kwargs) + #control_code_name = kwargs.pop('control_code_name', None) + super(ControlSheetCodeForm, self).__init__(*args, **kwargs) - if not transformation_name: - # Get the template name when the transformation is being edited. + """ + if not control_code_name: + # Get the template name when the control_code is being edited. template_name = getattr( - self.instance.get_transformation_class(), 'template_name', + self.instance.get_control_code_class(), 'template_name', None ) else: - # Get the template name when the transformation is being created + # Get the template name when the control_code is being created template_name = getattr( - BaseTransformation.get(name=transformation_name), + BaseTransformation.get(name=control_code_name), 'template_name', None ) - - if template_name: - self.fields['arguments'].widget.attrs['class'] = 'hidden' - self.fields['order'].widget.attrs['class'] = 'hidden' + """ + #if template_name: + # self.fields['arguments'].widget.attrs['class'] = 'hidden' + # self.fields['order'].widget.attrs['class'] = 'hidden' def clean(self): try: @@ -117,4 +63,3 @@ class ControlSheetCodeForm(forms.ModelForm): '"%s" not a valid entry.' ) % self.cleaned_data['arguments'] ) -""" diff --git a/mayan/apps/control_codes/icons.py b/mayan/apps/control_codes/icons.py index 438ef6da84..75b8c1ae03 100644 --- a/mayan/apps/control_codes/icons.py +++ b/mayan/apps/control_codes/icons.py @@ -12,3 +12,12 @@ icon_control_code_delete = Icon(driver_name='fontawesome', symbol='times') icon_control_code_edit = Icon(driver_name='fontawesome', symbol='pencil-alt') icon_control_code_list = Icon(driver_name='fontawesome', symbol='qrcode') icon_control_code_preview = Icon(driver_name='fontawesome', symbol='print') +icon_control_sheet_code_delete = Icon( + driver_name='fontawesome', symbol='times' +) +icon_control_sheet_code_edit = Icon( + driver_name='fontawesome', symbol='pencil-alt' +) +icon_control_sheet_code_list = Icon( + driver_name='fontawesome', symbol='qrcode' +) diff --git a/mayan/apps/control_codes/links.py b/mayan/apps/control_codes/links.py index 65e60e65a7..136ebc7048 100644 --- a/mayan/apps/control_codes/links.py +++ b/mayan/apps/control_codes/links.py @@ -38,3 +38,27 @@ link_control_sheet_preview = Link( text=_('Preview'), permissions=(permission_control_sheet_view,), view='control_codes:control_sheet_preview' ) + +link_control_sheet_code_delete = Link( + icon_class_path='mayan.apps.control_codes.icons.icon_control_sheet_code_delete', + kwargs={ + 'control_sheet_id': 'control_sheet.pk', + 'control_sheet_code_id': 'resolved_object.pk' + }, tags='dangerous', text=_('Delete'), + permissions=(permission_control_sheet_delete,), + view='control_codes:control_sheet_code_delete' +) +link_control_sheet_code_edit = Link( + icon_class_path='mayan.apps.control_codes.icons.icon_control_sheet_code_edit', + kwargs={ + 'control_sheet_id': 'control_sheet.pk', + 'control_sheet_code_id': 'resolved_object.pk' + }, text=_('Edit'), permissions=(permission_control_sheet_edit,), + view='control_codes:control_sheet_code_edit' +) +link_control_sheet_code_list = Link( + icon_class_path='mayan.apps.control_codes.icons.icon_control_sheet_code_list', + kwargs={'control_sheet_id': 'resolved_object.pk'}, + text=_('Codes'), permissions=(permission_control_sheet_view,), + view='control_codes:control_sheet_code_list' +) diff --git a/mayan/apps/control_codes/models.py b/mayan/apps/control_codes/models.py index c4e599cba2..1bd98ab943 100644 --- a/mayan/apps/control_codes/models.py +++ b/mayan/apps/control_codes/models.py @@ -51,6 +51,7 @@ class ControlSheet(models.Model): verbose_name_plural = _('Control sheets') +@python_2_unicode_compatible class ControlSheetCode(models.Model): control_sheet = models.ForeignKey( on_delete=models.CASCADE, related_name='codes', to=ControlSheet, @@ -58,7 +59,7 @@ class ControlSheetCode(models.Model): ) order = models.PositiveIntegerField( blank=True, db_index=True, default=0, help_text=_( - 'Order in which the transformations will be executed. If left ' + 'Order in which the control codes will be interpreted. If left ' 'unchanged, an automatic order value will be assigned.' ), verbose_name=_('Order') ) @@ -68,7 +69,7 @@ class ControlSheetCode(models.Model): ) arguments = models.TextField( blank=True, help_text=_( - 'Enter the arguments for the control code as a YAML ' + 'The arguments for the control code as a YAML ' 'dictionary.' ), validators=[YAMLValidator()], verbose_name=_('Arguments') ) @@ -79,6 +80,9 @@ class ControlSheetCode(models.Model): verbose_name = _('Control sheet code') verbose_name_plural = _('Control sheet codes') + def __str__(self): + return force_text(self.get_label()) + @cached_property def cache(self): Cache = apps.get_model(app_label='file_caching', model_name='Cache') @@ -152,6 +156,10 @@ class ControlSheetCode(models.Model): ) ).hexdigest() + def get_label(self): + return force_text(self.get_control_code_class().label) + get_label.short_description = _('Label') + def render(self): return self.get_control_code_instance().get_image(order=self.order) diff --git a/mayan/apps/control_codes/templates/control_codes/control_sheet_print.html b/mayan/apps/control_codes/templates/control_codes/control_sheet_print.html index d8f8b1205c..2c9b48befa 100644 --- a/mayan/apps/control_codes/templates/control_codes/control_sheet_print.html +++ b/mayan/apps/control_codes/templates/control_codes/control_sheet_print.html @@ -1,7 +1,5 @@ {% extends 'appearance/base_plain.html' %} -{% load documents_tags %} - {% block title %}{{ title }}{% endblock title %} {% block content_plain %} @@ -11,20 +9,19 @@ max-width: 100%; height: auto; } -.list-inline { - padding-left: 0; - list-style: none; - margin-left: -5px; -} -.text-center { - text-align: center; -} - -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} + .list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; + } + .text-center { + text-align: center; + } + .list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; + }
{{ code.get_display }}
+{{ code.get_label }}