feat: cross project issue linking (#1609)

* dev: sub issue listing

* feat: cross project issue linking

* dev: project search

* dev: workspace search logic

* dev: return state and project details for parent issues

* dev: issue state flat serializer

* dev: id for lite serializer

* dev: project name in for the response issues

* dev: issue cross project

* dev: issue project identifiers

* dev: blocked and blocked by activity
This commit is contained in:
Nikhil 2023-07-24 12:08:47 +05:30 committed by GitHub
parent e357283789
commit 73b38f4db9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 67 additions and 22 deletions

View file

@ -629,7 +629,7 @@ class SubIssuesEndpoint(BaseAPIView):
try:
sub_issues = (
Issue.issue_objects.filter(
parent_id=issue_id, workspace__slug=slug, project_id=project_id
parent_id=issue_id, workspace__slug=slug
)
.select_related("project")
.select_related("workspace")
@ -661,7 +661,7 @@ class SubIssuesEndpoint(BaseAPIView):
state_distribution = (
State.objects.filter(
~Q(name="Triage"), workspace__slug=slug, project_id=project_id
~Q(name="Triage"), workspace__slug=slug
)
.annotate(
state_count=Count(

View file

@ -206,6 +206,7 @@ class IssueSearchEndpoint(BaseAPIView):
def get(self, request, slug, project_id):
try:
query = request.query_params.get("search", False)
workspace_search = request.query_params.get("workspace_search", "false")
parent = request.query_params.get("parent", "false")
blocker_blocked_by = request.query_params.get("blocker_blocked_by", "false")
cycle = request.query_params.get("cycle", "false")
@ -216,10 +217,12 @@ class IssueSearchEndpoint(BaseAPIView):
issues = Issue.issue_objects.filter(
workspace__slug=slug,
project_id=project_id,
project__project_projectmember__member=self.request.user,
)
if workspace_search == "false":
issues = issues.filter(project_id=project_id)
if query:
issues = search_issues(query, issues)
@ -257,6 +260,7 @@ class IssueSearchEndpoint(BaseAPIView):
"name",
"id",
"sequence_id",
"project__name",
"project__identifier",
"project_id",
"workspace__slug",