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'))
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")
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')
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'))
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))
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)
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' })
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' })
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' })
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' })
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' })