Add nested collection management
This commit is contained in:
+8
-6
@@ -800,27 +800,29 @@ def collection_manage(request, pk):
|
||||
if collection.mode == Collection.Mode.TAGS:
|
||||
return redirect('collection_edit', pk=collection.pk)
|
||||
manage_url = reverse('collection_manage', args=[collection.pk])
|
||||
q = request.GET.get('q', '').strip()
|
||||
redirect_url = f'{manage_url}?q={q}' if q else manage_url
|
||||
if request.method == 'POST':
|
||||
action = request.POST.get('action')
|
||||
if action in {'add', 'confirm_add'}:
|
||||
item = get_object_or_404(editable_collection_notes(request.user), pk=request.POST.get('item_id'))
|
||||
if collection_item_is_compatible(collection, item):
|
||||
add_collection_section(collection, item)
|
||||
return redirect(manage_url)
|
||||
return redirect(redirect_url)
|
||||
if action == 'add':
|
||||
return render(request, 'core/collection_manage.html', collection_detail_context(request, collection, item))
|
||||
mode = request.POST.get('mode')
|
||||
if mode == 'convert':
|
||||
if not item_can_change_for_collection(request.user, item, collection):
|
||||
messages.error(request, _('This note is used by an incompatible collection or cannot be edited. Create a copy instead.'))
|
||||
return redirect(manage_url)
|
||||
return redirect(redirect_url)
|
||||
item = adapt_item_for_collection(item, collection)
|
||||
elif mode == 'copy':
|
||||
item = copy_item_for_collection(item, collection, request.user)
|
||||
else:
|
||||
return redirect(manage_url)
|
||||
return redirect(redirect_url)
|
||||
add_collection_section(collection, item)
|
||||
return redirect(manage_url)
|
||||
return redirect(redirect_url)
|
||||
if action == 'add_collection':
|
||||
sub_collection = get_object_or_404(visible_collections(request.user), pk=request.POST.get('collection_id'), mode=Collection.Mode.MANUAL)
|
||||
if sub_collection.pk == collection.pk or collection_contains_collection(sub_collection, collection):
|
||||
@@ -829,7 +831,7 @@ def collection_manage(request, pk):
|
||||
messages.error(request, _('This collection has an incompatible visibility.'))
|
||||
else:
|
||||
add_collection_subcollection(collection, sub_collection)
|
||||
return redirect(manage_url)
|
||||
return redirect(redirect_url)
|
||||
section = get_object_or_404(CollectionSection, pk=request.POST.get('section_id'), collection=collection)
|
||||
if action == 'remove':
|
||||
section.delete()
|
||||
@@ -848,7 +850,7 @@ def collection_manage(request, pk):
|
||||
CollectionSection.objects.filter(pk=section.pk).update(position=temporary)
|
||||
CollectionSection.objects.filter(pk=other.pk).update(position=section.position)
|
||||
CollectionSection.objects.filter(pk=section.pk).update(position=other.position)
|
||||
return redirect(manage_url)
|
||||
return redirect(redirect_url)
|
||||
return render(request, 'core/collection_manage.html', collection_detail_context(request, collection))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user