misc: make |length return the filename length (#46748) #587

Merged
fpeters merged 1 commits from wip/46748-length-on-file into main 2023-09-04 09:25:16 +02:00
2 changed files with 8 additions and 0 deletions

View File

@ -209,6 +209,11 @@ def test_file_field(pub, formdef):
assert substvars.get('form_var_foo_url').endswith('/foobar/1/download?f=0')
assert isinstance(substvars.get('form_var_foo_raw'), Upload)
pub.substitutions.feed(formdata)
context = pub.substitutions.get_context_variables(mode='lazy')
tmpl = Template('{{form_var_foo|length}}')
assert tmpl.render(context) == '8'
formdata.data = {'0': None}
substvars = formdata.get_substitution_variables()
assert isinstance(substvars['form_var_foo'], NoneFieldVar)

View File

@ -1605,6 +1605,9 @@ class LazyFieldVarFile(LazyFieldVar):
def file_size(self):
return self.raw.get_file_size() if self.raw else None
def __len__(self):
return len(self.raw.base_filename) if self.raw and self.raw.base_filename else 0
class LazyBlockDataVar(LazyFormDataVar):
def __init__(