# HG changeset patch # User Paul Boddie # Date 1355094797 -3600 # Node ID 348ab4b571b1735eeefc0171f19e326632432a45 # Parent 1fb8b8f0f3a54b00aa9241ac9836513df75429a8 Fixed the acquisition of form details from specific regions within pages. Added any fragment identifier to each action URL. Added handling of exceptions when removing form sections. diff -r 1fb8b8f0f3a5 -r 348ab4b571b1 MoinForms.py --- a/MoinForms.py Sun Dec 09 23:47:20 2012 +0100 +++ b/MoinForms.py Mon Dec 10 00:13:17 2012 +0100 @@ -47,7 +47,7 @@ # Get the form definition. - structure = self.getFormStructure() + structure = self.getFormStructure(fields) # Without any form definition, the page is probably the wrong one. @@ -78,13 +78,12 @@ self.serialiseFields(fields, form) do_show(self.pagename, self.request) - def getFormStructure(self): + def getFormStructure(self, fields): "Return the structure of the form being handled." - form = get_form(self.request) text = Page(self.request, self.pagename).get_raw_body() - text = getFormForFragment(text, form.get("fragment", [None])[0]) + text = getFormForFragment(text, fields.get("fragment", [None])[0]) return getFormStructure(text, self.request) def validateFields(self, fields, structure): @@ -199,7 +198,10 @@ """ section, (name, index) = getSectionForPath(path, fields) - del section[name][index] + try: + del section[name][index] + except KeyError: + pass def addField(self, path, fields): @@ -648,10 +650,12 @@ queryparams.append("%s=%s" % (argname, default)) querystr = "&".join(queryparams) + fragment = attrs.get("fragment") - write(fmt.rawHTML('
' % ( + write(fmt.rawHTML('' % ( escattr(page.url(request, querystr)), - attrs.has_key("fragment") and (' id="%s"' % attrs["fragment"]) or "" + fragment and ("#%s" % escattr(fragment)) or "", + fragment and (' id="%s"' % escattr(fragment)) or "" ))) # Obtain page text for the form, incorporating subregions and applicable