feat: project ordering (#1701)

* dev: project ordering

* dev: add ordering for projects list
This commit is contained in:
Nikhil 2023-07-31 10:41:25 +05:30 committed by GitHub
parent c98edd4a91
commit 8e0124be91
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 2 deletions

View File

@ -123,7 +123,7 @@ class ProjectViewSet(BaseViewSet):
projects = ( projects = (
self.get_queryset() self.get_queryset()
.annotate(is_favorite=Exists(subquery)) .annotate(is_favorite=Exists(subquery))
.order_by("-is_favorite", "name") .order_by("sort_order", "name")
.annotate( .annotate(
total_members=ProjectMember.objects.filter( total_members=ProjectMember.objects.filter(
project_id=OuterRef("id") project_id=OuterRef("id")

View File

@ -1,5 +1,5 @@
# Generated by Django 4.2.3 on 2023-07-23 16:33 # Generated by Django 4.2.3 on 2023-07-23 16:33
import random
from django.db import migrations, models from django.db import migrations, models
import plane.db.models.workspace import plane.db.models.workspace
@ -58,6 +58,18 @@ def update_workspace_member_props(apps, schema_editor):
Model.objects.bulk_update(updated_workspace_member, ["view_props"], batch_size=100) Model.objects.bulk_update(updated_workspace_member, ["view_props"], batch_size=100)
def update_project_sort_order(apps, schema_editor):
Model = apps.get_model("db", "Project")
updated_projects = []
for obj in Model.objects.all():
obj.sort_order = random.randint(1, 65536)
updated_projects.append(obj)
Model.objects.bulk_update(updated_projects, ["sort_order"], batch_size=100)
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
("db", "0038_auto_20230720_1505"), ("db", "0038_auto_20230720_1505"),
@ -76,4 +88,10 @@ class Migration(migrations.Migration):
name='default_props', name='default_props',
field=models.JSONField(default=plane.db.models.workspace.get_default_props), field=models.JSONField(default=plane.db.models.workspace.get_default_props),
), ),
migrations.AddField(
model_name='project',
name='sort_order',
field=models.FloatField(default=65535),
),
migrations.RunPython(update_project_sort_order),
] ]

View File

@ -91,6 +91,7 @@ class Project(BaseModel):
default_state = models.ForeignKey( default_state = models.ForeignKey(
"db.State", on_delete=models.SET_NULL, null=True, related_name="default_state" "db.State", on_delete=models.SET_NULL, null=True, related_name="default_state"
) )
sort_order = models.FloatField(default=65535)
def __str__(self): def __str__(self):
"""Return name of the project""" """Return name of the project"""