Skip to content

Commit ad72517

Browse files
committed
feat: add validation for folder name uniqueness and parent folder assignment
--bug=1057431 --user=刘瑞斌 【工具】文件夹编辑,可以修改名称与同级文件夹重名 https://www.tapd.cn/62980211/s/1718940
1 parent 4320270 commit ad72517

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

apps/folders/serializers/folder.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,15 +149,26 @@ def edit(self, instance):
149149
current_node = Folder.objects.get(id=current_id)
150150
if current_node is None:
151151
raise serializers.ValidationError(_('Folder does not exist'))
152+
# 模块间的移动
153+
parent_id = instance.get('parent_id')
154+
if parent_id is None:
155+
parent_id = current_node.parent_id
156+
# 如果要修改文件夹名称,检查同级目录下是否存在同名文件夹
157+
new_name = instance.get('name')
158+
if new_name is not None and new_name != current_node.name:
159+
if QuerySet(Folder).filter(
160+
name=new_name,
161+
parent_id=parent_id,
162+
workspace_id=current_node.workspace_id
163+
).exclude(id=current_id).exists():
164+
raise serializers.ValidationError(_('Folder name already exists'))
152165

153166
edit_field_list = ['name', 'desc']
154167
edit_dict = {field: instance.get(field) for field in edit_field_list if (
155168
field in instance and instance.get(field) is not None)}
156169

157170
QuerySet(Folder).filter(id=current_id).update(**edit_dict)
158171

159-
# 模块间的移动
160-
parent_id = instance.get('parent_id')
161172
if parent_id is not None and current_id != current_node.workspace_id and current_node.parent_id != parent_id:
162173
# Folder 不能超过3层
163174
current_depth = get_max_depth(current_node)

0 commit comments

Comments
 (0)