mirror of
https://github.com/sissbruecker/linkding.git
synced 2025-08-07 18:58:30 +02:00
38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
from django.db.models import Max
|
|
|
|
from bookmarks.models import BookmarkBundle, User
|
|
|
|
|
|
def create_bundle(bundle: BookmarkBundle, current_user: User):
|
|
bundle.owner = current_user
|
|
if bundle.order is None:
|
|
max_order_result = BookmarkBundle.objects.filter(owner=current_user).aggregate(
|
|
Max("order", default=-1)
|
|
)
|
|
bundle.order = max_order_result["order__max"] + 1
|
|
bundle.save()
|
|
return bundle
|
|
|
|
|
|
def move_bundle(bundle_to_move: BookmarkBundle, new_order: int):
|
|
user_bundles = list(
|
|
BookmarkBundle.objects.filter(owner=bundle_to_move.owner).order_by("order")
|
|
)
|
|
|
|
if new_order != user_bundles.index(bundle_to_move):
|
|
user_bundles.remove(bundle_to_move)
|
|
user_bundles.insert(new_order, bundle_to_move)
|
|
for bundle_index, bundle in enumerate(user_bundles):
|
|
bundle.order = bundle_index
|
|
|
|
BookmarkBundle.objects.bulk_update(user_bundles, ["order"])
|
|
|
|
|
|
def delete_bundle(bundle: BookmarkBundle):
|
|
bundle.delete()
|
|
|
|
user_bundles = BookmarkBundle.objects.filter(owner=bundle.owner).order_by("order")
|
|
for index, user_bundle in enumerate(user_bundles):
|
|
user_bundle.order = index
|
|
BookmarkBundle.objects.bulk_update(user_bundles, ["order"])
|