def __init__(self,wps,processes=None): """ Arguments: self wps - parent WPS instance """ Request.__init__(self,wps,processes) # # HEAD # self.templateProcessor.set("encoding", config.getConfigValue("wps","encoding")) self.templateProcessor.set("lang", self.wps.inputs["language"]) # # Processes # self.templateProcessor.set("Processes",self.processesDescription()) self.response = self.templateProcessor.__str__() return
def __init__(self, wps): """ Arguments: self wps - parent WPS instance """ Request.__init__(self, wps) # # global variables # serverName = "".join( map(lambda x: x.capitalize(), config.getConfigValue("wps", "title").split())) # self.templateProcessor.set("name",name) # self.templateProcessor.set("address",config.getConfigValue("wps","serveraddress")) serverURL = config.getConfigValue("wps", "serveraddress") # Generating a describeProcess for all processes wps2 = pywps.Pywps() wps2.inputs = { 'identifier': ['all'], 'version': '1.0.0', 'request': 'describeprocess', 'language': 'eng', 'service': 'wps' } requestDescribeProcess = DescribeProcess(wps2) describeProcessXML = requestDescribeProcess.response # Transforming the describeProcessXML into WSDL document describeProcess2WSDLXSL = open( pywps.XSLT.__path__[0] + "/describeProcess2WSDL.xsl", "r") transformerXSLT = etree.XSLT(etree.parse(describeProcess2WSDLXSL)) # Recall: serverName/serverURL parameters are XPath structures, # therefore we need '' in the string: 'http://foo/dummy' to be used by # XSLT WSDLTree = transformerXSLT(etree.parse( StringIO.StringIO(describeProcessXML)), serverName="'" + serverName + "'", serverURL="'" + serverURL + "'") # Concerting to String from tree WSDL = etree.tostring(WSDLTree) # Attention: It's not possible to set the tns namespace to the server's URL # with XSLT, since it is in the root element. The XML contains a REPLACEME string that # will be replaced only once (so the process is very efficient) WSDL = re.sub(r'REPLACEME', serverURL, WSDL, 1) self.response = WSDL return
def __init__(self,wps): """ Arguments: self wps - parent WPS instance """ Request.__init__(self,wps) # # global variables # serverName = "".join(map(lambda x: x.capitalize(),config.getConfigValue("wps","title").split())) #self.templateProcessor.set("name",name) #self.templateProcessor.set("address",config.getConfigValue("wps","serveraddress")) serverURL=config.getConfigValue("wps","serveraddress") #Generating a describeProcess for all processes wps2=pywps.Pywps() wps2.inputs={'identifier': ['all'], 'version': '1.0.0', 'request': 'describeprocess', 'language': 'eng', 'service': 'wps'} requestDescribeProcess=DescribeProcess(wps2) describeProcessXML=requestDescribeProcess.response #Transforming the describeProcessXML into WSDL document describeProcess2WSDLXSL=open(pywps.XSLT.__path__[0]+"/describeProcess2WSDL.xsl","r") transformerXSLT=etree.XSLT(etree.parse(describeProcess2WSDLXSL)) #Recall: serverName/serverURL parameters are XPath structures, therefore we need '' in the string: 'http://foo/dummy' to be used by XSLT WSDLTree=transformerXSLT(etree.parse(StringIO.StringIO(describeProcessXML)),serverName="'"+serverName+"'",serverURL="'"+serverURL+"'") #Concerting to String from tree WSDL=etree.tostring(WSDLTree) #Attention: It's not possible to set the tns namespace to the server's URL #with XSLT, since it is in the root element. The XML contains a REPLACEME string that #will be replaced only once (so the process is very efficient) WSDL=re.sub(r'REPLACEME',serverURL,WSDL,1) self.response=WSDL return
def __init__(self,wps): """ Arguments: self wps - parent WPS instance """ Request.__init__(self,wps) # # global variables # name = "".join(map(lambda x: x.capitalize(),config.getConfigValue("wps","title").split())) self.templateProcessor.set("name",name) self.templateProcessor.set("address",config.getConfigValue("wps","serveraddress")) # # Processes # #self.templateProcessor.set("Processes",self.processesDescription()) self.response = self.templateProcessor.__str__() return
def __init__(self, wps, processes=None): """ Arguments: self wps - parent WPS instance """ Request.__init__(self, wps, processes) # # HEAD # self.templateProcessor.set("encoding", config.getConfigValue("wps", "encoding")) self.templateProcessor.set("lang", self.wps.inputs["language"]) # # Processes # self.templateProcessor.set("Processes", self.processesDescription()) self.response = self.templateProcessor.__str__() return
def __init__(self,wps, processes=None): Request.__init__(self,wps,processes) self.wps = wps self.process = None # initialization self.statusTime = time.localtime() self.pid = os.getpid() self.status = None self.id = self.makeSessionId() self.outputFileName = os.path.join(config.getConfigValue("server","outputPath"),self.id+".xml") self.statusLocation = config.getConfigValue("server","outputUrl")+"/"+self.id+".xml" # rawDataOutput if len(self.wps.inputs["responseform"]["rawdataoutput"])>0: self.rawDataOutput = self.wps.inputs["responseform"]["rawdataoutput"].keys()[0] # is status required self.statusRequired = False if self.wps.inputs["responseform"]["responsedocument"].has_key("status"): if self.wps.inputs["responseform"]["responsedocument"]["status"]: self.statusRequired = True # is store response required ? self.storeRequired = False if self.wps.inputs["responseform"]["responsedocument"].has_key("storeexecuteresponse"): if self.wps.inputs["responseform"]["responsedocument"]["storeexecuteresponse"]: try: self.outputFile = open(self.outputFileName,"w") except Exception, e: traceback.print_exc(file=pywps.logFile) self.cleanEnv() raise pywps.NoApplicableCode(e.__str__()) self.storeRequired = True
def __init__(self, wps, processes=None): """ """ Request.__init__(self, wps, processes) # # ServiceIdentification # self.templateProcessor.set("encoding", config.getConfigValue("wps", "encoding")) self.templateProcessor.set("lang", self.wps.inputs["language"]) self.templateProcessor.set("servertitle", config.getConfigValue("wps", "title")) self.templateProcessor.set("serverabstract", config.getConfigValue("wps", "abstract")) keywordList = [] for keyword in config.getConfigValue("wps", "keywords").split(','): keywordList.append({'keyword': keyword.strip()}) self.templateProcessor.set("Keywords", keywordList) self.templateProcessor.set("Versions", [{'version': config.getConfigValue("wps", "version")}]) self.templateProcessor.set("fees", config.getConfigValue("wps", "fees")) self.templateProcessor.set("constraints", config.getConfigValue("wps", "constraints")) self.templateProcessor.set("url", config.getConfigValue("wps", "serveraddress")) # # ServiceProvider # self.templateProcessor.set("providername", config.getConfigValue("provider", "providerName")) self.templateProcessor.set("individualname", config.getConfigValue("provider", "individualName")) self.templateProcessor.set("positionname", config.getConfigValue("provider", "positionName")) self.templateProcessor.set("providersite", config.getConfigValue("provider", "providerSite")) # phone if config.getConfigValue("provider", "phoneVoice") or \ config.getConfigValue("provider", "phoneFacsimile"): self.templateProcessor.set("phone", 1) if config.getConfigValue("provider", "phoneVoice"): self.templateProcessor.set("phonevoice", config.getConfigValue("provider", "phoneVoice")) if config.getConfigValue("provider", "phoneFacsimile"): self.templateProcessor.set("phonefacsimile", config.getConfigValue("provider", "phoneFacsimile")) else: self.templateProcessor.set("phone", 0) # address if config.getConfigValue("provider", "deliveryPoint") or \ config.getConfigValue("provider", "city") or \ config.getConfigValue("provider", "administrativeArea") or \ config.getConfigValue("provider", "postalCode") or \ config.getConfigValue("provider", "country") or \ config.getConfigValue("provider", "electronicMailAddress"): self.templateProcessor.set("address", 1) if config.getConfigValue("provider", "deliveryPoint"): self.templateProcessor.set("deliverypoint", config.getConfigValue("provider", "deliveryPoint")) if config.getConfigValue("provider", "city"): self.templateProcessor.set("city", config.getConfigValue("provider", "city")) if config.getConfigValue("provider", "administrativeArea"): self.templateProcessor.set("administrativearea", config.getConfigValue("provider", "administrativeArea")) if config.getConfigValue("provider", "postalCode"): self.templateProcessor.set("postalcode", config.getConfigValue("provider", "postalCode")) if config.getConfigValue("provider", "country"): self.templateProcessor.set("country", config.getConfigValue("provider", "country")) if config.getConfigValue("provider", "electronicMailAddress"): self.templateProcessor.set("electronicmailaddress", config.getConfigValue("provider", "electronicMailAddress")) else: self.templateProcessor.set("address", 0) # other ContactInfo if config.getConfigValue("provider", "role"): self.templateProcessor.set("role", config.getConfigValue("provider", "role")) if config.getConfigValue("provider", "hoursofservice"): self.templateProcessor.set("hoursofservice", config.getConfigValue("provider", "hoursofservice")) if config.getConfigValue("provider", "contactinstructions"): self.templateProcessor.set("contactinstructions", config.getConfigValue("provider", "contactinstructions")) # OperationsMetadata self.templateProcessor.set("Operations", [{"operation": "GetCapabilities", "url": config.getConfigValue("wps", "serveraddress")}, {"operation": "DescribeProcess", "url": config.getConfigValue("wps", "serveraddress")}, {"operation": "Execute", "url": config.getConfigValue("wps", "serveraddress")}]) # Processes processesData = [] for process in self.getProcesses("all"): processData = {} if type(process) == types.InstanceType: process.lang.setCode(self.wps.inputs["language"]) processData["processok"] = 1 processData["identifier"] = process.identifier processData["processversion"] = process.version processData["title"] = process.i18n(process.title) if process.abstract: processData["abstract"] = process.i18n(process.abstract) if process.metadata: processData["Metadata"] = self.formatMetadata(process) if process.profile: profiles = [] if type(process.profile) == types.ListType: for profile in process.profile: profiles.append({"profile": profile}) else: profiles.append({"profile": process.profile}) processData["Profiles"] = profiles if process.wsdl: processData["wsdl"] = process.wsdl else: processData["processok"] = 0 processData["process"] = repr(process) processesData.append(processData) self.templateProcessor.set("Processes", processesData) # Language self.templateProcessor.set("defaultlanguage", pywps.DEFAULT_LANG) languages = [] for lang in self.wps.languages: languages.append({"language": lang}) self.templateProcessor.set("Languages", languages) self.response = self.templateProcessor.__str__() return
def __init__(self,wps,processes=None): """ """ Request.__init__(self,wps,processes) # # ServiceIdentification # self.templateProcessor.set("encoding", config.getConfigValue("wps","encoding")) self.templateProcessor.set("lang", self.wps.inputs["language"]) self.templateProcessor.set("servertitle", config.getConfigValue("wps","title")) self.templateProcessor.set("serverabstract", config.getConfigValue("wps","abstract")) keywordList=[] for keyword in config.getConfigValue("wps","keywords").split(','): keywordList.append({'keyword':keyword.strip()}) self.templateProcessor.set("Keywords",keywordList) self.templateProcessor.set("Versions", [{'version': config.getConfigValue("wps","version")}]) self.templateProcessor.set("fees", config.getConfigValue("wps","fees")) self.templateProcessor.set("constraints", config.getConfigValue("wps","constraints")) self.templateProcessor.set("url", config.getConfigValue("wps","serveraddress")) # # ServiceProvider # self.templateProcessor.set("providername", config.getConfigValue("provider","providerName")) self.templateProcessor.set("individualname", config.getConfigValue("provider","individualName")) self.templateProcessor.set("positionname", config.getConfigValue("provider","positionName")) self.templateProcessor.set("providersite", config.getConfigValue("provider","providerSite")) # phone if config.getConfigValue("provider","phoneVoice") or \ config.getConfigValue("provider","phoneFacsimile"): self.templateProcessor.set("phone", 1) if config.getConfigValue("provider","phoneVoice"): self.templateProcessor.set("phonevoice", config.getConfigValue("provider","phoneVoice")) if config.getConfigValue("provider","phoneFacsimile"): self.templateProcessor.set("phonefacsimile", config.getConfigValue("provider","phoneFacsimile")) else: self.templateProcessor.set("phone", 0) # address if config.getConfigValue("provider","deliveryPoint") or \ config.getConfigValue("provider","city") or \ config.getConfigValue("provider","administrativeArea") or \ config.getConfigValue("provider","postalCode") or \ config.getConfigValue("provider","country") or \ config.getConfigValue("provider","electronicMailAddress"): self.templateProcessor.set("address", 1) if config.getConfigValue("provider","deliveryPoint"): self.templateProcessor.set("deliverypoint", config.getConfigValue("provider","deliveryPoint")) if config.getConfigValue("provider","city"): self.templateProcessor.set("city", config.getConfigValue("provider","city")) if config.getConfigValue("provider","administrativeArea"): self.templateProcessor.set("administrativearea", config.getConfigValue("provider","administrativeArea")) if config.getConfigValue("provider","postalCode"): self.templateProcessor.set("postalcode", config.getConfigValue("provider","postalCode")) if config.getConfigValue("provider","country"): self.templateProcessor.set("country", config.getConfigValue("provider","country")) if config.getConfigValue("provider","electronicMailAddress"): self.templateProcessor.set("electronicmailaddress", config.getConfigValue("provider","electronicMailAddress")) else: self.templateProcessor.set("address", 0) # other ContactInfo if config.getConfigValue("provider","role"): self.templateProcessor.set("role", config.getConfigValue("provider","role")) if config.getConfigValue("provider","hoursofservice"): self.templateProcessor.set("hoursofservice", config.getConfigValue("provider","hoursofservice")) if config.getConfigValue("provider","contactinstructions"): self.templateProcessor.set("contactinstructions", config.getConfigValue("provider","contactinstructions")) # OperationsMetadata self.templateProcessor.set("Operations", [{"operation":"GetCapabilities", "url":config.getConfigValue("wps","serveraddress")}, {"operation":"DescribeProcess", "url":config.getConfigValue("wps","serveraddress")}, {"operation":"Execute", "url":config.getConfigValue("wps","serveraddress")}]) # Processes processesData = [] for process in self.getProcesses("all"): processData = {} if type(process) == types.InstanceType: process.lang.setCode(self.wps.inputs["language"]) processData["processok"] = 1 processData["identifier"] = process.identifier processData["processversion"] = process.version processData["title"] = process.i18n(process.title) if process.abstract: processData["abstract"] = process.i18n(process.abstract) if process.metadata: processData["Metadata"] = self.formatMetadata(process) if process.profile: profiles=[] if type(process.profile) == types.ListType: for profile in process.profile: profiles.append({"profile":profile}) else: profiles.append({"profile":process.profile}) processData["Profiles"] = profiles if process.wsdl: processData["wsdl"] = process.wsdl else: processData["processok"] = 0 processData["process"] = repr(process) processesData.append(processData) self.templateProcessor.set("Processes",processesData) # Language self.templateProcessor.set("defaultlanguage", pywps.DEFAULT_LANG) languages = [] for lang in self.wps.languages: languages.append({"language":lang}) self.templateProcessor.set("Languages",languages) self.response = self.templateProcessor.__str__() return