def move_to_clipboard(self, request, files_queryset, folders_queryset): """ Action which moves the selected files and files in selected folders to clipboard. """ if not self.has_change_permission(request): raise PermissionDenied if request.method != "POST": return None clipboard = tools.get_user_clipboard(request.user) check_files_edit_permissions(request, files_queryset) check_folder_edit_permissions(request, folders_queryset) # TODO: Display a confirmation page if moving more than X files to clipboard? files_count = [0] # We define it like that so that we can modify it inside the move_files function def move_files(files): files_count[0] += tools.move_file_to_clipboard(files, clipboard) def move_folders(folders): for f in folders: move_files(f.files) move_folders(f.children.all()) move_files(files_queryset) move_folders(folders_queryset) self.message_user(request, _("Successfully moved %(count)d files to clipboard.") % {"count": files_count[0]}) return None
def _check_resize_perms(self, request, files_queryset, folders_queryset): try: check_files_read_permissions(request, files_queryset) check_folder_read_permissions(request, folders_queryset) check_files_edit_permissions(request, files_queryset) except PermissionDenied: return True return False
def files_set_public_or_private(self, request, set_public, files_queryset, folders_queryset): """ Action which enables or disables permissions for selected files and files in selected folders to clipboard (set them private or public). """ if not self.has_change_permission(request): raise PermissionDenied if request.method != "POST": return None check_files_edit_permissions(request, files_queryset) check_folder_edit_permissions(request, folders_queryset) files_count = [0] # We define it like that so that we can modify it inside the set_files function def set_files(files): for f in files: if f.is_public != set_public: f.is_public = set_public f.save() files_count[0] += 1 def set_folders(folders): for f in folders: set_files(f.files) set_folders(f.children.all()) set_files(files_queryset) set_folders(folders_queryset) if set_public: self.message_user( request, _("Successfully disabled permissions for %(count)d files.") % {"count": files_count[0]} ) else: self.message_user( request, _("Successfully enabled permissions for %(count)d files.") % {"count": files_count[0]} ) return None
def files_set_public_or_private(self, request, set_public, files_queryset, folders_queryset): """ Action which enables or disables permissions for selected files and files in selected folders to clipboard (set them private or public). """ if not self.has_change_permission(request): raise PermissionDenied if request.method != 'POST': return None check_files_edit_permissions(request, files_queryset) check_folder_edit_permissions(request, folders_queryset) files_count = [0] # We define it like that so that we can modify it inside the set_files function def set_files(files): for f in files: if f.is_public != set_public: f.is_public = set_public f.save() files_count[0] += 1 def set_folders(folders): for f in folders: set_files(f.files) set_folders(f.children.all()) set_files(files_queryset) set_folders(folders_queryset) if set_public: self.message_user(request, _("Successfully disabled permissions for %(count)d files.") % { "count": files_count[0], }) else: self.message_user(request, _("Successfully enabled permissions for %(count)d files.") % { "count": files_count[0], }) return None
def move_to_clipboard(self, request, files_queryset, folders_queryset): """ Action which moves the selected files and files in selected folders to clipboard. """ if not self.has_change_permission(request): raise PermissionDenied if request.method != 'POST': return None clipboard = tools.get_user_clipboard(request.user) check_files_edit_permissions(request, files_queryset) check_folder_edit_permissions(request, folders_queryset) # TODO: Display a confirmation page if moving more than X files to clipboard? files_count = [0] # We define it like that so that we can modify it inside the move_files function def move_files(files): files_count[0] += tools.move_file_to_clipboard(files, clipboard) def move_folders(folders): for f in folders: move_files(f.files) move_folders(f.children.all()) move_files(files_queryset) move_folders(folders_queryset) self.message_user(request, _("Successfully moved %(count)d files to clipboard.") % { "count": files_count[0], }) return None