(self, request, *args, **kwargs)
| 96 | return invalid_ids |
| 97 | |
| 98 | def put(self, request, *args, **kwargs): |
| 99 | label_pk = self.kwargs.get('label') |
| 100 | res_type = self.kwargs.get('res_type') |
| 101 | content_type = get_object_or_404(ContentType, id=res_type) |
| 102 | label = get_object_or_404(Label, pk=label_pk) |
| 103 | res_ids = request.data.get('res_ids', []) |
| 104 | |
| 105 | invalid_ids = self.validate_res_ids(content_type, res_ids) |
| 106 | if invalid_ids: |
| 107 | error = f'{_("Invalid data")}: {", ".join(invalid_ids)}' |
| 108 | return Response({ |
| 109 | "code": 'invalid_data', "detail": error, |
| 110 | }, status=status.HTTP_400_BAD_REQUEST) |
| 111 | |
| 112 | LabeledResource.objects \ |
| 113 | .filter(res_type=content_type, label=label) \ |
| 114 | .exclude(res_id__in=res_ids).delete() |
| 115 | resources = [ |
| 116 | LabeledResource(res_type=content_type, res_id=res_id, label=label, org_id=current_org.id) |
| 117 | for res_id in res_ids |
| 118 | ] |
| 119 | LabeledResource.objects.bulk_create(resources, ignore_conflicts=True) |
| 120 | return Response({"total": len(res_ids)}) |
| 121 | |
| 122 | |
| 123 | class LabelViewSet(OrgBulkModelViewSet): |
no test coverage detected