def progress(self, transition, user, note=''):
        participant = Participant.objects.get(workflowactivity=self, user=user,
                disabled=False)
        # Validate the transition
        current_state = self.current_state()

        # 1. Make sure the workflow activity is started
        if not current_state:
            raise UnableToProgressWorkflow, __('Start the workflow before'\
                    ' attempting to transition')
        # 2. Make sure it's parent is the current state
        if not transition.from_state == current_state.state:
            raise UnableToProgressWorkflow, __('Transition not valid (wrong'\
                    ' parent)')
        # 3. Make sure all mandatory events for the current state are found in 
        # the WorkflowHistory
        mandatory_events = current_state.state.events.filter(is_mandatory=True)
        for me in mandatory_events:
            if not me.history.filter(workflowactivity=self):
                raise UnableToProgressWorkflow, __('Transition not valid'\
                    ' (mandatory event missing)')
        # 4. Make sure the user has the appropriate role to allow them to make
        # the transition
        if not transition.roles.filter(pk__in=[role.id for role in participant.roles.all()]):
            raise UnableToProgressWorkflow, __('Participant has insufficient'\
                    ' authority to use the specified transition')
        # The "progress" request has been validated to store the transition into
        # the appropriate WorkflowHistory record and if it is an end state then
        # update this WorkflowActivity's record with the appropriate timestamp
        if not note:
            note = transition.name
        wh = WorkflowHistory(
                workflowactivity=self,
                state=transition.to_state,
                log_type=WorkflowHistory.TRANSITION,
                transition=transition,
                participant=participant,
                note=note,
                deadline=transition.to_state.deadline()
                )
        wh.save()
        # If we're at the end then mark the workflow activity as completed on
        # today
        if transition.to_state.is_end_state:
            self.completed_on = datetime.datetime.today()
            self.save()
        return wh
Main method that prints netconf capabilities of remote device.
dataset/ETHPy150Open ntoll/workflow/workflow/models.py/WorkflowActivity.progress--crossover with--dataset/ETHPy150Open CiscoDevNet/netconf-examples/netconf-102/get_capabilities.py/main