misc: add |rename_file filter (#51484)
This commit is contained in:
parent
112ff0a34d
commit
fbda352421
|
@ -4815,6 +4815,46 @@ def test_set_backoffice_field_file(http_requests, two_pubs):
|
|||
assert b'JFIF' in formdata.data['bo1'].get_content()
|
||||
assert b'<exif:XResolution>' not in formdata.data['bo1'].get_content()
|
||||
|
||||
# check |rename_file filter
|
||||
formdata = formdef.data_class()()
|
||||
formdata.data = {'00': upload}
|
||||
formdata.just_created()
|
||||
formdata.store()
|
||||
|
||||
two_pubs.substitutions.feed(formdata)
|
||||
item.fields = [{'field_id': 'bo1', 'value': '{{form_var_file|rename_file:"foobar.jpeg"}}'}]
|
||||
item.perform(formdata)
|
||||
|
||||
assert formdata.data['bo1'].base_filename == 'foobar.jpeg'
|
||||
assert formdata.data['bo1'].content_type == 'image/jpeg'
|
||||
assert formdata.data['bo1'].get_content() == image_with_gps_data
|
||||
|
||||
formdata = formdef.data_class()()
|
||||
formdata.data = {'00': upload}
|
||||
formdata.just_created()
|
||||
formdata.store()
|
||||
|
||||
two_pubs.substitutions.feed(formdata)
|
||||
item.fields = [{'field_id': 'bo1', 'value': '{{form_var_file|rename_file:"foobar.$ext"}}'}]
|
||||
item.perform(formdata)
|
||||
|
||||
assert formdata.data['bo1'].base_filename == 'foobar.jpeg'
|
||||
assert formdata.data['bo1'].content_type == 'image/jpeg'
|
||||
assert formdata.data['bo1'].get_content() == image_with_gps_data
|
||||
|
||||
# check |rename_file with invalid input
|
||||
formdata = formdef.data_class()()
|
||||
formdata.data = {'00': upload}
|
||||
formdata.just_created()
|
||||
formdata.store()
|
||||
|
||||
two_pubs.substitutions.feed(formdata)
|
||||
|
||||
item.fields = [{'field_id': 'bo1', 'value': '{{"xxx"|rename_file:"foobar.jpeg"}}'}]
|
||||
item.perform(formdata)
|
||||
|
||||
assert 'bo1' not in formdata.data
|
||||
|
||||
# check with a template string, into a string field
|
||||
two_pubs.substitutions.feed(formdata)
|
||||
item.fields = [{'field_id': 'bo2', 'value': '{{form_var_file}}'}]
|
||||
|
|
|
@ -18,6 +18,7 @@ import datetime
|
|||
import hashlib
|
||||
import io
|
||||
import math
|
||||
import os
|
||||
import random
|
||||
import string
|
||||
import unicodedata
|
||||
|
@ -820,6 +821,20 @@ def strip_metadata(value):
|
|||
return unlazy(value).strip_metadata()
|
||||
|
||||
|
||||
@register.filter
|
||||
def rename_file(value, new_name):
|
||||
from wcs.fields import FileField
|
||||
|
||||
file_object = FileField.convert_value_from_anything(value)
|
||||
if not file_object:
|
||||
return None
|
||||
if new_name.endswith('.$ext'):
|
||||
new_name = os.path.splitext(new_name)[0] + os.path.splitext(file_object.base_filename)[1]
|
||||
file_object.orig_filename = new_name
|
||||
file_object.base_filename = new_name
|
||||
return file_object
|
||||
|
||||
|
||||
@register.filter(name='list')
|
||||
def list_(value):
|
||||
# turn a generator into a list
|
||||
|
|
Loading…
Reference in New Issue