forked from github/plane
chore: triage state filtering (#1372)
This commit is contained in:
parent
e08fc59114
commit
8e094aa895
@ -3,6 +3,7 @@ from django.db.models import (
|
|||||||
Count,
|
Count,
|
||||||
Sum,
|
Sum,
|
||||||
F,
|
F,
|
||||||
|
Q
|
||||||
)
|
)
|
||||||
from django.db.models.functions import ExtractMonth
|
from django.db.models.functions import ExtractMonth
|
||||||
|
|
||||||
@ -59,10 +60,11 @@ class AnalyticsEndpoint(BaseAPIView):
|
|||||||
|
|
||||||
colors = (
|
colors = (
|
||||||
State.objects.filter(
|
State.objects.filter(
|
||||||
|
~Q(name="Triage"),
|
||||||
workspace__slug=slug, project_id__in=filters.get("project__in")
|
workspace__slug=slug, project_id__in=filters.get("project__in")
|
||||||
).values(key, "color")
|
).values(key, "color")
|
||||||
if filters.get("project__in", False)
|
if filters.get("project__in", False)
|
||||||
else State.objects.filter(workspace__slug=slug).values(key, "color")
|
else State.objects.filter(~Q(name="Triage"), workspace__slug=slug).values(key, "color")
|
||||||
)
|
)
|
||||||
|
|
||||||
if x_axis in ["labels__name"] or segment in ["labels__name"]:
|
if x_axis in ["labels__name"] or segment in ["labels__name"]:
|
||||||
|
@ -7,7 +7,7 @@ from rest_framework.response import Response
|
|||||||
from sentry_sdk import capture_exception
|
from sentry_sdk import capture_exception
|
||||||
|
|
||||||
# Django imports
|
# Django imports
|
||||||
from django.db.models import Max
|
from django.db.models import Max, Q
|
||||||
|
|
||||||
# Module imports
|
# Module imports
|
||||||
from plane.api.views import BaseAPIView
|
from plane.api.views import BaseAPIView
|
||||||
@ -309,11 +309,13 @@ class BulkImportIssuesEndpoint(BaseAPIView):
|
|||||||
|
|
||||||
# Get the default state
|
# Get the default state
|
||||||
default_state = State.objects.filter(
|
default_state = State.objects.filter(
|
||||||
project_id=project_id, default=True
|
~Q(name="Triage"), project_id=project_id, default=True
|
||||||
).first()
|
).first()
|
||||||
# if there is no default state assign any random state
|
# if there is no default state assign any random state
|
||||||
if default_state is None:
|
if default_state is None:
|
||||||
default_state = State.objects.filter(project_id=project_id).first()
|
default_state = State.objects.filter(
|
||||||
|
~Q(name="Triage"), sproject_id=project_id
|
||||||
|
).first()
|
||||||
|
|
||||||
# Get the maximum sequence_id
|
# Get the maximum sequence_id
|
||||||
last_id = IssueSequence.objects.filter(project_id=project_id).aggregate(
|
last_id = IssueSequence.objects.filter(project_id=project_id).aggregate(
|
||||||
|
@ -607,7 +607,7 @@ class SubIssuesEndpoint(BaseAPIView):
|
|||||||
)
|
)
|
||||||
|
|
||||||
state_distribution = (
|
state_distribution = (
|
||||||
State.objects.filter(workspace__slug=slug, project_id=project_id)
|
State.objects.filter(~Q(name="Triage"), workspace__slug=slug, project_id=project_id)
|
||||||
.annotate(
|
.annotate(
|
||||||
state_count=Count(
|
state_count=Count(
|
||||||
"state_issue",
|
"state_issue",
|
||||||
|
@ -3,13 +3,13 @@ from itertools import groupby
|
|||||||
|
|
||||||
# Django imports
|
# Django imports
|
||||||
from django.db import IntegrityError
|
from django.db import IntegrityError
|
||||||
|
from django.db.models import Q
|
||||||
|
|
||||||
# Third party imports
|
# Third party imports
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from sentry_sdk import capture_exception
|
from sentry_sdk import capture_exception
|
||||||
|
|
||||||
|
|
||||||
# Module imports
|
# Module imports
|
||||||
from . import BaseViewSet, BaseAPIView
|
from . import BaseViewSet, BaseAPIView
|
||||||
from plane.api.serializers import StateSerializer
|
from plane.api.serializers import StateSerializer
|
||||||
@ -34,6 +34,7 @@ class StateViewSet(BaseViewSet):
|
|||||||
.filter(workspace__slug=self.kwargs.get("slug"))
|
.filter(workspace__slug=self.kwargs.get("slug"))
|
||||||
.filter(project_id=self.kwargs.get("project_id"))
|
.filter(project_id=self.kwargs.get("project_id"))
|
||||||
.filter(project__project_projectmember__member=self.request.user)
|
.filter(project__project_projectmember__member=self.request.user)
|
||||||
|
.filter(~Q(name="Triage"))
|
||||||
.select_related("project")
|
.select_related("project")
|
||||||
.select_related("workspace")
|
.select_related("workspace")
|
||||||
.distinct()
|
.distinct()
|
||||||
@ -80,7 +81,8 @@ class StateViewSet(BaseViewSet):
|
|||||||
def destroy(self, request, slug, project_id, pk):
|
def destroy(self, request, slug, project_id, pk):
|
||||||
try:
|
try:
|
||||||
state = State.objects.get(
|
state = State.objects.get(
|
||||||
pk=pk, project_id=project_id, workspace__slug=slug
|
~Q(name="Triage"),
|
||||||
|
pk=pk, project_id=project_id, workspace__slug=slug,
|
||||||
)
|
)
|
||||||
|
|
||||||
if state.default:
|
if state.default:
|
||||||
|
@ -98,11 +98,13 @@ class Issue(ProjectBaseModel):
|
|||||||
from plane.db.models import State
|
from plane.db.models import State
|
||||||
|
|
||||||
default_state = State.objects.filter(
|
default_state = State.objects.filter(
|
||||||
project=self.project, default=True
|
~models.Q(name="Triage"), project=self.project, default=True
|
||||||
).first()
|
).first()
|
||||||
# if there is no default state assign any random state
|
# if there is no default state assign any random state
|
||||||
if default_state is None:
|
if default_state is None:
|
||||||
random_state = State.objects.filter(project=self.project).first()
|
random_state = State.objects.filter(
|
||||||
|
~models.Q(name="Triage"), project=self.project
|
||||||
|
).first()
|
||||||
self.state = random_state
|
self.state = random_state
|
||||||
if random_state.group == "started":
|
if random_state.group == "started":
|
||||||
self.start_date = timezone.now().date()
|
self.start_date = timezone.now().date()
|
||||||
|
Loading…
Reference in New Issue
Block a user