From f69d3e33e2f569fb96479c4f2e782834988773cd Mon Sep 17 00:00:00 2001 From: guru_sainath Date: Wed, 16 Oct 2024 01:10:35 +0530 Subject: [PATCH] fix: issue attchment list query in graphql (#1518) --- apiserver/plane/db/models/asset.py | 1 - .../plane/graphql/queries/issues/__init__.py | 3 +- .../queries/{ => issues}/attachment.py | 13 ++-- apiserver/plane/graphql/schema.py | 2 +- apiserver/plane/graphql/types/attachment.py | 48 -------------- .../plane/graphql/types/issues/attachment.py | 64 +++++++++++++++++++ 6 files changed, 75 insertions(+), 56 deletions(-) rename apiserver/plane/graphql/queries/{ => issues}/attachment.py (81%) delete mode 100644 apiserver/plane/graphql/types/attachment.py create mode 100644 apiserver/plane/graphql/types/issues/attachment.py diff --git a/apiserver/plane/db/models/asset.py b/apiserver/plane/db/models/asset.py index e230d3aecf..f12c71735b 100644 --- a/apiserver/plane/db/models/asset.py +++ b/apiserver/plane/db/models/asset.py @@ -11,7 +11,6 @@ from .base import BaseModel def get_upload_path(instance, filename): - if instance.workspace_id is not None: return f"{instance.workspace.id}/{uuid4().hex}-{filename}" return f"user-{uuid4().hex}-{filename}" diff --git a/apiserver/plane/graphql/queries/issues/__init__.py b/apiserver/plane/graphql/queries/issues/__init__.py index 6bb09c8637..cafcc006bb 100644 --- a/apiserver/plane/graphql/queries/issues/__init__.py +++ b/apiserver/plane/graphql/queries/issues/__init__.py @@ -1,3 +1,4 @@ from .relation import IssueRelationQuery from .search import IssuesSearchQuery -from .sub_issue import SubIssuesQuery \ No newline at end of file +from .sub_issue import SubIssuesQuery +from .attachment import IssueAttachmentQuery \ No newline at end of file diff --git a/apiserver/plane/graphql/queries/attachment.py b/apiserver/plane/graphql/queries/issues/attachment.py similarity index 81% rename from apiserver/plane/graphql/queries/attachment.py rename to apiserver/plane/graphql/queries/issues/attachment.py index 7b6cf6abc1..844101c628 100644 --- a/apiserver/plane/graphql/queries/attachment.py +++ b/apiserver/plane/graphql/queries/issues/attachment.py @@ -10,7 +10,7 @@ from strawberry.permission import PermissionExtension # Module Imports from plane.db.models import FileAsset -from plane.graphql.types.attachment import IssueAttachmentType +from plane.graphql.types.issues.attachment import IssueAttachmentType from plane.graphql.permissions.project import ProjectBasePermission @@ -19,20 +19,23 @@ class IssueAttachmentQuery: @strawberry.field( extensions=[PermissionExtension(permissions=[ProjectBasePermission()])] ) - async def issueAttachment( + async def issue_attachment( self, info: Info, slug: str, project: strawberry.ID, issue: strawberry.ID, ) -> list[IssueAttachmentType]: - + print("---*___") + print("Attachment query") + print("---*___") issue_attachments = await sync_to_async(list)( FileAsset.objects.filter( - entity_identifier=issue, - entity_type=FileAsset.EntityTypeContext.ISSUE_ATTACHMENT, workspace__slug=slug, project_id=project, + entity_type=FileAsset.EntityTypeContext.ISSUE_ATTACHMENT, + issue=issue, ) ) + return issue_attachments diff --git a/apiserver/plane/graphql/schema.py b/apiserver/plane/graphql/schema.py index 5fd23d3cf2..6a8e0aa1f7 100644 --- a/apiserver/plane/graphql/schema.py +++ b/apiserver/plane/graphql/schema.py @@ -38,13 +38,13 @@ from .queries.module import ( ModuleIssueUserPropertyQuery, ) from .queries.search import GlobalSearchQuery -from .queries.attachment import IssueAttachmentQuery from .queries.link import IssueLinkQuery from .queries.estimate import EstimatePointQuery from .queries.issues import ( IssueRelationQuery, IssuesSearchQuery, SubIssuesQuery, + IssueAttachmentQuery, ) from .queries.dashboard import userInformationQuery from .queries.external import UnsplashImagesQuery, ProjectCoversQuery diff --git a/apiserver/plane/graphql/types/attachment.py b/apiserver/plane/graphql/types/attachment.py deleted file mode 100644 index acb151fc1b..0000000000 --- a/apiserver/plane/graphql/types/attachment.py +++ /dev/null @@ -1,48 +0,0 @@ -# python imports -from typing import Optional -from datetime import datetime - -# Strawberry imports -import strawberry -import strawberry_django -from strawberry.scalars import JSON - -# Module Imports -from plane.db.models import FileAsset - - -@strawberry_django.type(FileAsset) -class IssueAttachmentType: - id: strawberry.ID - created_at: datetime - updated_at: datetime - attributes: Optional[JSON] - asset: str - external_source: Optional[str] - external_id: Optional[strawberry.ID] - created_by: strawberry.ID - updated_by: strawberry.ID - project: strawberry.ID - workspace: strawberry.ID - entity_identifier: strawberry.ID - entity_type: str - - @strawberry.field - def workspace(self) -> int: - return self.workspace_id - - @strawberry.field - def project(self) -> int: - return self.project_id - - @strawberry.field - def issue(self) -> int: - return self.entity_identifier - - @strawberry.field - def created_by(self) -> int: - return self.created_by_id - - @strawberry.field - def updated_by(self) -> int: - return self.updated_by_id diff --git a/apiserver/plane/graphql/types/issues/attachment.py b/apiserver/plane/graphql/types/issues/attachment.py new file mode 100644 index 0000000000..a8193addb5 --- /dev/null +++ b/apiserver/plane/graphql/types/issues/attachment.py @@ -0,0 +1,64 @@ +# python imports +from typing import Optional + +# Strawberry imports +import strawberry +import strawberry_django +from strawberry.scalars import JSON + +# Module Imports +from plane.db.models import FileAsset + + +@strawberry_django.type(FileAsset) +class IssueAttachmentType: + id: strawberry.ID + user: strawberry.ID + workspace: strawberry.ID + draft_issue: strawberry.ID + project: strawberry.ID + issue: strawberry.ID + comment: strawberry.ID + page: strawberry.ID + + attributes: Optional[JSON] + asset: str + entity_type: str + is_deleted: bool + is_archived: bool + + size: float + is_uploaded: bool + storage_metadata: Optional[JSON] + asset_url: Optional[str] + + external_id: strawberry.ID + external_source: str + + @strawberry.field + def user(self): + return self.user_id + + @strawberry.field + def workspace(self): + return self.workspace_id + + @strawberry.field + def draft_issue(self): + return self.draft_issue_id + + @strawberry.field + def project(self): + return self.project_id + + @strawberry.field + def issue(self): + return self.external_id + + @strawberry.field + def comment(self): + return self.comment_id + + @strawberry.field + def page(self): + return self.page_id