Пример #1
0
def comment_create(request):
    if request.method == "POST":
        form = CommentForm(request.POST)

        if form.is_valid():
            comment = form.save(commit=False)

            resource_id = request.POST['resource_id']
            resource_type = request.POST['resource_type']

            if resource_type == 'issue' and Issue.objects.filter(
                    id=resource_id).exists():
                resource = Issue.objects.get(id=resource_id)

            elif resource_type == 'milestone' and Milestone.objects.filter(
                    id=resource_id).exists():
                resource = Milestone.objects.get(id=resource_id)

            elif resource_type == 'comment' and Comment.objects.filter(
                    id=resource_id).exists():
                resource = Comment.objects.get(id=resource_id)

            else:
                return redirect(request.META.get('HTTP_REFERER'))

            comment.user = request.user
            comment.text = form.cleaned_data['text']
            comment.content_object = resource
            comment.save()
            save_activity(user=request.user,
                          action='commented',
                          resource=resource)

        return redirect(request.META.get('HTTP_REFERER'))
Пример #2
0
def reopen_issue(request, **kwargs):
    try:
        issue = Issue.objects.get(id=kwargs['id'])
    except Issue.DoesNotExist:
        raise Http404('Issue does not exist')
    issue.status = 'Open'
    issue.save()

    save_activity(user=request.user, action='reopened', resource=issue)

    return redirect("issues:preview_all")
Пример #3
0
def reopen_milestone(request, **kwargs):
    try:
        milestone = Milestone.objects.get(id=kwargs['id'])
    except Milestone.DoesNotExist:
        raise Http404("Milestone does not exists.")

    milestone.status = 'OPEN'
    milestone.save()

    save_activity(user=request.user, action='reopened', resource=milestone)

    return redirect('milestones:preview')
Пример #4
0
def comment_update(request):
    if request.method == "POST":
        comment_id = request.POST['update_comment_id']
        comment = Comment.objects.get(id=comment_id)
        form = CommentForm(request.POST, instance=comment)

        if form.is_valid():
            if comment.user == request.user:
                comment.save()
                save_activity(user=request.user,
                              action='commented',
                              resource=comment.content_object)

    return redirect(request.META.get('HTTP_REFERER'))
Пример #5
0
def assignment_activity(user, issue, old_assignees):
    new_assignees = issue.assignees.all()
    intersection = set(old_assignees).intersection(new_assignees)
    removed_assignees = set(old_assignees).difference(intersection)
    added_assignees = set(new_assignees).difference(intersection)

    if len(removed_assignees) > 0:
        save_activity(user=user,
                      action='unassigned',
                      resource=issue,
                      content=",".join(a.username for a in removed_assignees))

    if len(added_assignees) > 0:
        save_activity(user=user,
                      action='assigned',
                      resource=issue,
                      content=",".join(a.username for a in added_assignees))
Пример #6
0
def remove_assignment(request, **kwargs):
    try:
        issue = Issue.objects.get(id=kwargs['iid'])
    except Issue.DoesNotExist:
        raise Http404('Issue does not exist')

    try:
        assignee = User.objects.get(id=kwargs['uid'])
    except User.DoesNotExist:
        raise Http404('Assignee does not exist.')
    issue.assignees.remove(assignee)

    save_activity(user=request.user,
                  action='unassigned',
                  resource=issue,
                  content=assignee.username)

    return redirect('issues:details', id=issue.id)
Пример #7
0
    def post(self, request):
        form = self.form_class(request.POST)
        form.fields['project'].required = True

        if form.is_valid():
            milestone = form.save(commit=False)
            milestone.save()
            save_activity(user=request.user,
                          action='opened',
                          resource=milestone)
            save_activity(user=request.user,
                          action='added to project',
                          resource=milestone)

            if milestone is not None:
                return redirect('milestones:preview')

        return render(request, 'milestones/milestone_form.html', {
            'form': form,
            'action': 'New'
        })
Пример #8
0
    def post(self, request, **kwargs):
        milestone = Milestone.objects.get(id=self.kwargs['id'])
        form = self.form_class(request.POST, instance=milestone)
        form.fields['project'].disabled = True
        form.fields['start_date'].disabled = True

        if form.is_valid():
            milestone.save()
            if len(form.changed_data) > 0:
                save_activity(user=request.user,
                              action='updated',
                              resource=milestone)

            if milestone is not None:
                return redirect('milestones:preview')

        return render(request, 'milestones/milestone_form.html', {
            'form': form,
            'object': milestone,
            'action': 'Edit'
        })
Пример #9
0
    def post(self, request, **kwargs):
        form = self.form_class(request.POST)
        form.fields['milestone'].required = False
        form.fields['assignees'].required = False

        if form.is_valid():
            issue = form.save(commit=False)
            project = Project.objects.get(id=kwargs['project_id'])
            issue.project = project
            if issue.time_spent is None:
                issue.time_spent = 0.0
            issue.total_time_spent = issue.time_spent

            issue.save()

            save_activity(user=request.user, action='opened', resource=issue)
            save_activity(user=request.user,
                          action='added to project',
                          resource=issue)

            if form.changed_data.__contains__('assignees'):
                issue.assignees = form.cleaned_data['assignees']
                issue.save()
                save_activity(user=request.user,
                              action='assigned',
                              resource=issue,
                              content=",".join(a.username
                                               for a in issue.assignees.all()))

            milestone = issue.milestone

            if milestone is not None:
                save_activity(user=request.user,
                              action='set milestone',
                              resource=issue,
                              content=issue.milestone.name,
                              content_id=milestone.id)

                milestone.total_time_spent = milestone.total_time_spent + issue.total_time_spent
                milestone.total_progress = calculate_milestone_progress(
                    milestone)
                milestone.save()

            if issue is not None:
                return redirect('issues:preview_all')

        return render(request, 'issues/issue_form.html', {
            'form': form,
            'action': 'New'
        })
Пример #10
0
    def post(self, request, **kwargs):
        form = self.form_class(request.POST)
        project = Project.objects.get(id=kwargs['project_id'])
        form.fields['project'].initial = str(project.id)
        form.fields['project'].disabled = True

        if form.is_valid():
            milestone = form.save(commit=False)
            milestone.save()
            save_activity(user=request.user,
                          action='opened',
                          resource=milestone)
            save_activity(user=request.user,
                          action='added to project',
                          resource=milestone)

            if milestone is not None:
                return redirect('milestones:preview')

        return render(request, 'milestones/milestone_form.html', {
            'form': form,
            'action': 'New'
        })
Пример #11
0
    def post(self, request, **kwargs):
        issue = Issue.objects.get(id=self.kwargs['id'])
        old_milestone = issue.milestone
        old_assignees = issue.assignees.all()
        list_old_assignees = list(old_assignees)

        form = self.form_class(request.POST, instance=issue)
        form.fields['milestone'].required = False
        form.fields['assignees'].required = False

        if form.is_valid():
            time_spent = form.cleaned_data['time_spent']
            if time_spent is None:
                time_spent = 0.0

            issue.total_time_spent = issue.total_time_spent + time_spent
            issue.time_spent = 0.0
            issue.save()

            save_activity(user=request.user, action='updated', resource=issue)

            if form.changed_data.__contains__('assignees'):
                issue.assignees = form.cleaned_data['assignees']
                issue.save()
                assignment_activity(request.user, issue, list_old_assignees)

            if form.changed_data.__contains__('milestone'):
                if issue.milestone is not None:
                    if old_milestone is not None:
                        save_activity(user=request.user,
                                      action='removed milestone',
                                      resource=issue,
                                      content=old_milestone.name,
                                      content_id=old_milestone.id)
                    save_activity(user=request.user,
                                  action='set milestone',
                                  resource=issue,
                                  content=issue.milestone.name,
                                  content_id=issue.milestone.id)
                else:
                    save_activity(
                        user=request.user,
                        action='removed milestone',
                        resource=issue,
                    )
            new_milestone = issue.milestone
            if old_milestone is not None or new_milestone is not None:
                if old_milestone == new_milestone:
                    new_milestone.total_time_spent += time_spent
                    new_milestone.total_progress = calculate_milestone_progress(
                        new_milestone)
                    new_milestone.save()
                else:
                    if new_milestone is not None:
                        new_milestone.total_time_spent += issue.total_time_spent
                        new_milestone.total_progress = calculate_milestone_progress(
                            new_milestone)
                        new_milestone.save()
                    if old_milestone is not None:
                        old_milestone.total_time_spent -= (
                            issue.total_time_spent - time_spent)
                        old_milestone.total_progress = calculate_milestone_progress(
                            old_milestone)
                        old_milestone.save()

            if issue is not None:
                return redirect('issues:preview_all')

        return render(request, 'issues/issue_form.html', {
            'form': form,
            'action': 'Edit'
        })