def _create_folder(self, name, parent, shop): folder = Folder.objects.create(name=name) if parent: folder.move_to(parent, "last-child") folder.save() ensure_media_folder(shop, folder) return JsonResponse({"success": True, "folder": filer_folder_to_json_dict(folder, (), self.user)})
def get_or_create_folder(shop, path): folders = path.split("/") parent = None child = None created = False for folder in folders: if folder != "": child, created = Folder.objects.get_or_create(parent=parent, name=folder) ensure_media_folder(shop, child) parent = child return child
def handle_post_new_folder(self, data): shop = get_shop(self.request) parent_id = int(data.get("parent", 0)) if parent_id > 0: parent = _get_folder_query(shop).get(pk=parent_id) else: parent = None name = data["name"] folder = Folder.objects.create(name=name) if parent: folder.move_to(parent, "last-child") folder.save() ensure_media_folder(shop, folder) return JsonResponse({"success": True, "folder": filer_folder_to_json_dict(folder, ())})
def test_get_folders_without_view_all_permission(rf): shop = factories.get_default_shop() staff_user = factories.UserFactory(is_staff=True) permission_group = factories.get_default_permission_group() staff_user.groups.add(permission_group) shop.staff_members.add(staff_user) set_permissions_for_group(permission_group, ["upload-media"]) assert not can_see_root_folder(staff_user) # Create a structure and retrieve it folder1 = get_or_create_folder(shop, printable_gibberish()) folder1_media_folder = ensure_media_folder(shop, folder1) folder1_media_folder.owners.add(staff_user) folder2 = get_or_create_folder(shop, printable_gibberish()) folder3 = get_or_create_folder(shop, printable_gibberish()) folder4 = get_or_create_folder(shop, printable_gibberish()) folder4.parent = folder2 folder4.save() folder4_media_folder = ensure_media_folder(shop, folder4) folder4_media_folder.owners.add(staff_user) folder5 = get_or_create_folder(shop, printable_gibberish()) folder5.parent = folder4 folder5.save() folder6 = get_or_create_folder(shop, printable_gibberish()) folder6.parent = folder5 folder6.save() folder6_media_folder = ensure_media_folder(shop, folder6) folder6_media_folder.owners.add(staff_user) folder7 = get_or_create_folder(shop, printable_gibberish()) folder7.parent = folder6 folder7.save() tree = get_id_tree(mbv_command(staff_user, {"action": "folders"}, "GET")) assert set((folder1.id, folder4.id)) <= set(tree.keys())