1.1 --- a/examples/Common/PEP241/Resources/pep241_template.xhtml Sun Dec 26 18:48:11 2004 +0000
1.2 +++ b/examples/Common/PEP241/Resources/pep241_template.xhtml Mon Dec 27 15:19:37 2004 +0000
1.3 @@ -169,6 +169,7 @@
1.4 <th></th>
1.5 <td>
1.6 <input type="submit" value="Update!" name="update" />
1.7 + <input type="submit" value="Export!" name="export" />
1.8 <input type="submit" value="Finish!" name="finish" /></td>
1.9 </tr>
1.10 </tbody>
2.1 --- a/examples/Common/PEP241/__init__.py Sun Dec 26 18:48:11 2004 +0000
2.2 +++ b/examples/Common/PEP241/__init__.py Mon Dec 27 15:19:37 2004 +0000
2.3 @@ -53,14 +53,17 @@
2.4
2.5 global XSLForms # NOTE: Strangely required to avoid UnboundLocalError!
2.6 method = trans.get_request_method()
2.7 +
2.8 + # Only obtain field information according to the stated method.
2.9 +
2.10 if method == "GET":
2.11 fields = XSLForms.Fields.Fields(encoding="iso-8859-1", values_are_lists=1)
2.12 - items = trans.get_fields_from_path().items()
2.13 - documents = fields.make_documents(items)
2.14 + parameters = trans.get_fields_from_path()
2.15 + documents = fields.make_documents(parameters.items())
2.16 elif method == "POST":
2.17 fields = XSLForms.Fields.Fields(encoding=self.encoding, values_are_lists=1)
2.18 - items = trans.get_fields_from_body(self.encoding).items()
2.19 - documents = fields.make_documents(items)
2.20 + parameters = trans.get_fields_from_body(self.encoding)
2.21 + documents = fields.make_documents(parameters.items())
2.22 else:
2.23 trans.set_response_code(405)
2.24 raise WebStack.Generic.EndOfResponse
2.25 @@ -72,7 +75,9 @@
2.26 else:
2.27 package = fields.new_instance("package")
2.28
2.29 - selectors = fields.get_selectors(items, documents)
2.30 + # Add and remove elements according to the selectors found.
2.31 +
2.32 + selectors = fields.get_selectors(parameters.items(), documents)
2.33 add_elements(selectors.get("add_platform"), "platform", "platforms")
2.34 remove_elements(selectors.get("remove_platform"))
2.35 add_elements(selectors.get("add_supported_platform"), "supported-platform", "supported-platforms")
2.36 @@ -84,33 +89,45 @@
2.37 add_elements(selectors.get("add_dependency"), "dependency", "dependencies")
2.38 remove_elements(selectors.get("remove_dependency"))
2.39
2.40 - # Transform, adding enumerations/ranges.
2.41 + # Send a response according to certain parameters.
2.42 + # When exported, an XML version of the data is returned.
2.43 +
2.44 + if parameters.has_key("export"):
2.45 + trans.set_content_type(WebStack.Generic.ContentType("text/xml", self.encoding))
2.46 + libxml2dom.toStream(package, trans.get_response_stream(), trans.get_response_stream_encoding())
2.47
2.48 - categories_xsl = os.path.join(self.resource_dir, "pep241_categories.xsl")
2.49 - categories_xml = os.path.join(self.resource_dir, "pep241_categories.xml")
2.50 - proc = XSLOutput.Processor([categories_xsl], {"categories" : categories_xml})
2.51 - package = proc.get_result(package)
2.52 + # When not exported, the data is transformed to produce a normal Web
2.53 + # page.
2.54 +
2.55 + else:
2.56
2.57 - # Start the response.
2.58 + # Transform, adding enumerations/ranges.
2.59
2.60 - trans.set_content_type(WebStack.Generic.ContentType("text/html", self.encoding))
2.61 -
2.62 - # Ensure that an output stylesheet exists.
2.63 + categories_xsl = os.path.join(self.resource_dir, "pep241_categories.xsl")
2.64 + categories_xml = os.path.join(self.resource_dir, "pep241_categories.xml")
2.65 + proc = XSLOutput.Processor([categories_xsl], {"categories" : categories_xml})
2.66 + package = proc.get_result(package)
2.67
2.68 - trans_xsl = os.path.join(self.resource_dir, "pep241_output.xsl")
2.69 - template_xml = os.path.join(self.resource_dir, "pep241_template.xhtml")
2.70 + # Start the response.
2.71 +
2.72 + trans.set_content_type(WebStack.Generic.ContentType("text/html", self.encoding))
2.73
2.74 - if not os.path.exists(trans_xsl) or \
2.75 - os.path.getmtime(trans_xsl) < os.path.getmtime(template_xml):
2.76 + # Ensure that an output stylesheet exists.
2.77
2.78 - import XSLForms.Prepare
2.79 + trans_xsl = os.path.join(self.resource_dir, "pep241_output.xsl")
2.80 template_xml = os.path.join(self.resource_dir, "pep241_template.xhtml")
2.81 - XSLForms.Prepare.make_stylesheet(template_xml, trans_xsl)
2.82
2.83 - # Complete the response.
2.84 + if not os.path.exists(trans_xsl) or \
2.85 + os.path.getmtime(trans_xsl) < os.path.getmtime(template_xml):
2.86
2.87 - proc = XSLOutput.Processor([trans_xsl])
2.88 - proc.send_output(trans.get_response_stream(), trans.get_response_stream_encoding(),
2.89 - package)
2.90 + import XSLForms.Prepare
2.91 + template_xml = os.path.join(self.resource_dir, "pep241_template.xhtml")
2.92 + XSLForms.Prepare.make_stylesheet(template_xml, trans_xsl)
2.93 +
2.94 + # Complete the response.
2.95 +
2.96 + proc = XSLOutput.Processor([trans_xsl])
2.97 + proc.send_output(trans.get_response_stream(), trans.get_response_stream_encoding(),
2.98 + package)
2.99
2.100 # vim: tabstop=4 expandtab shiftwidth=4