fix: external api serializer (#3259)

* fix: passed workspace id and project id as context

* fix: issue activity
This commit is contained in:
Bavisetti Narayan 2023-12-27 15:33:31 +05:30 committed by GitHub
parent ad2471c5a7
commit b2824366a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 13 deletions

View File

@ -96,7 +96,7 @@ class IssueSerializer(BaseSerializer):
if ( if (
data.get("state") data.get("state")
and not State.objects.filter( and not State.objects.filter(
project_id=self.context.get("project_id"), pk=data.get("state") project_id=self.context.get("project_id"), pk=data.get("state").id
).exists() ).exists()
): ):
raise serializers.ValidationError( raise serializers.ValidationError(
@ -107,7 +107,7 @@ class IssueSerializer(BaseSerializer):
if ( if (
data.get("parent") data.get("parent")
and not Issue.objects.filter( and not Issue.objects.filter(
workspace_id=self.context.get("workspace_id"), pk=data.get("parent") workspace_id=self.context.get("workspace_id"), pk=data.get("parent").id
).exists() ).exists()
): ):
raise serializers.ValidationError( raise serializers.ValidationError(

View File

@ -65,18 +65,18 @@ class ModuleSerializer(BaseSerializer):
def create(self, validated_data): def create(self, validated_data):
members = validated_data.pop("members", None) members = validated_data.pop("members", None)
project = self.context["project"] project_id = self.context["project_id"]
workspace_id = self.context["workspace_id"]
module = Module.objects.create(**validated_data, project=project)
module = Module.objects.create(**validated_data, project_id=project_id)
if members is not None: if members is not None:
ModuleMember.objects.bulk_create( ModuleMember.objects.bulk_create(
[ [
ModuleMember( ModuleMember(
module=module, module=module,
member=member, member_id=str(member),
project=project, project_id=project_id,
workspace=project.workspace, workspace_id=workspace_id,
created_by=module.created_by, created_by=module.created_by,
updated_by=module.updated_by, updated_by=module.updated_by,
) )
@ -97,7 +97,7 @@ class ModuleSerializer(BaseSerializer):
[ [
ModuleMember( ModuleMember(
module=instance, module=instance,
member=member, member_id=str(member),
project=instance.project, project=instance.project,
workspace=instance.project.workspace, workspace=instance.project.workspace,
created_by=instance.created_by, created_by=instance.created_by,

View File

@ -221,11 +221,20 @@ class IssueAPIEndpoint(WebhookMixin, BaseAPIView):
def patch(self, request, slug, project_id, pk=None): def patch(self, request, slug, project_id, pk=None):
issue = Issue.objects.get(workspace__slug=slug, project_id=project_id, pk=pk) issue = Issue.objects.get(workspace__slug=slug, project_id=project_id, pk=pk)
project = Project.objects.get(pk=project_id)
current_instance = json.dumps( current_instance = json.dumps(
IssueSerializer(issue).data, cls=DjangoJSONEncoder IssueSerializer(issue).data, cls=DjangoJSONEncoder
) )
requested_data = json.dumps(self.request.data, cls=DjangoJSONEncoder) requested_data = json.dumps(self.request.data, cls=DjangoJSONEncoder)
serializer = IssueSerializer(issue, data=request.data, partial=True) serializer = IssueSerializer(
issue,
data=request.data,
context={
"project_id": project_id,
"workspace_id": project.workspace_id,
},
partial=True,
)
if serializer.is_valid(): if serializer.is_valid():
serializer.save() serializer.save()
issue_activity.delay( issue_activity.delay(

View File

@ -121,8 +121,8 @@ class ModuleAPIEndpoint(WebhookMixin, BaseAPIView):
) )
def post(self, request, slug, project_id): def post(self, request, slug, project_id):
project = Project.objects.get(workspace__slug=slug, pk=project_id) project = Project.objects.get(pk=project_id, workspace__slug=slug)
serializer = ModuleSerializer(data=request.data, context={"project": project}) serializer = ModuleSerializer(data=request.data, context={"project_id": project_id, "workspace_id": project.workspace_id})
if serializer.is_valid(): if serializer.is_valid():
serializer.save() serializer.save()
module = Module.objects.get(pk=serializer.data["id"]) module = Module.objects.get(pk=serializer.data["id"])
@ -132,7 +132,7 @@ class ModuleAPIEndpoint(WebhookMixin, BaseAPIView):
def patch(self, request, slug, project_id, pk): def patch(self, request, slug, project_id, pk):
module = Module.objects.get(pk=pk, project_id=project_id, workspace__slug=slug) module = Module.objects.get(pk=pk, project_id=project_id, workspace__slug=slug)
serializer = ModuleSerializer(module, data=request.data) serializer = ModuleSerializer(module, data=request.data, context={"project_id": project_id}, partial=True)
if serializer.is_valid(): if serializer.is_valid():
serializer.save() serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.data, status=status.HTTP_201_CREATED)