[Pywps-commits] r760 - in branches/pywps-3.0: doc/examples doc/examples/processes pywps pywps/Process pywps/Wps

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Wed Feb 4 12:08:11 CET 2009


Author: jachym
Date: 2009-02-04 12:08:11 +0100 (Wed, 04 Feb 2009)
New Revision: 760

Added:
   branches/pywps-3.0/doc/examples/clients/
   branches/pywps-3.0/doc/examples/processes/dummyprocess.py
   branches/pywps-3.0/doc/examples/processes/ultimatequestionprocess.py
Modified:
   branches/pywps-3.0/doc/examples/processes/__init__.py
   branches/pywps-3.0/pywps/Process/Process.py
   branches/pywps-3.0/pywps/Wps/DescribeProcess.py
   branches/pywps-3.0/pywps/Wps/Execute.py
   branches/pywps-3.0/pywps/default.cfg
Log:
merged revisions 746:753 from trunk, among otheres, implemented logFile

Copied: branches/pywps-3.0/doc/examples/clients (from rev 753, trunk/doc/examples/clients)

Modified: branches/pywps-3.0/doc/examples/processes/__init__.py
===================================================================
--- branches/pywps-3.0/doc/examples/processes/__init__.py	2009-02-03 14:22:23 UTC (rev 759)
+++ branches/pywps-3.0/doc/examples/processes/__init__.py	2009-02-04 11:08:11 UTC (rev 760)
@@ -1,5 +1,6 @@
 """Example process, which can be used with PyWPS"""
 __all__ = ["exampleBufferProcess", "exampleXSLTProcess",
             "exampleBufferNoInputsProcess",
-            "exampleLosProcess"]
+            "exampleLosProcess",
+            "ultimatequestionprocess","dummyprocess"]
 

Copied: branches/pywps-3.0/doc/examples/processes/dummyprocess.py (from rev 753, trunk/doc/examples/processes/dummyprocess.py)

Copied: branches/pywps-3.0/doc/examples/processes/ultimatequestionprocess.py (from rev 753, trunk/doc/examples/processes/ultimatequestionprocess.py)

Modified: branches/pywps-3.0/pywps/Process/Process.py
===================================================================
--- branches/pywps-3.0/pywps/Process/Process.py	2009-02-03 14:22:23 UTC (rev 759)
+++ branches/pywps-3.0/pywps/Process/Process.py	2009-02-04 11:08:11 UTC (rev 760)
@@ -106,10 +106,12 @@
     lang = None
     grassLocation = None
     grassMapset = None
+    logFile = None
 
     def __init__(self, identifier, title = None, abstract=None,
             metadata=[],profile=[], version=None,
-            statusSupported=True, storeSupported=False, grassLocation=None):
+            statusSupported=True, storeSupported=False, grassLocation=None,
+            logFile = sys.stderr):
         """Process initialization. All parameters can be set lately
 
         Mandatory parameters:
@@ -428,8 +430,14 @@
         if (type(cmd) == types.StringType):
             cmd = cmd.strip().split()
 
-        self.message("PyWPS Cmd: %s\n" % (cmd.__str__()))
+        idx = stdin.find("\n")
+        if 0 < idx <= 60:
+            stdinOut = stdin[:idx]
+        else:
+            stdinOut = stdin[:60]
 
+        self.message("PyWPS Cmd: %s %s\n" % (cmd.__str__(),stdinOut))
+
         try:
             subprocessstdin = None
             if stdin:
@@ -461,8 +469,8 @@
                 printed. nothing happen otherwise.
         """
 
-        if self.debug or force:
-            sys.stderr.write(msg)
+        if self.debug or force and self.logFile:
+            self.logFile.write(msg)
         return
 
     def getInput(self,identifier):

Modified: branches/pywps-3.0/pywps/Wps/DescribeProcess.py
===================================================================
--- branches/pywps-3.0/pywps/Wps/DescribeProcess.py	2009-02-03 14:22:23 UTC (rev 759)
+++ branches/pywps-3.0/pywps/Wps/DescribeProcess.py	2009-02-04 11:08:11 UTC (rev 760)
@@ -43,9 +43,9 @@
 
         try:
             self.template = self.templateManager.prepare(self.templateFile)
-        except TemplateError:
+        except TemplateError,e:
             self.cleanEnv()
-            raise self.wps.exceptions.InvalidParameterValue("version")
+            raise self.wps.exceptions.NoApplicableCode(e.__str__())
 
         #
         # HEAD

Modified: branches/pywps-3.0/pywps/Wps/Execute.py
===================================================================
--- branches/pywps-3.0/pywps/Wps/Execute.py	2009-02-03 14:22:23 UTC (rev 759)
+++ branches/pywps-3.0/pywps/Wps/Execute.py	2009-02-04 11:08:11 UTC (rev 760)
@@ -25,7 +25,7 @@
 
 from Response import Response
 from htmltmpl import TemplateError
-import time,os,sys,tempfile,re,types
+import time,os,sys,tempfile,re,types, ConfigParser
 from shutil import copyfile as COPY
 from shutil import rmtree as RMTREE
 
@@ -72,6 +72,7 @@
     grass = None
 
     rawDataOutput = None
+    logFile = None
 
 
     def __init__(self,wps):
@@ -85,11 +86,12 @@
         self.process = None
         try:
             self.template = self.templateManager.prepare(self.templateFile)
-        except TemplateError:
+        except TemplateError,e:
             self.cleanEnv()
-            raise self.wps.exceptions.InvalidParameterValue("version")
+            raise self.wps.exceptions.NoApplicableCode(e.__str__())
 
         # initialization
+        self.setLogFile()
         self.statusTime = time.time()
         self.pid = os.getpid()
         self.status = None
@@ -203,10 +205,8 @@
             # redirect stdout, so that apache sends back the response immediately
             si = open('/dev/null', 'r')
             so = open('/dev/null', 'a+')
-            #se = open('/dev/null', 'a+', 0)
             os.dup2(si.fileno(), sys.stdin.fileno())
             os.dup2(so.fileno(), sys.stdout.fileno())
-            #os.dup2(se.fileno(), sys.stderr.fileno())
 
 
         # attempt to execute
@@ -319,6 +319,7 @@
         self.process.wps = self.wps
         self.process.status.onStatusChanged = self.onStatusChanged
         self.process.debug = self.wps.getConfigValue("server","debug")
+        self.process.logFile = self.logFile
 
     def consolidateInputs(self):
         """ Donwload and control input data, defined by the client """
@@ -531,6 +532,11 @@
                                    #self.status == self.succeeded or
                                    self.status == self.failed):
             self.printResponse(self.statusFiles)
+        
+        if self.status == self.started:
+            print >>sys.stderr, "PyWPS Status [%s][%.1f]: %s" % (self.status,float(self.percent),self.statusMessage)
+        else:
+            print >>sys.stderr, "PyWPS Status [%s]: %s" % (self.status,self.statusMessage)
 
 
     def lineageInputs(self):
@@ -935,3 +941,24 @@
             print f.read()
             f.close()
 
+    def setLogFile(self):
+        """Set self.logFile to sys.stderr or something else
+        """
+
+        # logfile
+        self.logFile = sys.stderr
+        try:
+            self.logFile = self.wps.getConfigValue("server","logFile")
+            if self.logFile:
+                se = open(self.logFile, 'a+', 0)
+                os.dup2(se.fileno(), sys.stderr.fileno())
+            else:
+                self.logFile = sys.stderr
+        except ConfigParser.NoOptionError,e:
+            pass
+        except IOError,e:
+            raise self.wps.exceptions.NoApplicableCode("Logfile IOError: %s" % e.__str__())
+        except Exception, e:
+            raise self.wps.exceptions.NoApplicableCode("Logfile error: %s" % e.__str__())
+
+

Modified: branches/pywps-3.0/pywps/default.cfg
===================================================================
--- branches/pywps-3.0/pywps/default.cfg	2009-02-03 14:22:23 UTC (rev 759)
+++ branches/pywps-3.0/pywps/default.cfg	2009-02-04 11:08:11 UTC (rev 760)
@@ -33,6 +33,7 @@
 outputUrl=http://localhost/wps/wpsoutputs
 outputPath=/var/www/wps/wpsoutputs
 debug=true
+logFile=
 
 [grass]
 path=/usr/lib/grass/bin/:/usr/lib/grass/scripts/



More information about the Pywps-commits mailing list