def describe_xml(self): input_elements = [i.describe_xml() for i in self.inputs] output_elements = [i.describe_xml() for i in self.outputs] doc = E.ProcessDescription(OWS.Identifier(self.identifier), OWS.Title(self.title)) doc.attrib[ '{http://www.opengis.net/wps/1.0.0}processVersion'] = self.version if self.store_supported == 'true': doc.attrib['storeSupported'] = self.store_supported if self.status_supported == 'true': doc.attrib['statusSupported'] = self.status_supported if self.abstract: doc.append(OWS.Abstract(self.abstract)) for m in self.metadata: doc.append(OWS.Metadata({'{http://www.w3.org/1999/xlink}title': m})) for p in self.profile: doc.append(WPS.Profile(p)) if self.wsdl: doc.append( WPS.WSDL({'{http://www.w3.org/1999/xlink}href': self.wsdl})) if input_elements: doc.append(E.DataInputs(*input_elements)) doc.append(E.ProcessOutputs(*output_elements)) return doc
def get_capabilities(self): process_elements = [p.capabilities_xml() for p in self.processes.values()] doc = WPS.Capabilities() doc.attrib['service'] = 'WPS' doc.attrib['version'] = '1.0.0' doc.attrib['{http://www.w3.org/XML/1998/namespace}lang'] = 'en-CA' doc.attrib['{http://www.w3.org/2001/XMLSchema-instance}schemaLocation'] = 'http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsDescribeProcess_response.xsd' # TODO: check Table 7 in OGC 05-007r7 doc.attrib['updateSequence'] = '1' # Service Identification service_ident_doc = OWS.ServiceIdentification( OWS.Title(config.get_config_value('wps', 'title')) ) if config.get_config_value('wps', 'abstract'): service_ident_doc.append(OWS.Abstract(config.get_config_value('wps', 'abstract'))) if config.get_config_value('wps', 'keywords'): keywords_doc = OWS.Keywords() for k in config.get_config_value('wps', 'keywords').split(','): if k: keywords_doc.append(OWS.Keyword(k)) service_ident_doc.append(keywords_doc) service_ident_doc.append(OWS.ServiceType('WPS')) for v in config.get_config_value('wps', 'version').split(','): service_ident_doc.append(OWS.ServiceTypeVersion(v)) service_ident_doc.append(OWS.Fees(config.get_config_value('wps', 'fees'))) for con in config.get_config_value('wps', 'constraints').split(','): service_ident_doc.append(OWS.AccessConstraints(con)) if config.get_config_value('wps', 'profile'): service_ident_doc.append(OWS.Profile(config.get_config_value('wps', 'profile'))) doc.append(service_ident_doc) # Service Provider service_prov_doc = OWS.ServiceProvider(OWS.ProviderName(config.get_config_value('provider', 'providerName'))) if config.get_config_value('provider', 'providerSite'): service_prov_doc.append(OWS.ProviderSite( {'{http://www.w3.org/1999/xlink}href': config.get_config_value('provider', 'providerSite')}) ) # Service Contact service_contact_doc = OWS.ServiceContact() # Add Contact information only if a name is set if config.get_config_value('provider', 'individualName'): service_contact_doc.append(OWS.IndividualName(config.get_config_value('provider', 'individualName'))) if config.get_config_value('provider', 'positionName'): service_contact_doc.append(OWS.PositionName(config.get_config_value('provider', 'positionName'))) contact_info_doc = OWS.ContactInfo() phone_doc = OWS.Phone() if config.get_config_value('provider', 'phoneVoice'): phone_doc.append(OWS.Voice(config.get_config_value('provider', 'phoneVoice'))) if config.get_config_value('provider', 'phoneFacsimile'): phone_doc.append(OWS.Facsimile(config.get_config_value('provider', 'phoneFacsimile'))) # Add Phone if not empty if len(phone_doc): contact_info_doc.append(phone_doc) address_doc = OWS.Address() if config.get_config_value('provider', 'deliveryPoint'): address_doc.append(OWS.DeliveryPoint(config.get_config_value('provider', 'deliveryPoint'))) if config.get_config_value('provider', 'city'): address_doc.append(OWS.City(config.get_config_value('provider', 'city'))) if config.get_config_value('provider', 'postalCode'): address_doc.append(OWS.PostalCode(config.get_config_value('provider', 'postalCode'))) if config.get_config_value('provider', 'country'): address_doc.append(OWS.Country(config.get_config_value('provider', 'country'))) if config.get_config_value('provider', 'electronicalMailAddress'): address_doc.append( OWS.ElectronicMailAddress(config.get_config_value('provider', 'electronicalMailAddress')) ) # Add Address if not empty if len(address_doc): contact_info_doc.append(address_doc) if config.get_config_value('provider', 'onlineResource'): contact_info_doc.append(OWS.OnlineResource( {'{http://www.w3.org/1999/xlink}href': config.get_config_value('provider', 'onlineResource')}) ) if config.get_config_value('provider', 'hoursOfService'): contact_info_doc.append(OWS.HoursOfService(config.get_config_value('provider', 'hoursOfService'))) if config.get_config_value('provider', 'contactInstructions'): contact_info_doc.append(OWS.ContactInstructions(config.get_config_value('provider', 'contactInstructions'))) # Add Contact information if not empty if len(contact_info_doc): service_contact_doc.append(contact_info_doc) if config.get_config_value('provider', 'role'): service_contact_doc.append(OWS.Role(config.get_config_value('provider', 'role'))) # Add Service Contact only if ProviderName and PositionName are set if len(service_contact_doc): service_prov_doc.append(service_contact_doc) doc.append(service_prov_doc) # Operations Metadata operations_metadata_doc = OWS.OperationsMetadata( OWS.Operation( OWS.DCP( OWS.HTTP( OWS.Get({'{http://www.w3.org/1999/xlink}href': '%s:%s%s' % ( config.get_config_value('wps', 'serveraddress'), config.get_config_value('wps', 'serverport'), '/wps?' )}), OWS.Post({'{http://www.w3.org/1999/xlink}href': '%s:%s%s' % ( config.get_config_value('wps', 'serveraddress'), config.get_config_value('wps', 'serverport'), '/wps' )}) ) ), name="GetCapabilities" ), OWS.Operation( OWS.DCP( OWS.HTTP( OWS.Get({'{http://www.w3.org/1999/xlink}href': '%s:%s%s' % ( config.get_config_value('wps', 'serveraddress'), config.get_config_value('wps', 'serverport'), '/wps?' )}), OWS.Post({'{http://www.w3.org/1999/xlink}href': '%s:%s%s' % ( config.get_config_value('wps', 'serveraddress'), config.get_config_value('wps', 'serverport'), '/wps' )}) ) ), name="DescribeProcess" ), OWS.Operation( OWS.DCP( OWS.HTTP( OWS.Get({'{http://www.w3.org/1999/xlink}href': '%s:%s%s' % ( config.get_config_value('wps', 'serveraddress'), config.get_config_value('wps', 'serverport'), '/wps?' )}), OWS.Post({'{http://www.w3.org/1999/xlink}href': '%s:%s%s' % ( config.get_config_value('wps', 'serveraddress'), config.get_config_value('wps', 'serverport'), '/wps' )}) ) ), name="Execute" ) ) doc.append(operations_metadata_doc) doc.append(WPS.ProcessOfferings(*process_elements)) languages = config.get_config_value('wps', 'lang').split(',') languages_doc = WPS.Languages( WPS.Default( OWS.Language(languages[0]) ) ) lang_supported_doc = WPS.Supported() for l in languages: lang_supported_doc.append(OWS.Language(l)) languages_doc.append(lang_supported_doc) doc.append(languages_doc) doc.append(WPS.WSDL({'{http://www.w3.org/1999/xlink}href': '%s:%s%s' % ( config.get_config_value('wps', 'serveraddress'), config.get_config_value('wps', 'serverport'), '/wps?WSDL') })) return xml_response(doc)