forms: factor out file attachment lookup (#8031)

This commit is contained in:
Frédéric Péters 2015-08-20 11:18:14 +02:00
parent 968c28799f
commit 9a4dba6f0f
1 changed files with 17 additions and 4 deletions

View File

@ -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):