Skip to content

Commit 5cd331b

Browse files
committed
main: Add explicit sort ordering for 'LandingJobStatus' (bug 1893455)
1 parent c52e80b commit 5cd331b

File tree

2 files changed

+51
-8
lines changed

2 files changed

+51
-8
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Generated by Django 5.0.6 on 2024-05-08 18:48
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("main", "0001_initial"),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name="landingjob",
15+
name="status",
16+
field=models.CharField(
17+
blank=True,
18+
choices=[
19+
("SUBMITTED", "Submitted"),
20+
("IN_PROGRESS", "In progress"),
21+
("DEFERRED", "Deferred"),
22+
("FAILED", "Failed"),
23+
("LANDED", "Landed"),
24+
("CANCELLED", "Cancelled"),
25+
],
26+
default=None,
27+
max_length=32,
28+
null=True,
29+
),
30+
),
31+
]

src/lando/main/models/landing_job.py

+20-8
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
)
1313

1414
from django.db import models
15-
from django.db.models import QuerySet
15+
from django.db.models import QuerySet, Case, When, IntegerField
1616
from django.utils.translation import gettext_lazy
1717
from mots.config import FileConfig
1818
from mots.directory import Directory
@@ -25,13 +25,14 @@
2525
DEFAULT_GRACE_SECONDS = int(os.environ.get("DEFAULT_GRACE_SECONDS", 60 * 2))
2626

2727

28+
2829
class LandingJobStatus(models.TextChoices):
29-
SUBMITTED = "1_SUBMITTED", gettext_lazy("Submitted")
30-
IN_PROGRESS = "2_IN_PROGRESS", gettext_lazy("In progress")
31-
DEFERRED = "3_DEFERRED", gettext_lazy("Deferred")
32-
FAILED = "4_FAILED", gettext_lazy("Failed")
33-
LANDED = "5_LANDED", gettext_lazy("Landed")
34-
CANCELLED = "6_CANCELLED", gettext_lazy("Cancelled")
30+
SUBMITTED = "SUBMITTED", gettext_lazy("Submitted")
31+
IN_PROGRESS = "IN_PROGRESS", gettext_lazy("In progress")
32+
DEFERRED = "DEFERRED", gettext_lazy("Deferred")
33+
FAILED = "FAILED", gettext_lazy("Failed")
34+
LANDED = "LANDED", gettext_lazy("Landed")
35+
CANCELLED = "CANCELLED", gettext_lazy("Cancelled")
3536

3637

3738
@enum.unique
@@ -217,7 +218,18 @@ def job_queue_query(
217218
# be a maximum of one (per repository). For
218219
# `LandingJobStatus.SUBMITTED` jobs, higher priority items come first
219220
# and then we order by creation time (older first).
220-
q = q.order_by("-status", "-priority", "created_at")
221+
ordering = Case(
222+
When(status=LandingJobStatus.SUBMITTED, then=1),
223+
When(status=LandingJobStatus.IN_PROGRESS, then=2),
224+
When(status=LandingJobStatus.DEFERRED, then=3),
225+
When(status=LandingJobStatus.FAILED, then=4),
226+
When(status=LandingJobStatus.LANDED, then=5),
227+
When(status=LandingJobStatus.CANCELLED, then=6),
228+
default=0,
229+
output_field=IntegerField()
230+
)
231+
232+
q = q.annotate(status_order=ordering).order_by("-status_order", "-priority", "created_at")
221233

222234
return q
223235

0 commit comments

Comments
 (0)