Add continuous collection reading view
This commit is contained in:
+20
-9
@@ -692,29 +692,40 @@ def collection_edit(request, pk):
|
||||
|
||||
def collection_detail(request, pk):
|
||||
collection = get_object_or_404(visible_collections(request.user), pk=pk)
|
||||
return render(request, 'core/collection_detail.html', {
|
||||
'collection': collection,
|
||||
'sections': collection.sections.select_related('item').prefetch_related('item__tags', 'item__attachments'),
|
||||
'can_edit': user_can_edit_collection(request.user, collection),
|
||||
})
|
||||
|
||||
|
||||
@login_required
|
||||
def collection_manage(request, pk):
|
||||
collection = get_object_or_404(visible_collections(request.user), pk=pk)
|
||||
if not user_can_edit_collection(request.user, collection):
|
||||
return JsonResponse({'error': 'forbidden'}, status=403)
|
||||
manage_url = reverse('collection_manage', args=[collection.pk])
|
||||
if request.method == 'POST':
|
||||
if not user_can_edit_collection(request.user, collection):
|
||||
return JsonResponse({'error': 'forbidden'}, status=403)
|
||||
action = request.POST.get('action')
|
||||
if action in {'add', 'confirm_add'}:
|
||||
item = get_object_or_404(visible_items(request.user), pk=request.POST.get('item_id'), kind=Item.Kind.NOTE)
|
||||
if collection_item_is_compatible(collection, item):
|
||||
add_collection_section(collection, item)
|
||||
return redirect(collection)
|
||||
return redirect(manage_url)
|
||||
if action == 'add':
|
||||
return render(request, 'core/collection_detail.html', collection_detail_context(request, collection, item))
|
||||
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(collection)
|
||||
return redirect(manage_url)
|
||||
item = adapt_item_for_collection(item, collection)
|
||||
elif mode == 'copy':
|
||||
item = copy_item_for_collection(item, collection, request.user)
|
||||
else:
|
||||
return redirect(collection)
|
||||
return redirect(manage_url)
|
||||
add_collection_section(collection, item)
|
||||
return redirect(collection)
|
||||
return redirect(manage_url)
|
||||
section = get_object_or_404(CollectionSection, pk=request.POST.get('section_id'), collection=collection)
|
||||
if action == 'remove':
|
||||
section.delete()
|
||||
@@ -733,8 +744,8 @@ def collection_detail(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(collection)
|
||||
return render(request, 'core/collection_detail.html', collection_detail_context(request, collection))
|
||||
return redirect(manage_url)
|
||||
return render(request, 'core/collection_manage.html', collection_detail_context(request, collection))
|
||||
|
||||
|
||||
@login_required
|
||||
|
||||
Reference in New Issue
Block a user