# HG changeset patch # User paulb # Date 1104160777 0 # Node ID d8f5b795fb321c5a7ec5ad8c23779fb6c50f51b2 # Parent 0757f68e09ab0b8bca2ff774970560230f140373 [project @ 2004-12-27 15:19:35 by paulb] Added a simple export feature. diff -r 0757f68e09ab -r d8f5b795fb32 examples/Common/PEP241/Resources/pep241_template.xhtml --- a/examples/Common/PEP241/Resources/pep241_template.xhtml Sun Dec 26 18:48:11 2004 +0000 +++ b/examples/Common/PEP241/Resources/pep241_template.xhtml Mon Dec 27 15:19:37 2004 +0000 @@ -169,6 +169,7 @@ + diff -r 0757f68e09ab -r d8f5b795fb32 examples/Common/PEP241/__init__.py --- a/examples/Common/PEP241/__init__.py Sun Dec 26 18:48:11 2004 +0000 +++ b/examples/Common/PEP241/__init__.py Mon Dec 27 15:19:37 2004 +0000 @@ -53,14 +53,17 @@ global XSLForms # NOTE: Strangely required to avoid UnboundLocalError! method = trans.get_request_method() + + # Only obtain field information according to the stated method. + if method == "GET": fields = XSLForms.Fields.Fields(encoding="iso-8859-1", values_are_lists=1) - items = trans.get_fields_from_path().items() - documents = fields.make_documents(items) + parameters = trans.get_fields_from_path() + documents = fields.make_documents(parameters.items()) elif method == "POST": fields = XSLForms.Fields.Fields(encoding=self.encoding, values_are_lists=1) - items = trans.get_fields_from_body(self.encoding).items() - documents = fields.make_documents(items) + parameters = trans.get_fields_from_body(self.encoding) + documents = fields.make_documents(parameters.items()) else: trans.set_response_code(405) raise WebStack.Generic.EndOfResponse @@ -72,7 +75,9 @@ else: package = fields.new_instance("package") - selectors = fields.get_selectors(items, documents) + # Add and remove elements according to the selectors found. + + selectors = fields.get_selectors(parameters.items(), documents) add_elements(selectors.get("add_platform"), "platform", "platforms") remove_elements(selectors.get("remove_platform")) add_elements(selectors.get("add_supported_platform"), "supported-platform", "supported-platforms") @@ -84,33 +89,45 @@ add_elements(selectors.get("add_dependency"), "dependency", "dependencies") remove_elements(selectors.get("remove_dependency")) - # Transform, adding enumerations/ranges. + # Send a response according to certain parameters. + # When exported, an XML version of the data is returned. + + if parameters.has_key("export"): + trans.set_content_type(WebStack.Generic.ContentType("text/xml", self.encoding)) + libxml2dom.toStream(package, trans.get_response_stream(), trans.get_response_stream_encoding()) - categories_xsl = os.path.join(self.resource_dir, "pep241_categories.xsl") - categories_xml = os.path.join(self.resource_dir, "pep241_categories.xml") - proc = XSLOutput.Processor([categories_xsl], {"categories" : categories_xml}) - package = proc.get_result(package) + # When not exported, the data is transformed to produce a normal Web + # page. + + else: - # Start the response. + # Transform, adding enumerations/ranges. - trans.set_content_type(WebStack.Generic.ContentType("text/html", self.encoding)) - - # Ensure that an output stylesheet exists. + categories_xsl = os.path.join(self.resource_dir, "pep241_categories.xsl") + categories_xml = os.path.join(self.resource_dir, "pep241_categories.xml") + proc = XSLOutput.Processor([categories_xsl], {"categories" : categories_xml}) + package = proc.get_result(package) - trans_xsl = os.path.join(self.resource_dir, "pep241_output.xsl") - template_xml = os.path.join(self.resource_dir, "pep241_template.xhtml") + # Start the response. + + trans.set_content_type(WebStack.Generic.ContentType("text/html", self.encoding)) - if not os.path.exists(trans_xsl) or \ - os.path.getmtime(trans_xsl) < os.path.getmtime(template_xml): + # Ensure that an output stylesheet exists. - import XSLForms.Prepare + trans_xsl = os.path.join(self.resource_dir, "pep241_output.xsl") template_xml = os.path.join(self.resource_dir, "pep241_template.xhtml") - XSLForms.Prepare.make_stylesheet(template_xml, trans_xsl) - # Complete the response. + if not os.path.exists(trans_xsl) or \ + os.path.getmtime(trans_xsl) < os.path.getmtime(template_xml): - proc = XSLOutput.Processor([trans_xsl]) - proc.send_output(trans.get_response_stream(), trans.get_response_stream_encoding(), - package) + import XSLForms.Prepare + template_xml = os.path.join(self.resource_dir, "pep241_template.xhtml") + XSLForms.Prepare.make_stylesheet(template_xml, trans_xsl) + + # Complete the response. + + proc = XSLOutput.Processor([trans_xsl]) + proc.send_output(trans.get_response_stream(), trans.get_response_stream_encoding(), + package) # vim: tabstop=4 expandtab shiftwidth=4