def patch(request, patch_id): context = PatchworkRequestContext(request) patch = get_object_or_404(Patch, id=patch_id) context.project = patch.project editable = patch.is_editable(request.user) form = None createbundleform = None if editable: form = PatchForm(instance = patch) if request.user.is_authenticated(): createbundleform = CreateBundleForm() if request.method == 'POST': action = request.POST.get('action', None) if action: action = action.lower() if action == 'createbundle': bundle = Bundle(owner = request.user, project = patch.project) createbundleform = CreateBundleForm(instance = bundle, data = request.POST) if createbundleform.is_valid(): createbundleform.save() bundle.append_patch(patch) bundle.save() createbundleform = CreateBundleForm() context.add_message('Bundle %s created' % bundle.name) elif action == 'addtobundle': bundle = get_object_or_404(Bundle, id = \ request.POST.get('bundle_id')) try: bundle.append_patch(patch) bundle.save() context.add_message('Patch added to bundle "%s"' % bundle.name) except Exception, ex: context.add_message("Couldn't add patch '%s' to bundle %s: %s" \ % (patch.name, bundle.name, ex.message)) # all other actions require edit privs elif not editable: return HttpResponseForbidden() elif action is None: form = PatchForm(data = request.POST, instance = patch) if form.is_valid(): form.save() context.add_message('Patch updated')
def get(self, request, *args, **kwargs): series = get_object_or_404(Series, pk=kwargs['series']) revisions = get_list_or_404(SeriesRevision, series=series) patchform = PatchForm(project=series.project) createbundleform = CreateBundleForm() if request.user.is_authenticated(): bundles = Bundle.objects.filter(owner=request.user) else: bundles = "" for revision in revisions: revision.patch_list = revision.ordered_patches().\ select_related('state', 'submitter') revision.test_results = TestResult.objects \ .filter(revision=revision, patch=None) \ .order_by('test__name').select_related('test') return render( request, 'patchwork/series.html', { 'series': series, 'project': series.project, 'cover_letter': revision.cover_letter, 'revisions': revisions, 'patchform': patchform, 'createbundleform': createbundleform, 'bundles': bundles, })
def patch(request, patch_id): context = PatchworkRequestContext(request) patch = get_object_or_404(Patch, id=patch_id) context.project = patch.project editable = patch.is_editable(request.user) form = None createbundleform = None if editable: form = PatchForm(instance=patch) if request.user.is_authenticated(): createbundleform = CreateBundleForm() if request.method == 'POST': action = request.POST.get('action', None) if action: action = action.lower() if action == 'createbundle': bundle = Bundle(owner=request.user, project=patch.project) createbundleform = CreateBundleForm(instance=bundle, data=request.POST) if createbundleform.is_valid(): createbundleform.save() bundle.append_patch(patch) bundle.save() createbundleform = CreateBundleForm() context.add_message('Bundle %s created' % bundle.name) elif action == 'addtobundle': bundle = get_object_or_404( Bundle, id=request.POST.get('bundle_id')) try: bundle.append_patch(patch) bundle.save() context.add_message('Patch added to bundle "%s"' % bundle.name) except Exception as ex: context.add_message("Couldn't add patch '%s' to bundle %s: %s" % (patch.name, bundle.name, ex.message)) # all other actions require edit privs elif not editable: return HttpResponseForbidden() elif action is None: form = PatchForm(data=request.POST, instance=patch) if form.is_valid(): form.save() context.add_message('Patch updated') context['patch'] = patch context['patchform'] = form context['createbundleform'] = createbundleform context['project'] = patch.project context['test_results'] = TestResult.objects \ .filter(revision=None, patch=patch) \ .order_by('test__name').select_related('test') return render_to_response('patchwork/patch.html', context)
def patch(request, patch_id): context = PatchworkRequestContext(request) patch = get_object_or_404(Patch, id=patch_id) context.project = patch.project editable = patch.is_editable(request.user) form = None createbundleform = None if editable: form = PatchForm(instance=patch) if request.user.is_authenticated(): createbundleform = CreateBundleForm() if request.method == 'POST': action = request.POST.get('action', None) if action: action = action.lower() if action == 'createbundle': bundle = Bundle(owner=request.user, project=patch.project) createbundleform = CreateBundleForm(instance=bundle, data=request.POST) if createbundleform.is_valid(): createbundleform.save() bundle.append_patch(patch) bundle.save() createbundleform = CreateBundleForm() context.add_message('Bundle %s created' % bundle.name) elif action == 'addtobundle': bundle = get_object_or_404(Bundle, id = \ request.POST.get('bundle_id')) try: bundle.append_patch(patch) bundle.save() context.add_message('Patch added to bundle "%s"' % bundle.name) except Exception, ex: context.add_message("Couldn't add patch '%s' to bundle %s: %s" \ % (patch.name, bundle.name, ex.message)) # all other actions require edit privs elif not editable: return HttpResponseForbidden() elif action is None: form = PatchForm(data=request.POST, instance=patch) if form.is_valid(): form.save() context.add_message('Patch updated')
def patch_detail(request, patch_id): # redirect to cover letters where necessary try: patch = get_object_or_404(Patch, id=patch_id) except Http404 as exc: submissions = Submission.objects.filter(id=patch_id) if submissions: return HttpResponseRedirect( reverse('cover-detail', kwargs={'cover_id': patch_id})) raise exc editable = patch.is_editable(request.user) context = {'project': patch.project} form = None createbundleform = None if editable: form = PatchForm(instance=patch) if request.user.is_authenticated: createbundleform = CreateBundleForm() if request.method == 'POST': action = request.POST.get('action', None) if action: action = action.lower() if action == 'createbundle': bundle = Bundle(owner=request.user, project=patch.project) createbundleform = CreateBundleForm(instance=bundle, data=request.POST) if createbundleform.is_valid(): createbundleform.save() bundle.append_patch(patch) bundle.save() createbundleform = CreateBundleForm() messages.success(request, 'Bundle %s created' % bundle.name) elif action == 'addtobundle': bundle = get_object_or_404(Bundle, id=request.POST.get('bundle_id')) if bundle.append_patch(patch): messages.success( request, 'Patch "%s" added to bundle "%s"' % (patch.name, bundle.name)) else: messages.error( request, 'Failed to add patch "%s" to bundle "%s": ' 'patch is already in bundle' % (patch.name, bundle.name)) # all other actions require edit privs elif not editable: return HttpResponseForbidden() elif action is None: form = PatchForm(data=request.POST, instance=patch) if form.is_valid(): form.save() messages.success(request, 'Patch updated') if request.user.is_authenticated: context['bundles'] = request.user.bundles.all() comments = patch.comments.all() comments = comments.select_related('submitter') comments = comments.only('submitter', 'date', 'id', 'content', 'submission') context['comments'] = comments context['checks'] = patch.check_set.all().select_related('user') context['submission'] = patch context['patchform'] = form context['createbundleform'] = createbundleform context['project'] = patch.project return render(request, 'patchwork/submission.html', context)
def patch_detail(request, project_id, msgid): project = get_object_or_404(Project, linkname=project_id) db_msgid = ('<%s>' % msgid) # redirect to cover letters where necessary try: patch = Patch.objects.get(project_id=project.id, msgid=db_msgid) except Patch.DoesNotExist: submissions = Submission.objects.filter(project_id=project.id, msgid=db_msgid) if submissions: return HttpResponseRedirect( reverse('cover-detail', kwargs={'project_id': project.linkname, 'msgid': msgid})) raise Http404('Patch does not exist') editable = patch.is_editable(request.user) context = { 'project': patch.project } form = None createbundleform = None if editable: form = PatchForm(instance=patch) if request.user.is_authenticated: createbundleform = CreateBundleForm() if request.method == 'POST': action = request.POST.get('action', None) if action: action = action.lower() if action == 'createbundle': bundle = Bundle(owner=request.user, project=project) createbundleform = CreateBundleForm(instance=bundle, data=request.POST) if createbundleform.is_valid(): createbundleform.save() bundle.append_patch(patch) bundle.save() createbundleform = CreateBundleForm() messages.success(request, 'Bundle %s created' % bundle.name) elif action == 'addtobundle': bundle = get_object_or_404( Bundle, id=request.POST.get('bundle_id')) if bundle.append_patch(patch): messages.success(request, 'Patch "%s" added to bundle "%s"' % ( patch.name, bundle.name)) else: messages.error(request, 'Failed to add patch "%s" to bundle "%s": ' 'patch is already in bundle' % ( patch.name, bundle.name)) # all other actions require edit privs elif not editable: return HttpResponseForbidden() elif action is None: form = PatchForm(data=request.POST, instance=patch) if form.is_valid(): form.save() messages.success(request, 'Patch updated') if request.user.is_authenticated: context['bundles'] = request.user.bundles.all() comments = patch.comments.all() comments = comments.select_related('submitter') comments = comments.only('submitter', 'date', 'id', 'content', 'submission') if patch.related: related_same_project = patch.related.patches.only( 'name', 'msgid', 'project', 'related') # avoid a second trip out to the db for info we already have related_different_project = [ related_patch for related_patch in related_same_project if related_patch.project_id != patch.project_id ] else: related_same_project = [] related_different_project = [] context['comments'] = comments context['checks'] = patch.check_set.all().select_related('user') context['submission'] = patch context['patchform'] = form context['createbundleform'] = createbundleform context['project'] = patch.project context['related_same_project'] = related_same_project context['related_different_project'] = related_different_project return render(request, 'patchwork/submission.html', context)
def patch(request, patch_id): patch = get_object_or_404(Patch, id=patch_id) editable = Can(request.user).edit(patch) messages = [] form = None createbundleform = None if editable: form = PatchForm(instance=patch) if request.user.is_authenticated(): createbundleform = CreateBundleForm() if request.method == 'POST': action = request.POST.get('action', None) if action: action = action.lower() if action == 'createbundle': bundle = Bundle(owner=request.user, project=patch.project) createbundleform = CreateBundleForm(instance=bundle, data=request.POST) if createbundleform.is_valid(): createbundleform.save() bundle.append_patch(patch) bundle.save() createbundleform = CreateBundleForm() messages += ['Bundle %s created' % bundle.name] elif action == 'addtobundle': bundle = get_object_or_404( Bundle, id=request.POST.get('bundle_id')) try: bundle.append_patch(patch) bundle.save() messages += ['Patch added to bundle "%s"' % bundle.name] except Exception as ex: messages += ["Couldn't add patch '%s' to bundle %s: %s" % (patch.name, bundle.name, ex.message)] # all other actions require edit privs elif not editable: return HttpResponseForbidden() elif action is None: form = PatchForm(data=request.POST, instance=patch) if form.is_valid(): form.save() messages += ['Patch updated'] context = { 'series': patch.series(), 'patch': patch, 'patchform': form, 'createbundleform': createbundleform, 'project': patch.project, 'messages': messages, 'test_results': TestResult.objects .filter(revision=None, patch=patch) .order_by('test__name').select_related('test')} return render(request, 'patchwork/patch.html', context)
def patch_detail(request, patch_id): # redirect to cover letters where necessary try: patch = get_object_or_404(Patch, id=patch_id) except Http404 as exc: submissions = Submission.objects.filter(id=patch_id) if submissions: return HttpResponseRedirect( reverse('cover-detail', kwargs={'cover_id': patch_id})) raise exc editable = patch.is_editable(request.user) context = { 'project': patch.project } form = None createbundleform = None if editable: form = PatchForm(instance=patch) if is_authenticated(request.user): createbundleform = CreateBundleForm() if request.method == 'POST': action = request.POST.get('action', None) if action: action = action.lower() if action == 'createbundle': bundle = Bundle(owner=request.user, project=patch.project) createbundleform = CreateBundleForm(instance=bundle, data=request.POST) if createbundleform.is_valid(): createbundleform.save() bundle.append_patch(patch) bundle.save() createbundleform = CreateBundleForm() messages.success(request, 'Bundle %s created' % bundle.name) elif action == 'addtobundle': bundle = get_object_or_404( Bundle, id=request.POST.get('bundle_id')) if bundle.append_patch(patch): messages.success(request, 'Patch "%s" added to bundle "%s"' % ( patch.name, bundle.name)) else: messages.error(request, 'Failed to add patch "%s" to bundle "%s": ' 'patch is already in bundle' % ( patch.name, bundle.name)) # all other actions require edit privs elif not editable: return HttpResponseForbidden() elif action is None: form = PatchForm(data=request.POST, instance=patch) if form.is_valid(): form.save() messages.success(request, 'Patch updated') if is_authenticated(request.user): context['bundles'] = Bundle.objects.filter(owner=request.user) context['submission'] = patch context['patchform'] = form context['createbundleform'] = createbundleform context['project'] = patch.project return render(request, 'patchwork/submission.html', context)
def post(self, request, *args, **kwargs): init_data = request.POST patches=json.loads(init_data.get('patches')) series =get_object_or_404(Series, pk=kwargs['series']) revisions = get_list_or_404(SeriesRevision, series=series) context = PatchworkRequestContext(request) context.project = series.project form = None createbundleform = None for revision in revisions: revision.patch_list = revision.ordered_patches().\ select_related('state', 'submitter') revision.test_results = TestResult.objects \ .filter(revision=revision, patch=None) \ .order_by('test__name').select_related('test') if request.user.is_authenticated(): createbundleform = CreateBundleForm() if request.method == 'POST': action = request.POST.get('action', None) if action: action = action.lower() if action == 'createbundle': bundle = Bundle(owner=request.user, project=series.project) createbundleform = CreateBundleForm(instance=bundle, data=request.POST) if createbundleform.is_valid(): createbundleform.save() elif action == 'addtobundle': bundle = get_object_or_404( Bundle, id=request.POST.get('bundle_id')) for pa_id in patches: patch = get_object_or_404(Patch, id=pa_id) editable = patch.is_editable(request.user) if editable: form = PatchForm(instance=patch) if action == 'createbundle': if createbundleform.is_valid(): bundle.append_patch(patch) bundle.save() elif action == 'addtobundle': try: bundle.append_patch(patch) bundle.save() context.add_message('Patch %s added to bundle "%s"' % (patch.pk, bundle.name)) except Exception as ex: context.add_message('Couldn\'t add patch %s to bundle\ "%s": %s' % (patch.pk, bundle.name, ex.message)) # all other actions require edit privs elif not editable: return HttpResponseForbidden() elif action is None: form = PatchForm(data=request.POST, instance=patch) if form.is_valid(): form.save() context.add_message('Patch ID: %s updated' % patch.pk) if action == 'createbundle': createbundleform.save() createbundleform = CreateBundleForm() context.add_message('Bundle %s created' % bundle.name) context['series'] = series context['patchform'] = form context['createbundleform'] = createbundleform context['project'] = series.project context['revisions'] = revisions context['test_results'] = TestResult.objects \ .filter(revision=None, patch=patch) \ .order_by('test__name').select_related('test') return render_to_response('patchwork/series.html', context)
def post(self, request, *args, **kwargs): init_data = request.POST patches = json.loads(init_data.get('patches')) series = get_object_or_404(Series, pk=kwargs['series']) revisions = get_list_or_404(SeriesRevision, series=series) context = PatchworkRequestContext(request) context.project = series.project form = None createbundleform = None for revision in revisions: revision.patch_list = revision.ordered_patches().\ select_related('state', 'submitter') revision.test_results = TestResult.objects \ .filter(revision=revision, patch=None) \ .order_by('test__name').select_related('test') if request.user.is_authenticated(): createbundleform = CreateBundleForm() if request.method == 'POST': action = request.POST.get('action', None) if action: action = action.lower() if action == 'createbundle': bundle = Bundle(owner=request.user, project=series.project) createbundleform = CreateBundleForm(instance=bundle, data=request.POST) if createbundleform.is_valid(): createbundleform.save() elif action == 'addtobundle': bundle = get_object_or_404(Bundle, id=request.POST.get('bundle_id')) for pa_id in patches: patch = get_object_or_404(Patch, id=pa_id) editable = patch.is_editable(request.user) if editable: form = PatchForm(instance=patch) if action == 'createbundle': if createbundleform.is_valid(): bundle.append_patch(patch) bundle.save() elif action == 'addtobundle': try: bundle.append_patch(patch) bundle.save() context.add_message('Patch %s added to bundle "%s"' % (patch.pk, bundle.name)) except Exception as ex: context.add_message('Couldn\'t add patch %s to bundle\ "%s": %s' % (patch.pk, bundle.name, ex.message)) # all other actions require edit privs elif not editable: return HttpResponseForbidden() elif action is None: form = PatchForm(data=request.POST, instance=patch) if form.is_valid(): form.save() context.add_message('Patch ID: %s updated' % patch.pk) if action == 'createbundle': createbundleform.save() createbundleform = CreateBundleForm() context.add_message('Bundle %s created' % bundle.name) context['series'] = series context['patchform'] = form context['createbundleform'] = createbundleform context['project'] = series.project context['revisions'] = revisions context['test_results'] = TestResult.objects \ .filter(revision=None, patch=patch) \ .order_by('test__name').select_related('test') return render_to_response('patchwork/series.html', context)
def patch(request, patch_id): patch = get_object_or_404(Patch, id=patch_id) editable = patch.is_editable(request.user) context = { 'project': patch.project } form = None createbundleform = None if editable: form = PatchForm(instance=patch) if request.user.is_authenticated(): createbundleform = CreateBundleForm() if request.method == 'POST': action = request.POST.get('action', None) if action: action = action.lower() if action == 'createbundle': bundle = Bundle(owner=request.user, project=patch.project) createbundleform = CreateBundleForm(instance=bundle, data=request.POST) if createbundleform.is_valid(): createbundleform.save() bundle.append_patch(patch) bundle.save() createbundleform = CreateBundleForm() messages.success(request, 'Bundle %s created' % bundle.name) elif action == 'addtobundle': bundle = get_object_or_404( Bundle, id=request.POST.get('bundle_id')) try: bundle.append_patch(patch) bundle.save() messages.success(request, 'Patch added to bundle "%s"' % bundle.name) except Exception as ex: messages.error(request, "Couldn't add patch '%s' to bundle %s: %s" % (patch.name, bundle.name, ex.message)) # all other actions require edit privs elif not editable: return HttpResponseForbidden() elif action is None: form = PatchForm(data=request.POST, instance=patch) if form.is_valid(): form.save() messages.success(request, 'Patch updated') if request.user.is_authenticated(): context['bundles'] = Bundle.objects.filter(owner=request.user) context['patch'] = patch context['patchform'] = form context['createbundleform'] = createbundleform context['project'] = patch.project return render(request, 'patchwork/patch.html', context)