MCPcopy
hub / github.com/1Panel-dev/MaxKB / FolderSerializer

Class FolderSerializer

apps/folders/serializers/folder.py:125–302  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

123
124
125class FolderSerializer(serializers.Serializer):
126 id = serializers.CharField(required=True, label=_('folder id'))
127 name = serializers.CharField(required=True, label=_('folder name'))
128 desc = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_('folder description'))
129 user_id = serializers.CharField(required=True, label=_('folder user id'))
130 workspace_id = serializers.CharField(required=False, label=_('workspace id'))
131 parent_id = serializers.CharField(required=False, label=_('parent id'))
132
133 class Create(serializers.Serializer):
134 workspace_id = serializers.CharField(required=True, label=_('workspace id'))
135 user_id = serializers.UUIDField(required=True, label=_('user id'))
136 source = serializers.CharField(required=True, label=_('source'))
137
138 def insert(self, instance, with_valid=True):
139 if with_valid:
140 self.is_valid(raise_exception=True)
141 FolderCreateRequest(data=instance).is_valid(raise_exception=True)
142
143 workspace_id = self.data.get('workspace_id')
144 if not workspace_id:
145 workspace_id = 'default'
146 parent_id = instance.get('parent_id')
147 if not parent_id:
148 parent_id = workspace_id
149 name = instance.get('name')
150
151 Folder = get_folder_type(self.data.get('source')) # noqa
152 if QuerySet(Folder).filter(name=name, workspace_id=workspace_id, parent_id=parent_id).exists():
153 raise AppApiException(500, _('Folder name already exists'))
154 # Folder 不能超过3层
155 check_depth(self.data.get('source'), parent_id, workspace_id)
156
157 folder = Folder(
158 id=uuid.uuid7(),
159 name=instance.get('name'),
160 desc=instance.get('desc'),
161 user_id=self.data.get('user_id'),
162 workspace_id=workspace_id,
163 parent_id=parent_id
164 )
165 folder.save()
166
167 UserResourcePermissionSerializer(data={
168 'workspace_id': self.data.get('workspace_id'),
169 'user_id': self.data.get('user_id'),
170 'auth_target_type': self.data.get('source')
171 }).auth_resource(str(folder.id), is_folder=True)
172
173 return FolderSerializer(folder).data
174
175 class Operate(serializers.Serializer):
176 id = serializers.CharField(required=True, label=_('folder id'))
177 workspace_id = serializers.CharField(required=True, allow_null=True, allow_blank=True, label=_('workspace id'))
178 source = serializers.CharField(required=True, label=_('source'))
179 user_id = serializers.UUIDField(required=True, label=_('user id'))
180
181 @transaction.atomic
182 def edit(self, instance):

Callers 3

get_dataMethod · 0.90
insertMethod · 0.85
oneMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected