def bundle(request, username, bundlename): bundle = get_object_or_404(Bundle, owner__username = username, name = bundlename) filter_settings = [(DelegateFilter, DelegateFilter.AnyDelegate)] is_owner = request.user == bundle.owner if not (is_owner or bundle.public): return HttpResponseNotFound() if is_owner: if request.method == 'POST' and request.POST.get('form') == 'bundle': action = request.POST.get('action', '').lower() if action == 'delete': bundle.delete() return HttpResponseRedirect( django.core.urlresolvers.reverse( 'patchwork.views.user.profile') ) elif action == 'update': form = BundleForm(request.POST, instance = bundle) if form.is_valid(): form.save() # if we've changed the bundle name, redirect to new URL bundle = Bundle.objects.get(pk = bundle.pk) if bundle.name != bundlename: return HttpResponseRedirect(bundle.get_absolute_url()) else: form = BundleForm(instance = bundle) else: form = BundleForm(instance = bundle) if request.method == 'POST' and \ request.POST.get('form') == 'reorderform': order = get_object_or_404(BundlePatch, bundle = bundle, patch__id = request.POST.get('order_start')).order for patch_id in request.POST.getlist('neworder'): bundlepatch = get_object_or_404(BundlePatch, bundle = bundle, patch__id = patch_id) bundlepatch.order = order bundlepatch.save() order += 1 else: form = None context = generic_list(request, bundle.project, 'patchwork.views.bundle.bundle', view_args = {'username': bundle.owner.username, 'bundlename': bundle.name}, filter_settings = filter_settings, patches = bundle.ordered_patches(), editable_order = is_owner) context['bundle'] = bundle context['bundleform'] = form return render_to_response('patchwork/bundle.html', context)
def bundle(request, bundle_id): bundle = get_object_or_404(Bundle, id = bundle_id) filter_settings = [(DelegateFilter, DelegateFilter.AnyDelegate)] if request.method == 'POST' and request.POST.get('form') == 'bundle': action = request.POST.get('action', '').lower() if action == 'delete': bundle.delete() return HttpResponseRedirect( django.core.urlresolvers.reverse( 'patchwork.views.user.profile') ) elif action == 'update': form = BundleForm(request.POST, instance = bundle) if form.is_valid(): form.save() else: form = BundleForm(instance = bundle) if request.method == 'POST' and request.POST.get('form') == 'reorderform': order = get_object_or_404(BundlePatch, bundle = bundle, patch__id = request.POST.get('order_start')).order for patch_id in request.POST.getlist('neworder'): bundlepatch = get_object_or_404(BundlePatch, bundle = bundle, patch__id = patch_id) bundlepatch.order = order bundlepatch.save() order += 1 context = generic_list(request, bundle.project, 'patchwork.views.bundle.bundle', view_args = {'bundle_id': bundle_id}, filter_settings = filter_settings, patches = bundle.ordered_patches(), editable_order = True) context['bundle'] = bundle context['bundleform'] = form return render_to_response('patchwork/bundle.html', context)
def bundle_detail(request, username, bundlename): bundle = get_object_or_404(Bundle, owner__username=username, name=bundlename) filter_settings = [(DelegateFilter, DelegateFilter.AnyDelegate)] is_owner = request.user == bundle.owner if not (is_owner or bundle.public): return HttpResponseNotFound() if is_owner: if request.method == 'POST' and request.POST.get('form') == 'bundle': action = request.POST.get('action', '').lower() if action == 'delete': bundle.delete() return HttpResponseRedirect(reverse('user-profile')) elif action == 'update': form = BundleForm(request.POST, instance=bundle) if form.is_valid(): form.save() # if we've changed the bundle name, redirect to new URL bundle = Bundle.objects.get(pk=bundle.pk) if bundle.name != bundlename: return HttpResponseRedirect(bundle.get_absolute_url()) else: form = BundleForm(instance=bundle) else: form = BundleForm(instance=bundle) if (request.method == 'POST' and request.POST.get('form') == 'reorderform'): order = get_object_or_404( BundlePatch, bundle=bundle, patch__id=request.POST.get('order_start')).order for patch_id in request.POST.getlist('neworder'): bundlepatch = get_object_or_404(BundlePatch, bundle=bundle, patch__id=patch_id) bundlepatch.order = order bundlepatch.save() order += 1 else: form = None context = generic_list(request, bundle.project, 'bundle-detail', view_args={'username': bundle.owner.username, 'bundlename': bundle.name}, filter_settings=filter_settings, patches=bundle.ordered_patches(), editable_order=is_owner) context['bundle'] = bundle context['bundleform'] = form return render(request, 'patchwork/bundle.html', context)