def __init__(self, **kwargs): super(WFCurrent, self).__init__(**kwargs) self.workflow_name = kwargs.pop('workflow_name', '') self.spec = None self.workflow = None self.task_type = '' self.task = None self.pool = {} self.task_name = '' self.activity = '' self.lane_permissions = [] self.lane_relations = '' self.old_lane = '' self.lane_owners = None self.lane_name = '' if 'token' in self.input: self.token = self.input['token'] log.info("TOKEN iNCOMiNG: %s " % self.token) self.new_token = False else: self.token = uuid4().hex self.new_token = True log.info("TOKEN NEW: %s " % self.token) self.wfcache = WFCache(self.token) log.debug("\n\nWF_CACHE: %s" % self.wfcache.get()) self.set_client_cmds()
class WFCurrent(Current): """ Workflow specific version of Current object """ def __init__(self, **kwargs): super(WFCurrent, self).__init__(**kwargs) self.workflow_name = kwargs.pop('workflow_name', '') self.spec = None self.workflow = None self.task_type = '' self.task = None self.pool = {} self.task_name = '' self.activity = '' self.lane_permissions = [] self.lane_relations = '' self.old_lane = '' self.lane_owners = None self.lane_name = '' if 'token' in self.input: self.token = self.input['token'] log.info("TOKEN iNCOMiNG: %s " % self.token) self.new_token = False else: self.token = uuid4().hex self.new_token = True log.info("TOKEN NEW: %s " % self.token) self.wfcache = WFCache(self.token) log.debug("\n\nWF_CACHE: %s" % self.wfcache.get()) self.set_client_cmds() def _set_lane_data(self): # TODO: Cache lane_data in process if 'lane_data' in self.spec.data: self.lane_name = self.spec.lane lane_data = self.spec.data['lane_data'] if 'permissions' in lane_data: self.lane_permissions = lane_data['permissions'].split(',') if 'relations' in lane_data: self.lane_relations = lane_data['relations'] if 'owners' in lane_data: self.lane_owners = lane_data['owners'] def get_wf_url(self): return "#/%s/%s" % (self.workflow_name, self.token) def _update_task(self, task): """ assigns current task step to self.task then updates the task's data with self.task_data """ self.task = task self.task.data.update(self.task_data) self.task_type = task.task_spec.__class__.__name__ self.spec = task.task_spec self.task_name = task.get_name() self.activity = getattr(self.spec, 'service_class', '') self._set_lane_data() def set_client_cmds(self): """ This is method automatically called on each request and updates "object_id", "cmd" and "flow" client variables from current.input. "flow" and "object_id" variables will always exists in the task_data so app developers can safely check for their values in workflows. Their values will be reset to None if they not exists in the current input data set. On the other side, if there isn't a "cmd" in the current.input cmd will be removed from task_data. """ self.task_data['cmd'] = self.input.get('cmd') self.task_data['flow'] = self.input.get('flow') filters = self.input.get('filters', {}) try: if isinstance(filters, dict): # this is the new form, others will be removed when ui be ready self.task_data['object_id'] = filters.get( 'object_id')['values'][0] elif filters[0]['field'] == 'object_id': self.task_data['object_id'] = filters[0]['values'][0] except: self.task_data['object_id'] = self.input.get('object_id')
class WFCurrent(Current): """ Workflow specific version of Current object """ def __init__(self, **kwargs): super(WFCurrent, self).__init__(**kwargs) self.workflow_name = kwargs.pop('workflow_name', '') self.spec = None self.workflow = None self.task_type = '' self.task = None self.pool = {} self.task_name = '' self.activity = '' self.lane_permissions = [] self.lane_relations = '' self.old_lane = '' self.lane_owners = None self.lane_name = '' if 'token' in self.input: self.token = self.input['token'] log.info("TOKEN iNCOMiNG: %s " % self.token) self.new_token = False else: self.token = uuid4().hex self.new_token = True log.info("TOKEN NEW: %s " % self.token) self.wfcache = WFCache(self.token) log.debug("\n\nWF_CACHE: %s" % self.wfcache.get()) self.set_client_cmds() def _set_lane_data(self): # TODO: Cache lane_data in process if 'lane_data' in self.spec.data: self.lane_name = self.spec.lane lane_data = self.spec.data['lane_data'] if 'permissions' in lane_data: self.lane_permissions = lane_data['permissions'].split(',') if 'relations' in lane_data: self.lane_relations = lane_data['relations'] if 'owners' in lane_data: self.lane_owners = lane_data['owners'] def get_wf_url(self): return "#/%s/%s" % (self.workflow_name, self.token) def _update_task(self, task): """ assigns current task step to self.task then updates the task's data with self.task_data """ self.task = task self.task.data.update(self.task_data) self.task_type = task.task_spec.__class__.__name__ self.spec = task.task_spec self.task_name = task.get_name() self.activity = getattr(self.spec, 'service_class', '') self._set_lane_data() def set_client_cmds(self): """ This is method automatically called on each request and updates "object_id", "cmd" and "flow" client variables from current.input. "flow" and "object_id" variables will always exists in the task_data so app developers can safely check for their values in workflows. Their values will be reset to None if they not exists in the current input data set. On the other side, if there isn't a "cmd" in the current.input cmd will be removed from task_data. """ self.task_data['cmd'] = self.input.get('cmd') self.task_data['flow'] = self.input.get('flow') filters = self.input.get('filters', {}) try: if isinstance(filters, dict): # this is the new form, others will be removed when ui be ready self.task_data['object_id'] = filters.get('object_id')['values'][0] elif filters[0]['field'] == 'object_id': self.task_data['object_id'] = filters[0]['values'][0] except: self.task_data['object_id'] = self.input.get('object_id')