1.1 --- a/MoinForms.py Sat Feb 09 20:15:05 2013 +0100
1.2 +++ b/MoinForms.py Fri Feb 15 00:16:46 2013 +0100
1.3 @@ -19,6 +19,12 @@
1.4 form_field_regexp_str = r"<<Form(Field|Message)\((.*?)\)>>"
1.5 form_field_regexp = re.compile(form_field_regexp_str, re.DOTALL)
1.6
1.7 +class MoinFormDataError(Exception):
1.8 +
1.9 + "An exception indicating a problem with form data."
1.10 +
1.11 + pass
1.12 +
1.13 # Common action functionality.
1.14
1.15 class MoinFormHandlerAction:
1.16 @@ -64,7 +70,25 @@
1.17 else:
1.18 self.attributes, text = self.getFormForFragment(fields)
1.19 self.access_handler = self.getAccessHandler()
1.20 - fields = self.loadFields(number)
1.21 +
1.22 + # Attempt to load the form.
1.23 +
1.24 + try:
1.25 + fields = self.loadFields(number)
1.26 +
1.27 + # Absent or inaccessible forms will result in an IndexError.
1.28 +
1.29 + except IndexError:
1.30 + self.request.theme.add_msg(_("The stored data for this form cannot be accessed."), "error")
1.31 + do_show(self.pagename, self.request)
1.32 + return
1.33 +
1.34 + # Bad data will result in a MoinFormDataError.
1.35 +
1.36 + except MoinFormDataError:
1.37 + self.request.theme.add_msg(_("The stored data for this form is in the wrong format."), "error")
1.38 + do_show(self.pagename, self.request)
1.39 + return
1.40
1.41 self.unfinished(fields, form)
1.42
1.43 @@ -311,18 +335,12 @@
1.44 submission 'number'.
1.45 """
1.46
1.47 - try:
1.48 - text = store[number]
1.49 - module = parse(text)
1.50 - if checkStoredFormData(module):
1.51 - return eval(text)
1.52 -
1.53 - # NOTE: Should indicate any errors in retrieving form data.
1.54 -
1.55 - except:
1.56 - pass
1.57 -
1.58 - return {}
1.59 + text = store[number]
1.60 + module = parse(text)
1.61 + if checkStoredFormData(module):
1.62 + return eval(text)
1.63 + else:
1.64 + raise MoinFormDataError, text
1.65
1.66 def checkStoredFormData(node):
1.67