@@ -9,6 +9,10 @@ class Type:
99 ExtractRefresh = "extractRefresh"
1010 DataAcceleration = "dataAcceleration"
1111
12+ # This mapping is used to convert task type returned from server
13+ _TASK_TYPE_MAPPING = {'RefreshExtractTask' : Type .ExtractRefresh ,
14+ 'MaterializeViewsTask' : Type .DataAcceleration }
15+
1216 def __init__ (self , id_ , task_type , priority , consecutive_failed_count = 0 , schedule_id = None ,
1317 schedule_item = None , last_run_at = None , target = None ):
1418 self .id = id_
@@ -58,9 +62,18 @@ def _parse_element(cls, element, ns):
5862 if last_run_at_element is not None :
5963 last_run_at = parse_datetime (last_run_at_element .text )
6064
61- task_type = element .get ('type' , None )
65+ # Server response has different names for task types
66+ task_type = cls ._translate_task_type (element .get ('type' , None ))
67+
6268 priority = int (element .get ('priority' , - 1 ))
6369 consecutive_failed_count = int (element .get ('consecutiveFailedCount' , 0 ))
6470 id_ = element .get ('id' , None )
6571 return cls (id_ , task_type , priority , consecutive_failed_count , schedule_item .id ,
6672 schedule_item , last_run_at , target )
73+
74+ @staticmethod
75+ def _translate_task_type (task_type ):
76+ if task_type in TaskItem ._TASK_TYPE_MAPPING :
77+ return TaskItem ._TASK_TYPE_MAPPING [task_type ]
78+ else :
79+ return task_type
0 commit comments