Compare commits

...

4 Commits

Author SHA1 Message Date
pablohashescobar
056656ef1b dev: update sort order calculation 2023-08-01 17:46:55 +05:30
pablohashescobar
adfb35e50d dev: fix sort order filter 2023-08-01 17:41:22 +05:30
pablohashescobar
080ab56fca dev: fix project join 2023-08-01 17:36:52 +05:30
pablohashescobar
62340b0158 fix: project join sort order 2023-08-01 17:27:04 +05:30

View File

@@ -123,7 +123,7 @@ class ProjectViewSet(BaseViewSet):
sort_order_query = ProjectMember.objects.filter(
member=request.user,
project_id=OuterRef("pk"),
workspace__slug=self.kwargs.get("slug"),
workspace__slug=self.kwargs.get("slug"),
).values("sort_order")
projects = (
self.get_queryset()
@@ -602,19 +602,27 @@ class AddMemberToProjectEndpoint(BaseAPIView):
)
bulk_project_members = []
project_members = ProjectMember.objects.filter(
workspace=self.workspace, member_id__in=[member.get("member_id") for member in members]
).values("member_id").annotate(sort_order_min=Min("sort_order"))
project_members = (
ProjectMember.objects.filter(
workspace=self.workspace,
member_id__in=[member.get("member_id") for member in members],
)
.values("member_id")
.annotate(sort_order_min=Min("sort_order"))
)
for member in members:
sort_order = [project_member.get("sort_order") for project_member in project_members]
sort_order = [
project_member.get("sort_order")
for project_member in project_members
]
bulk_project_members.append(
ProjectMember(
member_id=member.get("member_id"),
role=member.get("role", 10),
project_id=project_id,
workspace_id=project.workspace_id,
sort_order=sort_order[0] - 10000 if len(sort_order) else 65535
sort_order=sort_order[0] - 10000 if len(sort_order) else 65535,
)
)
@@ -809,11 +817,26 @@ class ProjectJoinEndpoint(BaseAPIView):
member=request.user, workspace__slug=slug
)
smallest_sort_order = (
ProjectMember.objects.filter(
workspace__slug=slug, member=request.user
)
.aggregate(smallest=Min("sort_order"))
.get("smallest", 65535)
)
if smallest_sort_order is None:
smallest_sort_order = 55535
else:
smallest_sort_order = smallest_sort_order - 10000
workspace_role = workspace_member.role
workspace = workspace_member.workspace
ProjectMember.objects.bulk_create(
[
bulk_project_members = []
for project_id in project_ids:
bulk_project_members.append(
ProjectMember(
project_id=project_id,
member=request.user,
@@ -822,9 +845,14 @@ class ProjectJoinEndpoint(BaseAPIView):
else (15 if workspace_role == 10 else workspace_role),
workspace=workspace,
created_by=request.user,
sort_order=smallest_sort_order,
)
for project_id in project_ids
],
)
smallest_sort_order = smallest_sort_order - 10000
ProjectMember.objects.bulk_create(
bulk_project_members,
ignore_conflicts=True,
)