|
13 | 13 |
|
14 | 14 | from finder.models.file import InodeModel, FileModel |
15 | 15 | from finder.models.folder import FolderModel, PinnedFolder |
16 | | -from finder.models.inode import DiscardedInode, InodeManager |
| 16 | +from finder.models.inode import DiscardedInode, InodeManager, filename_validator |
17 | 17 | from finder.models.label import Label |
18 | 18 |
|
19 | 19 | from .inode import InodeAdmin |
@@ -228,9 +228,14 @@ def update_inode(self, request, folder_id): |
228 | 228 | except (InodeModel.DoesNotExist, KeyError): |
229 | 229 | return HttpResponseNotFound(f"Inode(id={body.get('id', '<missing>')}) not found.") |
230 | 230 | current_folder = self.get_object(request, folder_id) |
231 | | - if current_folder.listdir(name=body['name'], is_folder=True).exists(): |
| 231 | + inode_name = body['name'] |
| 232 | + try: |
| 233 | + filename_validator(inode_name) |
| 234 | + except ValidationError as exc: |
| 235 | + return HttpResponseBadRequest(exc.message, status=409) |
| 236 | + if current_folder.listdir(name=inode_name, is_folder=True).exists(): |
232 | 237 | msg = gettext("A folder named “{name}” already exists.") |
233 | | - return HttpResponseBadRequest(msg.format(name=body['name']), status=409) |
| 238 | + return HttpResponseBadRequest(msg.format(name=inode_name), status=409) |
234 | 239 | update_values = {} |
235 | 240 | for field in self.get_fields(request, obj): |
236 | 241 | if field in body and body[field] != getattr(obj, field): |
|
0 commit comments