예제 #1
0
파일: task_wdg.py 프로젝트: 0-T-0/TACTIC
    def alter_task_search(my, search, prefix='children', prefix_namespace='' ):
        from tactic.ui.filter import FilterData, BaseFilterWdg, GeneralFilterWdg
        filter_data = FilterData.get()
        parent_search_type = get_search_type()
        
        if not filter_data.get_data():
            # use widget settings
            key = "last_search:%s" % parent_search_type
            data = WidgetSettings.get_value_by_key(key)
            if data:
                filter_data = FilterData(data)
            filter_data.set_to_cgi()

        
        filter_mode_prefix = 'filter_mode'
        if prefix_namespace:
            filter_mode_prefix = '%s_%s' %(prefix_namespace, filter_mode_prefix)
        
        filter_mode = 'and'
        filter_mode_value = filter_data.get_values_by_index(filter_mode_prefix, 0)
        if filter_mode_value:
            filter_mode = filter_mode_value.get('filter_mode')
       
        if prefix_namespace:
            prefix = '%s_%s' %(prefix_namespace, prefix)
        values_list = BaseFilterWdg.get_search_data_list(prefix, \
                search_type=my.get_searchable_search_type())
        if values_list:
            
            search.add_op('begin')
            GeneralFilterWdg.alter_sobject_search( search, values_list, prefix)
            if filter_mode != 'custom': 
                search.add_op(filter_mode)
        
        
        return search
예제 #2
0
    def alter_task_search(self, search, prefix='children', prefix_namespace='' ):
        from tactic.ui.filter import FilterData, BaseFilterWdg, GeneralFilterWdg
        filter_data = FilterData.get()
        parent_search_type = get_search_type()
        
        if not filter_data.get_data():
            # use widget settings
            key = "last_search:%s" % parent_search_type
            data = WidgetSettings.get_value_by_key(key)
            if data:
                filter_data = FilterData(data)
            filter_data.set_to_cgi()

        
        filter_mode_prefix = 'filter_mode'
        if prefix_namespace:
            filter_mode_prefix = '%s_%s' %(prefix_namespace, filter_mode_prefix)
        
        filter_mode = 'and'
        filter_mode_value = filter_data.get_values_by_index(filter_mode_prefix, 0)
        if filter_mode_value:
            filter_mode = filter_mode_value.get('filter_mode')
       
        if prefix_namespace:
            prefix = '%s_%s' %(prefix_namespace, prefix)
        values_list = BaseFilterWdg.get_search_data_list(prefix, \
                search_type=self.get_searchable_search_type())
        if values_list:
            
            search.add_op('begin')
            GeneralFilterWdg.alter_sobject_search( search, values_list, prefix)
            if filter_mode != 'custom': 
                search.add_op(filter_mode)
        
        
        return search
    def execute(my):

        trigger_sobj = my.get_trigger_sobj()
        data = trigger_sobj.get_value("data")
        #data = """[
        #{ "prefix": "rule", "name": "status", "value": "Approved" },
        #{ "prefix": "rule", "name": "pipeline" "value": "model" },
        #{ "prefix": "action", "type": "output", "name": "status", "value": "Pending" }
        #]
        #"""

        data = jsonloads(data)
        print "data: ", data
        from tactic.ui.filter import FilterData
        filter_data = FilterData(data)

        task = my.get_caller()

        # check that the process is correct
        trigger_info = filter_data.get_values_by_index("trigger")
        process = trigger_info.get("process")

        if task.get_value("process") != process:
            return



        parent = None

        rules = filter_data.get_values_by_prefix("rule")

        # go through each rule and determine if this trigger applies
        is_valid = True
        for rule in rules:
            attribute = rule.get('name')
            value = rule.get('value')

            if attribute in ['status']:
                # if condition does not match
                if task.get_value(attribute) != value:
                    is_valid = False

            elif attribute in ['pipeline']:
                attribute = 'pipeline_code'
                if parent == None:
                    parent = task.get_parent()
                    if parent == None:
                        continue

                if parent.get_value(attribute) != value:
                    is_valid = False

            else:
                is_valid = False

        if not is_valid:
            return



        # update the data

        #input = my.get_input()
        #update_data = input.get('update_data')
        #status = update_data.get('status')
        #search_key = input.get('search_key')
        #task = Search.get_by_search_key(search_key)


        # get the next process tasks
        output_tasks = task.get_output_tasks()
        input_tasks = task.get_input_tasks()
        actions = filter_data.get_values_by_prefix("action")
        #print "actions: ", actions

        for action in actions:
            type = action.get("type")
            attribute = action.get('name')
            value = action.get('value')

            if type == 'output':
                for output_task in output_tasks:
                    #output_status = output_task.get_value("status")
                    output_task.set_value(attribute, value)
                    output_task.commit()


            elif type == 'input':
                for output_task in output_tasks:
                    print "a : ", attribute, value
                    
                    #output_status = output_task.get_value("status")
                    output_task.set_value(attribute, value)
                    output_task.commit()


            elif type == 'process':
                process = action.get("process")

                for input_task in input_tasks:
                    task_process = input_task.get_value("process")
                    if task_process == process:
                        input_task.set_value(attribute, value)
                        input_task.commit()
                        break

                for output_task in output_tasks:
                    task_process = output_task.get_value("process")
                    if task_process == process:
                        output_task.set_value(attribute, value)
                        output_task.commit()
                        break
예제 #4
0
    def execute(my):

        trigger_sobj = my.get_trigger_sobj()
        data = trigger_sobj.get_value("data")
        #data = """[
        #{ "prefix": "rule", "name": "status", "value": "Approved" },
        #{ "prefix": "rule", "name": "pipeline" "value": "model" },
        #{ "prefix": "action", "type": "output", "name": "status", "value": "Pending" }
        #]
        #"""

        data = jsonloads(data)
        print "data: ", data
        from tactic.ui.filter import FilterData
        filter_data = FilterData(data)

        task = my.get_caller()

        # check that the process is correct
        trigger_info = filter_data.get_values_by_index("trigger")
        process = trigger_info.get("process")

        if task.get_value("process") != process:
            return

        parent = None

        rules = filter_data.get_values_by_prefix("rule")

        # go through each rule and determine if this trigger applies
        is_valid = True
        for rule in rules:
            attribute = rule.get('name')
            value = rule.get('value')

            if attribute in ['status']:
                # if condition does not match
                if task.get_value(attribute) != value:
                    is_valid = False

            elif attribute in ['pipeline']:
                attribute = 'pipeline_code'
                if parent == None:
                    parent = task.get_parent()
                    if parent == None:
                        continue

                if parent.get_value(attribute) != value:
                    is_valid = False

            else:
                is_valid = False

        if not is_valid:
            return

        # update the data

        #input = my.get_input()
        #update_data = input.get('update_data')
        #status = update_data.get('status')
        #search_key = input.get('search_key')
        #task = Search.get_by_search_key(search_key)

        # get the next process tasks
        output_tasks = task.get_output_tasks()
        input_tasks = task.get_input_tasks()
        actions = filter_data.get_values_by_prefix("action")
        #print "actions: ", actions

        for action in actions:
            type = action.get("type")
            attribute = action.get('name')
            value = action.get('value')

            if type == 'output':
                for output_task in output_tasks:
                    #output_status = output_task.get_value("status")
                    output_task.set_value(attribute, value)
                    output_task.commit()

            elif type == 'input':
                for output_task in output_tasks:
                    print "a : ", attribute, value

                    #output_status = output_task.get_value("status")
                    output_task.set_value(attribute, value)
                    output_task.commit()

            elif type == 'process':
                process = action.get("process")

                for input_task in input_tasks:
                    task_process = input_task.get_value("process")
                    if task_process == process:
                        input_task.set_value(attribute, value)
                        input_task.commit()
                        break

                for output_task in output_tasks:
                    task_process = output_task.get_value("process")
                    if task_process == process:
                        output_task.set_value(attribute, value)
                        output_task.commit()
                        break