(self, folder, destination, suffix, overwrite)
| 1108 | return name |
| 1109 | |
| 1110 | def _copy_folder(self, folder, destination, suffix, overwrite): |
| 1111 | if overwrite: |
| 1112 | # Not yet implemented as we have to find a portable (for different storage backends) way to overwrite files |
| 1113 | raise NotImplementedError |
| 1114 | |
| 1115 | # TODO: Should we also allow not to overwrite the folder if it exists, but just copy into it? |
| 1116 | |
| 1117 | # TODO: Is this a race-condition? Would this be a problem? |
| 1118 | foldername = self._get_available_name(destination, folder.name) |
| 1119 | |
| 1120 | old_folder = Folder.objects.get(pk=folder.pk) |
| 1121 | |
| 1122 | folder, _ = Folder.objects.get_or_create( |
| 1123 | name=foldername, |
| 1124 | owner=old_folder.owner, |
| 1125 | parent=destination, |
| 1126 | ) |
| 1127 | |
| 1128 | for perm in FolderPermission.objects.filter(folder=old_folder): |
| 1129 | perm.pk = None |
| 1130 | perm.id = None |
| 1131 | perm.folder = folder |
| 1132 | perm.save() |
| 1133 | |
| 1134 | return 1 + self._copy_files_and_folders_impl(old_folder.files.all(), old_folder.children.all(), folder, suffix, overwrite) |
| 1135 | |
| 1136 | def _copy_files_and_folders_impl(self, files_queryset, folders_queryset, destination, suffix, overwrite): |
| 1137 | n = self._copy_files(files_queryset, destination, suffix, overwrite) |
no test coverage detected