Projet

Général

Profil

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

Frédéric Péters, 17 août 2021 08:42

Télécharger (2,84 ko)

Voir les différences:

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

 tests/test_workflows.py           | 27 +++++++++++++++++++++++++++
 wcs/qommon/templatetags/qommon.py | 13 +++++++++++++
 2 files changed, 40 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

  
4818 4845
    # check with a template string, into a string field
4819 4846
    two_pubs.substitutions.feed(formdata)
4820 4847
    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 new_name.endswith('.$ext'):
830
        new_name = os.path.splitext(new_name)[0] + os.path.splitext(file_object.base_filename)[1]
831
    file_object.orig_filename = new_name
832
    file_object.base_filename = new_name
833
    return file_object
834

  
835

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