Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
    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
Exemple #5
0
    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
Exemple #6
0
    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
Exemple #8
0
    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