forms: factor out file attachment lookup (#8031)
This commit is contained in:
parent
968c28799f
commit
9a4dba6f0f
|
@ -32,13 +32,26 @@ from qommon import errors
|
|||
|
||||
class FileDirectory(Directory):
|
||||
_q_exports = []
|
||||
_lookup_methods = ['lookup_file_field']
|
||||
|
||||
def __init__(self, formdata, field_no):
|
||||
def __init__(self, formdata, reference):
|
||||
self.formdata = formdata
|
||||
self.field_no = field_no
|
||||
self.reference = reference
|
||||
|
||||
def lookup_file_field(self, filename):
|
||||
if self.reference in self.formdata.data:
|
||||
return self.formdata.data[self.reference]
|
||||
|
||||
def _q_lookup(self, component):
|
||||
file = self.formdata.data[self.field_no]
|
||||
upload = None
|
||||
for lookup_method_name in self._lookup_methods:
|
||||
lookup_method = getattr(self, lookup_method_name)
|
||||
file = lookup_method(filename=component)
|
||||
if file:
|
||||
break
|
||||
else:
|
||||
# no such file
|
||||
raise errors.TraversalError()
|
||||
|
||||
if component and component != file.base_filename:
|
||||
raise errors.TraversalError()
|
||||
|
@ -67,7 +80,7 @@ class FilesDirectory(Directory):
|
|||
self.formdata = formdata
|
||||
|
||||
def _q_lookup(self, component):
|
||||
return FileDirectory(self.formdata, component)
|
||||
return FileDirectory(self.formdata, reference=component)
|
||||
|
||||
|
||||
class FormStatusPage(Directory):
|
||||
|
|
Loading…
Reference in New Issue