Skip to content

Commit

Permalink
feat: cycle and module sort order (#1841)
Browse files Browse the repository at this point in the history
* dev: cycle and module ordering

* dev: sort order for smallest
  • Loading branch information
pablohashescobar authored Aug 11, 2023
1 parent 785a6e8 commit 88e987b
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 0 deletions.
30 changes: 30 additions & 0 deletions apiserver/plane/db/migrations/0042_auto_20230809_1745.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Generated by Django 4.2.3 on 2023-08-09 12:15
import random
from django.db import migrations

def random_cycle_order(apps, schema_editor):
CycleModel = apps.get_model("db", "Cycle")
updated_cycles = []
for obj in CycleModel.objects.all():
obj.sort_order = random.randint(1, 65536)
updated_cycles.append(obj)
CycleModel.objects.bulk_update(updated_cycles, ["sort_order"], batch_size=100)

def random_module_order(apps, schema_editor):
ModuleModel = apps.get_model("db", "Module")
updated_modules = []
for obj in ModuleModel.objects.all():
obj.sort_order = random.randint(1, 65536)
updated_modules.append(obj)
ModuleModel.objects.bulk_update(updated_modules, ["sort_order"], batch_size=100)

class Migration(migrations.Migration):

dependencies = [
('db', '0041_user_display_name_alter_analyticview_created_by_and_more'),
]

operations = [
migrations.RunPython(random_cycle_order),
migrations.RunPython(random_module_order),
]
12 changes: 12 additions & 0 deletions apiserver/plane/db/models/cycle.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,25 @@ class Cycle(ProjectBaseModel):
related_name="owned_by_cycle",
)
view_props = models.JSONField(default=dict)
sort_order = models.FloatField(default=65535)

class Meta:
verbose_name = "Cycle"
verbose_name_plural = "Cycles"
db_table = "cycles"
ordering = ("-created_at",)

def save(self, *args, **kwargs):
if self._state.adding:
smallest_sort_order = Cycle.objects.filter(
project=self.project
).aggregate(smallest=models.Min("sort_order"))["smallest"]

if smallest_sort_order is not None:
self.sort_order = smallest_sort_order - 10000

super(Cycle, self).save(*args, **kwargs)

def __str__(self):
"""Return name of the cycle"""
return f"{self.name} <{self.project.name}>"
Expand Down
12 changes: 12 additions & 0 deletions apiserver/plane/db/models/module.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class Module(ProjectBaseModel):
through_fields=("module", "member"),
)
view_props = models.JSONField(default=dict)
sort_order = models.FloatField(default=65535)

class Meta:
unique_together = ["name", "project"]
Expand All @@ -48,6 +49,17 @@ class Meta:
db_table = "modules"
ordering = ("-created_at",)

def save(self, *args, **kwargs):
if self._state.adding:
smallest_sort_order = Module.objects.filter(
project=self.project
).aggregate(smallest=models.Min("sort_order"))["smallest"]

if smallest_sort_order is not None:
self.sort_order = smallest_sort_order - 10000

super(Module, self).save(*args, **kwargs)

def __str__(self):
return f"{self.name} {self.start_date} {self.target_date}"

Expand Down

1 comment on commit 88e987b

@vercel
Copy link

@vercel vercel bot commented on 88e987b Aug 11, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

plane-dev – ./apps/app

plane-dev.vercel.app
plane-dev-plane.vercel.app
plane-dev-git-develop-plane.vercel.app

Please sign in to comment.