1- from abc import abstractmethod
2- from typing import TYPE_CHECKING
3- if TYPE_CHECKING :
4- from pywps import WPSRequest
51
6- from pywps .dblog import store_status
7- from pywps .response .status import WPS_STATUS
8- from pywps .translations import get_translation
9- from jinja2 import Environment , PackageLoader
102import os
113
4+ from jinja2 import Environment
5+
126
137class RelEnvironment (Environment ):
148 """Override join_path() to enable relative template paths."""
@@ -28,57 +22,3 @@ def get_response(operation):
2822 return DescribeResponse
2923 elif operation == "execute" :
3024 return ExecuteResponse
31-
32-
33- class WPSResponse (object ):
34-
35- def __init__ (self , wps_request : 'WPSRequest' , uuid = None , version = "1.0.0" ):
36-
37- self .wps_request = wps_request
38- self .uuid = uuid
39- self .message = ''
40- self .status = WPS_STATUS .ACCEPTED
41- self .status_percentage = 0
42- self .doc = None
43- self .content_type = None
44- self .version = version
45- self .template_env = RelEnvironment (
46- loader = PackageLoader ('pywps' , 'templates' ),
47- trim_blocks = True , lstrip_blocks = True ,
48- autoescape = True ,
49- )
50- self .template_env .globals .update (get_translation = get_translation )
51-
52- def _update_status (self , status , message , status_percentage ):
53- """
54- Update status report of currently running process instance
55-
56- :param str message: Message you need to share with the client
57- :param int status_percentage: Percent done (number betwen <0-100>)
58- :param pywps.response.status.WPS_STATUS status: process status - user should usually
59- ommit this parameter
60- """
61- self .message = message
62- self .status = status
63- self .status_percentage = status_percentage
64- store_status (self .uuid , self .status , self .message , self .status_percentage )
65-
66- @abstractmethod
67- def _construct_doc (self ):
68- ...
69-
70- def get_response_doc (self ):
71- try :
72- self .doc , self .content_type = self ._construct_doc ()
73- except Exception as e :
74- if hasattr (e , "description" ):
75- msg = e .description
76- else :
77- msg = e
78- self ._update_status (WPS_STATUS .FAILED , msg , 100 )
79- raise e
80-
81- else :
82- self ._update_status (WPS_STATUS .SUCCEEDED , "Response generated" , 100 )
83-
84- return self .doc , self .content_type
0 commit comments