1.1 --- a/examples/Common/Configurator/__init__.py Sun Nov 18 01:42:34 2007 +0000
1.2 +++ b/examples/Common/Configurator/__init__.py Sun Nov 18 01:42:50 2007 +0000
1.3 @@ -3,8 +3,8 @@
1.4 "A WebStack application for a system configurator."
1.5
1.6 import WebStack.Generic
1.7 -import XSLForms.Utils
1.8 -import XSLForms.Resources.WebResources
1.9 +from XSLForms.Resources.WebResources import \
1.10 + XSLFormsResource, input, output, resources, prepare_resources as xslforms_prepare_resources
1.11 import os
1.12
1.13 # Site map imports.
1.14 @@ -19,16 +19,16 @@
1.15
1.16 # Resource classes.
1.17
1.18 -class ConfiguratorResource(XSLForms.Resources.WebResources.XSLFormsResource):
1.19 +class ConfiguratorResource(XSLFormsResource):
1.20
1.21 "A resource providing a system configurator."
1.22
1.23 - resource_dir = os.path.join(os.path.split(__file__)[0], "Resources")
1.24 + resource_dir = resources(__file__)
1.25 template_resources = {
1.26 - "configuration" : ("config_template.xhtml", "config_output.xsl")
1.27 + "configuration" : output("config_template.xhtml")
1.28 }
1.29 init_resources = {
1.30 - "configuration" : ("config_template.xhtml", "config_input.xsl")
1.31 + "configuration" : input("config_template.xhtml")
1.32 }
1.33 transform_resources = {
1.34 "filter" : ["config_filter.xsl"]
1.35 @@ -52,97 +52,74 @@
1.36 "accessories" : ("configuration", "config_output_accessories.xsl", "accessories-node")
1.37 }
1.38
1.39 - def respond_to_form(self, trans, form):
1.40 + def select_activity(self, trans, form):
1.41 + self.set_activity(trans, "configuration")
1.42
1.43 - """
1.44 - Respond to a request having the given transaction 'trans' and the given
1.45 - 'form' information.
1.46 - """
1.47 -
1.48 - in_page_resource = self.get_in_page_resource(trans)
1.49 - parameters = form.get_parameters()
1.50 - documents = form.get_documents()
1.51 + def respond_to_input(self, trans, form):
1.52
1.53 # Creating selected elements.
1.54
1.55 selectors = form.get_selectors(create=1)
1.56
1.57 - # Ensure the presence of a document.
1.58 -
1.59 - if documents.has_key("configuration"):
1.60 - configuration = documents["configuration"]
1.61 - else:
1.62 - configuration = form.new_instance("configuration")
1.63 -
1.64 # Add and remove elements according to the selectors found.
1.65
1.66 - XSLForms.Utils.add_elements(selectors.get("add-memory-unit"), "memory-unit")
1.67 - XSLForms.Utils.remove_elements(selectors.get("remove-memory-unit"))
1.68 - XSLForms.Utils.add_elements(selectors.get("add-storage-unit"), "storage-unit")
1.69 - XSLForms.Utils.remove_elements(selectors.get("remove-storage-unit"))
1.70 - XSLForms.Utils.add_elements(selectors.get("add-hard-disk"), "hard-disk")
1.71 - XSLForms.Utils.remove_elements(selectors.get("remove-hard-disk"))
1.72 + self.add_elements(selectors.get("add-memory-unit"), "memory-unit")
1.73 + self.remove_elements(selectors.get("remove-memory-unit"))
1.74 + self.add_elements(selectors.get("add-storage-unit"), "storage-unit")
1.75 + self.remove_elements(selectors.get("remove-storage-unit"))
1.76 + self.add_elements(selectors.get("add-hard-disk"), "hard-disk")
1.77 + self.remove_elements(selectors.get("remove-hard-disk"))
1.78
1.79 # Send a response according to certain parameters.
1.80 # When exported, an XML version of the data is returned.
1.81
1.82 + parameters = form.get_parameters()
1.83 +
1.84 if parameters.has_key("export"):
1.85 trans.set_content_type(WebStack.Generic.ContentType("text/xml", encoding))
1.86 - configuration.toStream(trans.get_response_stream(), trans.get_response_stream_encoding())
1.87 + self.get_document(trans).toStream(trans.get_response_stream(), trans.get_response_stream_encoding())
1.88 + raise WebStack.Generic.EndOfResponse
1.89
1.90 - # When not exported, the data is transformed to produce a normal Web
1.91 - # page.
1.92 + def init_document(self, trans, form):
1.93
1.94 - else:
1.95 -
1.96 - # Transform, adding enumerations/ranges.
1.97 + # Transform, adding enumerations/ranges.
1.98
1.99 - init_xsl = self.prepare_initialiser("configuration")
1.100 - configuration = self.get_result([init_xsl], configuration,
1.101 - references={
1.102 - "accessories" : self.prepare_document("accessories"),
1.103 - "base-system" : self.prepare_document("base-system"),
1.104 - "cpu" : self.prepare_document("cpu"),
1.105 - "hard-disk" : self.prepare_document("hard-disk"),
1.106 - "keyboard" : self.prepare_document("keyboard"),
1.107 - "memory-unit" : self.prepare_document("memory-unit"),
1.108 - "mouse" : self.prepare_document("mouse"),
1.109 - "screen" : self.prepare_document("screen"),
1.110 - "storage-unit" : self.prepare_document("storage-unit")
1.111 - })
1.112 + XSLFormsResource.init_document(self, trans, form,
1.113 + references={
1.114 + "accessories" : self.prepare_document("accessories"),
1.115 + "base-system" : self.prepare_document("base-system"),
1.116 + "cpu" : self.prepare_document("cpu"),
1.117 + "hard-disk" : self.prepare_document("hard-disk"),
1.118 + "keyboard" : self.prepare_document("keyboard"),
1.119 + "memory-unit" : self.prepare_document("memory-unit"),
1.120 + "mouse" : self.prepare_document("mouse"),
1.121 + "screen" : self.prepare_document("screen"),
1.122 + "storage-unit" : self.prepare_document("storage-unit")
1.123 + })
1.124
1.125 - # Filter out inappropriate choices.
1.126 -
1.127 - filter_xsl_list = self.prepare_transform("filter")
1.128 - configuration = self.get_result(filter_xsl_list, configuration)
1.129 + def respond_to_document(self, trans, form):
1.130
1.131 - # Start the response.
1.132 + # Filter out inappropriate choices.
1.133
1.134 - trans.set_content_type(WebStack.Generic.ContentType("application/xhtml+xml", encoding))
1.135 -
1.136 - # Ensure that an output stylesheet exists.
1.137 + filter_xsl_list = self.prepare_transform("filter")
1.138 + self.set_document(trans, self.get_result(filter_xsl_list, self.get_document(trans)))
1.139
1.140 - if in_page_resource in self.in_page_resources.keys():
1.141 - trans_xsl = self.prepare_fragment(in_page_resource)
1.142 - stylesheet_parameters = self.prepare_parameters(parameters)
1.143 - else:
1.144 - trans_xsl = self.prepare_output("configuration")
1.145 - stylesheet_parameters = {}
1.146 + def create_output(self, trans, form):
1.147 +
1.148 + # Complete the response.
1.149 +
1.150 + stylesheet_parameters = {}
1.151
1.152 - # Complete the response.
1.153 + try:
1.154 + stylesheet_parameters["locale"] = trans.get_content_languages()[0]
1.155 + except IndexError:
1.156 + pass
1.157
1.158 - try:
1.159 - stylesheet_parameters["locale"] = trans.get_content_languages()[0]
1.160 - except IndexError:
1.161 - pass
1.162 - self.send_output(trans, [trans_xsl], configuration, stylesheet_parameters,
1.163 - references={"translations" : self.prepare_document("translations")})
1.164 -
1.165 - #from XSLTools import XSLOutput
1.166 - #import sys
1.167 - #proc = XSLOutput.Processor([trans_xsl], parameters=stylesheet_parameters,
1.168 - # references={"translations" : self.prepare_document("translations")})
1.169 - #proc.send_output(sys.stderr, "iso-8859-1", configuration)
1.170 + XSLFormsResource.create_output(self, trans, form,
1.171 + stylesheet_parameters=stylesheet_parameters,
1.172 + references={
1.173 + "translations" : self.prepare_document("translations")
1.174 + })
1.175
1.176 # Site map initialisation.
1.177
1.178 @@ -176,6 +153,6 @@
1.179
1.180 def prepare_resources():
1.181 for cls in [ConfiguratorResource]:
1.182 - XSLForms.Resources.WebResources.prepare_resources(cls)
1.183 + xslforms_prepare_resources(cls)
1.184
1.185 # vim: tabstop=4 expandtab shiftwidth=4