From 671f6d5076e490be5db84dc5fd483bbe2d2a1ff8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 20 Aug 2015 11:18:14 +0200 Subject: [PATCH 1/4] forms: factor out file attachment lookup (#8031) --- wcs/forms/common.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/wcs/forms/common.py b/wcs/forms/common.py index 4b08703..a77d5f8 100644 --- a/wcs/forms/common.py +++ b/wcs/forms/common.py @@ -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): -- 2.5.0