def add_relationship(request, bug): if request.method == 'POST': bugRelationshipForm = BugRelationshipForm(request.POST) if bugRelationshipForm.is_valid(): bugRelationships = BugRelationship.objects.filter( source_bug=bug, destination_bug=bugRelationshipForm.cleaned_data[ 'destination_bug']) if bugRelationships.count() > 0: bugRelationship = bugRelationships[0] bugRelationship.relationship_type = \ bugRelationshipForm.cleaned_data['relationship_type'] bugRelationship.save() request.user.message_set.create( message=_('Bug relationship updated')) else: bugRelationship = bugRelationshipForm.save(commit=False) bugRelationship.source_bug = bug bugRelationship.save() request.user.message_set.create( message=_('Bug relationship added')) else: request.user.message_set.create( message=_('Error: bug relationship not changed!')) return HttpResponseRedirect(bug.get_absolute_url())
def filebug(request, clone=False, clone_id=None): """ @todo: handle relationship with parent in case of cloning """ view_name = not clone and 'picket-filebug' or 'picket-filebug-clone' if clone: cloningBug = get_object_or_404(Bug, id=clone_id) else: cloningBug = None if not 'project_id' in request.session: if clone: request.session['project_id'] = cloningBug.project_id else: return HttpResponseRedirect( reverse('picket-choose-project-gonext', kwargs={'view_name': view_name,})) scopes = Scope.objects.get_permited(request.user) if request.method == 'POST': bugForm = BugForm(request.POST) bugFileForm = BugFileForm(request.POST, request.FILES, prefix='bugfile') if clone: bugRelationshipForm = BugRelationshipForm(request.POST) else: bugRelationshipForm = BugRelationshipForm() if bugForm.is_valid(): bug = bugForm.save(commit=False) bug.reporter = request.user bug.save() request.user.message_set.create(message=_('bug filed')) if bugFileForm.is_valid(): bugFile = bugFileForm.save(commit=False) bugFile.bug = bug bugFile.save() request.user.message_set.create( message=_('file for bug uploaded')) if bugRelationshipForm.is_valid(): bugRelationship = bugRelationshipForm.save(commit=False) bugRelationship.source_bug = bug bugRelationship.save() request.user.message_set.create( message=_('relationship added')) return HttpResponseRedirect(bug.get_absolute_url()) else: if clone: bugForm = BugForm(instance=cloningBug, project_id=request.session['project_id']) bugRelationshipForm = BugRelationshipForm( initial={'bugrelationship_type': BUGRELATIONSHIP_TYPE_DEFAULT,}) else: bugForm = BugForm(project_id=request.session['project_id']) bugRelationshipForm = None bugFileForm = BugFileForm(prefix='bugfile') return direct_to_template(request, 'picket/bug_form.html', {'bug_form': bugForm, 'bugfile_form': bugFileForm, 'scopes': scopes, 'is_clone': clone, 'cloning_bug': cloningBug, 'bug_relationship_form': bugRelationshipForm,})