1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/parsers/formdata.py Thu Nov 07 23:26:32 2013 +0100
1.3 @@ -0,0 +1,68 @@
1.4 +# -*- coding: iso-8859-1 -*-
1.5 +"""
1.6 + MoinMoin - formdata (MoinForms)
1.7 +
1.8 + @copyright: 2013 by Paul Boddie <paul@boddie.org.uk>
1.9 + @license: GNU GPL (v2 or later), see COPYING.txt for details.
1.10 +"""
1.11 +
1.12 +from MoinMoin.Page import Page
1.13 +from MoinForms import loadFieldsFromString
1.14 +from MoinSupport import *
1.15 +
1.16 +Dependencies = ["pages"]
1.17 +
1.18 +# Parser support.
1.19 +
1.20 +class Parser:
1.21 +
1.22 + "Manipulate and display forms."
1.23 +
1.24 + Dependencies = Dependencies
1.25 + extensions = []
1.26 +
1.27 + def __init__(self, raw, request, **kw):
1.28 +
1.29 + """
1.30 + Initialise the parser with the given 'raw' data, 'request' and any
1.31 + keyword arguments that may have been supplied.
1.32 + """
1.33 +
1.34 + self.raw = raw
1.35 + self.request = request
1.36 + self.attrs = parseAttributes(kw.get("format_args", ""), False)
1.37 +
1.38 + def format(self, fmt, write=None):
1.39 +
1.40 + """
1.41 + Format the form data using the given formatter 'fmt'. If the 'write'
1.42 + parameter is specified, use it to write output; otherwise, write output
1.43 + using the request.
1.44 +
1.45 + Currently, this just writes a link to the form.
1.46 + """
1.47 +
1.48 + request = self.request
1.49 + page = request.page
1.50 + _ = fmt._
1.51 +
1.52 + number = page.page_name.rsplit("/", 1)[1]
1.53 +
1.54 + # Obtain the details of the form data.
1.55 +
1.56 + headers, data = loadFieldsFromString(self.raw)
1.57 + headers = dict(headers)
1.58 +
1.59 + form_pagename = headers.get("Form-Page")
1.60 + fragment = headers.get("Form-Fragment")
1.61 +
1.62 + write = write or request.write
1.63 +
1.64 + if form_pagename and number.isdigit():
1.65 + form_page = Page(request, form_pagename)
1.66 + query = {"fragment" : fragment, "load" : number, "action" : "MoinFormHandler"}
1.67 + write(linkToPage(request, form_page, _("Follow this link to view the form."), query, fragment))
1.68 + else:
1.69 + write(fmt.text(_("The form data does not specify the original form.")))
1.70 +
1.71 +# vim: tabstop=4 expandtab shiftwidth=4