Skip to content

Commit 617229b

Browse files
committed
move payload across ambits
1 parent 9d000e0 commit 617229b

File tree

2 files changed

+11
-18
lines changed

2 files changed

+11
-18
lines changed

finder/admin/ambit.py

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,6 @@
1313
from finder.models.ambit import AmbitModel
1414

1515

16-
# class XXXAmbitAdmin(ModelAdmin):
17-
# def XXXhas_add_permission(self, request):
18-
# return False
19-
#
20-
# def change_view(self, request, object_id, form_url=None, extra_context=None):
21-
# return super().change_view(request, object_id, form_url, extra_context)
22-
#
23-
# def changelist_view(self, request, extra_context=None):
24-
# ambit = AmbitModel.objects.get(name=self.model._meta.model_name)
25-
# # always redirect the list view to the detail view of either the latest used, or the root folder
26-
# return HttpResponsePermanentRedirect(reverse(
27-
# 'admin:finder_inodemodel_change',
28-
# args=(ambit.root_folder.id,),
29-
# current_app=self.admin_site.name,
30-
# ))
31-
32-
3316
def get_ambit_queryset(admin_name, current_site):
3417
return AmbitModel.objects.filter(
3518
Q(site=current_site) | Q(site__isnull=True),

finder/models/folder.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,10 +197,11 @@ def listdir(self, **lookup):
197197

198198
def move_inodes(self, inode_ids):
199199
"""
200-
Move all Inodes with the given IDs to the end of this folder.
200+
Move all Inodes with the given IDs to the end of the current folder.
201201
"""
202202
parent_ids = set()
203203
update_inodes = {}
204+
target_ambit, cache_ambits = self.get_ambit(), {}
204205
entries = FolderModel.objects.filter_unified(id__in=inode_ids)
205206
for ordering, entry in enumerate(entries, self.get_max_ordering() + 1):
206207
parent_ids.add(entry['parent'])
@@ -213,6 +214,15 @@ def move_inodes(self, inode_ids):
213214
proxy_obj.ordering = ordering
214215
proxy_obj.validate_constraints()
215216
update_inodes.setdefault(proxy_obj._meta.concrete_model, []).append(proxy_obj)
217+
if entry['is_folder'] is False:
218+
if not (source_ambit := cache_ambits.get(entry['parent'])):
219+
source_ambit = FolderModel.objects.get(id=entry['parent']).get_ambit()
220+
cache_ambits[entry['parent']] = source_ambit
221+
if target_ambit.id is not source_ambit.id:
222+
# move payload from source_ambit to target_ambit and delete from source_ambit
223+
with source_ambit.original_storage.open(proxy_obj.file_path, 'rb') as readhandle:
224+
target_ambit.original_storage.save(proxy_obj.file_path, readhandle)
225+
source_ambit.original_storage.delete(proxy_obj.file_path)
216226

217227
with transaction.atomic():
218228
for concrete_model, proxy_objects in update_inodes.items():

0 commit comments

Comments
 (0)