Esempio n. 1
0
def board_story_previous(request, id):
    try:
        story = models.Story.objects.get(id=id)
    except models.Story.DoesNotExist:
        raise Http404

    sprint = story.sprint
    board = sprint.board_set.all()[0]
    first_column_tag = board.boardcolumn_set.all().order_by('order')[0].tag

    if story.state != first_column_tag:
        current_column = board.boardcolumn_set.get(tag=story.state)
        previous_column_tag = board.boardcolumn_set.get(
            order=current_column.order - 1).tag

        if story.is_burning and previous_column_tag == 'DONE':
            story.state = board.boardcolumn_set.get(
                order=current_column.order - 2).tag
        else:
            story.state = previous_column_tag

        story.save()

        action = models.BoardAction()
        action.story = story
        action.board_from = current_column.tag  # Save previous state
        action.board_to = story.state  # Save new state
        action.actor = request.user
        action.save()

    return HttpResponseRedirect(
        request.GET.get('return-to', reverse('web.board')))
Esempio n. 2
0
def board_story_move(request, id, to_column):
	if request.is_ajax():
		try:
			story = models.Story.objects.get(id=id)
		except models.Story.DoesNotExist:
			raise Http404

		previous_story_state = story.state

		story.state = to_column
		story.save()

		# Move all the tasks too
		if story.state == 'DONE' or story.state == 'FIRE':
			for task in story.task_set.all():
				if task.state != 'TO_CLOSED':
					story_action = models.StoryAction()
					story_action.action = 'TO_CLOSED'
					story_action.task = task
					story_action.actor = request.user
					story_action.save()

					task.state = 'TO_CLOSED'
					task.save()
		elif previous_story_state == 'DONE' or previous_story_state == 'FIRE':
			for task in story.task_set.all():
				if task.state == 'TO_CLOSED':
					story_action = models.StoryAction()
					if to_column == 'WAITING':
						story_action.action = 'TO_WAITING'
					else:
						story_action.action = 'TO_WORKING'
					story_action.task = task
					story_action.actor = request.user
					story_action.save()

					task.state = story_action.action
					task.save()


		action = models.BoardAction()
		action.story = story
		action.board_from = previous_story_state # Save previous state
		action.board_to = story.state # Save new state
		action.actor = request.user
		action.save()

		return HttpResponse('OK')
	else:
		raise Http404
Esempio n. 3
0
def board_story_next(request, id):
    try:
        story = models.Story.objects.get(id=id)
    except models.Story.DoesNotExist:
        raise Http404

    sprint = story.sprint
    board = sprint.board_set.all()[0]

    if story.state != 'DONE' and story.state != 'FIRE':
        current_column = board.boardcolumn_set.get(tag=story.state)
        next_column_tag = board.boardcolumn_set.get(
            order=current_column.order + 1).tag
        if story.is_burning and next_column_tag == 'DONE':
            story.state = 'FIRE'
        else:
            story.state = next_column_tag
        story.save()

        # Move all the tasks too
        if story.state == 'DONE' or story.state == 'FIRE':
            for task in story.task_set.all():
                if task.state != 'TO_CLOSED':
                    story_action = models.StoryAction()
                    story_action.action = 'TO_CLOSED'
                    story_action.task = task
                    story_action.actor = request.user
                    story_action.save()

                    task.state = 'TO_CLOSED'
                    task.save()

        action = models.BoardAction()
        action.story = story
        action.board_from = current_column.tag  # Save previous state
        action.board_to = story.state  # Save new state
        action.actor = request.user
        action.save()

    return HttpResponseRedirect(
        request.GET.get('return-to', reverse('web.board')))