[Pywps-commits] r649 - trunk/pywps/Wps

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Fri Sep 19 17:50:59 CEST 2008


Author: pana
Date: 2008-09-19 17:50:59 +0200 (Fri, 19 Sep 2008)
New Revision: 649

Modified:
   trunk/pywps/Wps/Execute.py
Log:
Catch and handle post-execute exceptions

Modified: trunk/pywps/Wps/Execute.py
===================================================================
--- trunk/pywps/Wps/Execute.py	2008-09-19 13:03:53 UTC (rev 648)
+++ trunk/pywps/Wps/Execute.py	2008-09-19 15:50:59 UTC (rev 649)
@@ -179,6 +179,7 @@
             if len(self.statusFiles) == 0:
                 self.statusFiles = [open(self.statusFileName,"w")]
 
+        # attempt to execute
         try:
 
             # init environment variable
@@ -200,34 +201,55 @@
                     exceptioncode=e.code,
                     locator=e.locator)
 
-        except Exception,ex:
+        except Exception,e:
             # set status to failed
             self.promoteStatus(self.failed,
                     statusMessage=str(e),
                     exceptioncode="NoApplicableCode")
 
-        # lineage in and outputs
-        if lineageRequired:
-            self.templateProcessor.set("lineage",1)
-            self.lineageInputs()
-            self.outputDefinitions()
+        # attempt to fill-in lineage and outputs
+        try:
 
-        # if succeeded
-        if self.status == self.succeeded:
+            # lineage in and outputs
+            if lineageRequired:
+                self.templateProcessor.set("lineage",1)
+                self.lineageInputs()
+                self.outputDefinitions()
 
-            # fill outputs
-            self.processOutputs()
+            # if succeeded
+            if self.status == self.succeeded:
 
+                # fill outputs
+                self.processOutputs()
+
+                # Response document
+                self.response = self.templateProcessor.process(self.template)
+
+                # if rawDataOutput is required
+                if self.rawDataOutput:
+                    self.response = None
+                    self.printRawData()
+
+            # Failed but output lineage anyway
+            elif lineageRequired:
+                self.response = self.templateProcessor.process(self.template)
+
+
+        except self.wps.exceptions.WPSException,e:
+            # set status to failed
+            self.promoteStatus(self.failed,
+                    statusMessage=e.value,
+                    exceptioncode=e.code,
+                    locator=e.locator)
             # Response document
             self.response = self.templateProcessor.process(self.template)
 
-            # if rawDataOutput is required
-            if self.rawDataOutput:
-                self.response = None
-                self.printRawData()
-
-        # Failed but output lineage anyway
-        elif lineageRequired:
+        except Exception,e:
+            # set status to failed
+            self.promoteStatus(self.failed,
+                    statusMessage=str(e),
+                    exceptioncode="NoApplicableCode")
+            # Response document
             self.response = self.templateProcessor.process(self.template)
 
         # print status



More information about the Pywps-commits mailing list