1.1 --- a/examples/Common/PEP241/__init__.py Sun Dec 26 18:48:11 2004 +0000
1.2 +++ b/examples/Common/PEP241/__init__.py Mon Dec 27 15:19:37 2004 +0000
1.3 @@ -53,14 +53,17 @@
1.4
1.5 global XSLForms # NOTE: Strangely required to avoid UnboundLocalError!
1.6 method = trans.get_request_method()
1.7 +
1.8 + # Only obtain field information according to the stated method.
1.9 +
1.10 if method == "GET":
1.11 fields = XSLForms.Fields.Fields(encoding="iso-8859-1", values_are_lists=1)
1.12 - items = trans.get_fields_from_path().items()
1.13 - documents = fields.make_documents(items)
1.14 + parameters = trans.get_fields_from_path()
1.15 + documents = fields.make_documents(parameters.items())
1.16 elif method == "POST":
1.17 fields = XSLForms.Fields.Fields(encoding=self.encoding, values_are_lists=1)
1.18 - items = trans.get_fields_from_body(self.encoding).items()
1.19 - documents = fields.make_documents(items)
1.20 + parameters = trans.get_fields_from_body(self.encoding)
1.21 + documents = fields.make_documents(parameters.items())
1.22 else:
1.23 trans.set_response_code(405)
1.24 raise WebStack.Generic.EndOfResponse
1.25 @@ -72,7 +75,9 @@
1.26 else:
1.27 package = fields.new_instance("package")
1.28
1.29 - selectors = fields.get_selectors(items, documents)
1.30 + # Add and remove elements according to the selectors found.
1.31 +
1.32 + selectors = fields.get_selectors(parameters.items(), documents)
1.33 add_elements(selectors.get("add_platform"), "platform", "platforms")
1.34 remove_elements(selectors.get("remove_platform"))
1.35 add_elements(selectors.get("add_supported_platform"), "supported-platform", "supported-platforms")
1.36 @@ -84,33 +89,45 @@
1.37 add_elements(selectors.get("add_dependency"), "dependency", "dependencies")
1.38 remove_elements(selectors.get("remove_dependency"))
1.39
1.40 - # Transform, adding enumerations/ranges.
1.41 + # Send a response according to certain parameters.
1.42 + # When exported, an XML version of the data is returned.
1.43 +
1.44 + if parameters.has_key("export"):
1.45 + trans.set_content_type(WebStack.Generic.ContentType("text/xml", self.encoding))
1.46 + libxml2dom.toStream(package, trans.get_response_stream(), trans.get_response_stream_encoding())
1.47
1.48 - categories_xsl = os.path.join(self.resource_dir, "pep241_categories.xsl")
1.49 - categories_xml = os.path.join(self.resource_dir, "pep241_categories.xml")
1.50 - proc = XSLOutput.Processor([categories_xsl], {"categories" : categories_xml})
1.51 - package = proc.get_result(package)
1.52 + # When not exported, the data is transformed to produce a normal Web
1.53 + # page.
1.54 +
1.55 + else:
1.56
1.57 - # Start the response.
1.58 + # Transform, adding enumerations/ranges.
1.59
1.60 - trans.set_content_type(WebStack.Generic.ContentType("text/html", self.encoding))
1.61 -
1.62 - # Ensure that an output stylesheet exists.
1.63 + categories_xsl = os.path.join(self.resource_dir, "pep241_categories.xsl")
1.64 + categories_xml = os.path.join(self.resource_dir, "pep241_categories.xml")
1.65 + proc = XSLOutput.Processor([categories_xsl], {"categories" : categories_xml})
1.66 + package = proc.get_result(package)
1.67
1.68 - trans_xsl = os.path.join(self.resource_dir, "pep241_output.xsl")
1.69 - template_xml = os.path.join(self.resource_dir, "pep241_template.xhtml")
1.70 + # Start the response.
1.71 +
1.72 + trans.set_content_type(WebStack.Generic.ContentType("text/html", self.encoding))
1.73
1.74 - if not os.path.exists(trans_xsl) or \
1.75 - os.path.getmtime(trans_xsl) < os.path.getmtime(template_xml):
1.76 + # Ensure that an output stylesheet exists.
1.77
1.78 - import XSLForms.Prepare
1.79 + trans_xsl = os.path.join(self.resource_dir, "pep241_output.xsl")
1.80 template_xml = os.path.join(self.resource_dir, "pep241_template.xhtml")
1.81 - XSLForms.Prepare.make_stylesheet(template_xml, trans_xsl)
1.82
1.83 - # Complete the response.
1.84 + if not os.path.exists(trans_xsl) or \
1.85 + os.path.getmtime(trans_xsl) < os.path.getmtime(template_xml):
1.86
1.87 - proc = XSLOutput.Processor([trans_xsl])
1.88 - proc.send_output(trans.get_response_stream(), trans.get_response_stream_encoding(),
1.89 - package)
1.90 + import XSLForms.Prepare
1.91 + template_xml = os.path.join(self.resource_dir, "pep241_template.xhtml")
1.92 + XSLForms.Prepare.make_stylesheet(template_xml, trans_xsl)
1.93 +
1.94 + # Complete the response.
1.95 +
1.96 + proc = XSLOutput.Processor([trans_xsl])
1.97 + proc.send_output(trans.get_response_stream(), trans.get_response_stream_encoding(),
1.98 + package)
1.99
1.100 # vim: tabstop=4 expandtab shiftwidth=4