Projet

Général

Profil

0001-misc-add-rename_file-filter-51484.patch

Frédéric Péters, 19 août 2021 10:14

Télécharger (3,25 ko)

Voir les différences:

Subject: [PATCH] misc: add |rename_file filter (#51484)

 tests/test_workflows.py           | 40 +++++++++++++++++++++++++++++++
 wcs/qommon/templatetags/qommon.py | 15 ++++++++++++
 2 files changed, 55 insertions(+)
tests/test_workflows.py
4815 4815
    assert b'JFIF' in formdata.data['bo1'].get_content()
4816 4816
    assert b'<exif:XResolution>' not in formdata.data['bo1'].get_content()
4817 4817

  
4818
    # check |rename_file filter
4819
    formdata = formdef.data_class()()
4820
    formdata.data = {'00': upload}
4821
    formdata.just_created()
4822
    formdata.store()
4823

  
4824
    two_pubs.substitutions.feed(formdata)
4825
    item.fields = [{'field_id': 'bo1', 'value': '{{form_var_file|rename_file:"foobar.jpeg"}}'}]
4826
    item.perform(formdata)
4827

  
4828
    assert formdata.data['bo1'].base_filename == 'foobar.jpeg'
4829
    assert formdata.data['bo1'].content_type == 'image/jpeg'
4830
    assert formdata.data['bo1'].get_content() == image_with_gps_data
4831

  
4832
    formdata = formdef.data_class()()
4833
    formdata.data = {'00': upload}
4834
    formdata.just_created()
4835
    formdata.store()
4836

  
4837
    two_pubs.substitutions.feed(formdata)
4838
    item.fields = [{'field_id': 'bo1', 'value': '{{form_var_file|rename_file:"foobar.$ext"}}'}]
4839
    item.perform(formdata)
4840

  
4841
    assert formdata.data['bo1'].base_filename == 'foobar.jpeg'
4842
    assert formdata.data['bo1'].content_type == 'image/jpeg'
4843
    assert formdata.data['bo1'].get_content() == image_with_gps_data
4844

  
4845
    # check |rename_file with invalid input
4846
    formdata = formdef.data_class()()
4847
    formdata.data = {'00': upload}
4848
    formdata.just_created()
4849
    formdata.store()
4850

  
4851
    two_pubs.substitutions.feed(formdata)
4852

  
4853
    item.fields = [{'field_id': 'bo1', 'value': '{{"xxx"|rename_file:"foobar.jpeg"}}'}]
4854
    item.perform(formdata)
4855

  
4856
    assert 'bo1' not in formdata.data
4857

  
4818 4858
    # check with a template string, into a string field
4819 4859
    two_pubs.substitutions.feed(formdata)
4820 4860
    item.fields = [{'field_id': 'bo2', 'value': '{{form_var_file}}'}]
wcs/qommon/templatetags/qommon.py
18 18
import hashlib
19 19
import io
20 20
import math
21
import os
21 22
import random
22 23
import string
23 24
import unicodedata
......
820 821
    return unlazy(value).strip_metadata()
821 822

  
822 823

  
824
@register.filter
825
def rename_file(value, new_name):
826
    from wcs.fields import FileField
827

  
828
    file_object = FileField.convert_value_from_anything(value)
829
    if not file_object:
830
        return None
831
    if new_name.endswith('.$ext'):
832
        new_name = os.path.splitext(new_name)[0] + os.path.splitext(file_object.base_filename)[1]
833
    file_object.orig_filename = new_name
834
    file_object.base_filename = new_name
835
    return file_object
836

  
837

  
823 838
@register.filter(name='list')
824 839
def list_(value):
825 840
    # turn a generator into a list
826
-