Skip to content

Commit af6a63c

Browse files
committed
Do not order results in filter_by_checksums #551
Signed-off-by: Jono Yang <[email protected]>
1 parent b7bb053 commit af6a63c

4 files changed

+124
-24
lines changed

packagedb/api.py

+9-3
Original file line numberDiff line numberDiff line change
@@ -258,12 +258,18 @@ def filter_by_checksums(self, request, *args, **kwargs):
258258
d = {f"{field}__in": value}
259259
lookups |= Q(**d)
260260

261-
qs = Resource.objects.filter(lookups).select_related("package").defer("package__history")
261+
qs = (
262+
Resource.objects.filter(lookups)
263+
.select_related("package")
264+
.only("package__uuid")
265+
.order_by()
266+
)
262267
paginated_qs = self.paginate_queryset(qs)
263268
serializer = ResourceAPISerializer(
264269
paginated_qs, many=True, context={"request": request}
265270
)
266-
return self.get_paginated_response(serializer.data)
271+
paginated_response = self.get_paginated_response(serializer.data)
272+
return paginated_response
267273

268274

269275
class MultiplePackageURLFilter(MultipleCharFilter):
@@ -485,7 +491,7 @@ def filter_by_checksums(self, request, *args, **kwargs):
485491
)
486492

487493
# Query to get the full Package objects with the earliest release_date for each sha1
488-
qs = Package.objects.filter(lookups)
494+
qs = Package.objects.filter(lookups).order_by()
489495
paginated_qs = self.paginate_queryset(qs)
490496
if enhance_package_data:
491497
serialized_package_data = [
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
# Generated by Django 5.1.2 on 2024-12-05 00:15
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("packagedb", "0087_rename_discovered_dependency_attribute"),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name="package",
15+
name="md5",
16+
field=models.CharField(
17+
blank=True,
18+
db_index=True,
19+
help_text="MD5 checksum hex-encoded, as in md5sum.",
20+
max_length=32,
21+
null=True,
22+
verbose_name="MD5",
23+
),
24+
),
25+
migrations.AlterField(
26+
model_name="package",
27+
name="sha1",
28+
field=models.CharField(
29+
blank=True,
30+
db_index=True,
31+
help_text="SHA1 checksum hex-encoded, as in sha1sum.",
32+
max_length=40,
33+
null=True,
34+
verbose_name="SHA1",
35+
),
36+
),
37+
migrations.AlterField(
38+
model_name="package",
39+
name="sha256",
40+
field=models.CharField(
41+
blank=True,
42+
db_index=True,
43+
help_text="SHA256 checksum hex-encoded, as in sha256sum.",
44+
max_length=64,
45+
null=True,
46+
verbose_name="SHA256",
47+
),
48+
),
49+
migrations.AlterField(
50+
model_name="package",
51+
name="sha512",
52+
field=models.CharField(
53+
blank=True,
54+
db_index=True,
55+
help_text="SHA512 checksum hex-encoded, as in sha512sum.",
56+
max_length=128,
57+
null=True,
58+
verbose_name="SHA512",
59+
),
60+
),
61+
migrations.AlterField(
62+
model_name="resource",
63+
name="md5",
64+
field=models.CharField(
65+
blank=True,
66+
db_index=True,
67+
help_text="MD5 checksum hex-encoded, as in md5sum.",
68+
max_length=32,
69+
null=True,
70+
verbose_name="MD5",
71+
),
72+
),
73+
migrations.AlterField(
74+
model_name="resource",
75+
name="sha1",
76+
field=models.CharField(
77+
blank=True,
78+
db_index=True,
79+
help_text="SHA1 checksum hex-encoded, as in sha1sum.",
80+
max_length=40,
81+
null=True,
82+
verbose_name="SHA1",
83+
),
84+
),
85+
migrations.AlterField(
86+
model_name="resource",
87+
name="sha256",
88+
field=models.CharField(
89+
blank=True,
90+
db_index=True,
91+
help_text="SHA256 checksum hex-encoded, as in sha256sum.",
92+
max_length=64,
93+
null=True,
94+
verbose_name="SHA256",
95+
),
96+
),
97+
migrations.AlterField(
98+
model_name="resource",
99+
name="sha512",
100+
field=models.CharField(
101+
blank=True,
102+
db_index=True,
103+
help_text="SHA512 checksum hex-encoded, as in sha512sum.",
104+
max_length=128,
105+
null=True,
106+
verbose_name="SHA512",
107+
),
108+
),
109+
]

packagedb/migrations/0088_alter_package_options_alter_resource_options.py

-21
This file was deleted.

packagedb/models.py

+6
Original file line numberDiff line numberDiff line change
@@ -174,27 +174,31 @@ class Meta:
174174
max_length=32,
175175
blank=True,
176176
null=True,
177+
db_index=True,
177178
help_text=_("MD5 checksum hex-encoded, as in md5sum."),
178179
)
179180
sha1 = models.CharField(
180181
_("SHA1"),
181182
max_length=40,
182183
blank=True,
183184
null=True,
185+
db_index=True,
184186
help_text=_("SHA1 checksum hex-encoded, as in sha1sum."),
185187
)
186188
sha256 = models.CharField(
187189
_("SHA256"),
188190
max_length=64,
189191
blank=True,
190192
null=True,
193+
db_index=True,
191194
help_text=_("SHA256 checksum hex-encoded, as in sha256sum."),
192195
)
193196
sha512 = models.CharField(
194197
_("SHA512"),
195198
max_length=128,
196199
blank=True,
197200
null=True,
201+
db_index=True,
198202
help_text=_("SHA512 checksum hex-encoded, as in sha512sum."),
199203
)
200204

@@ -552,6 +556,7 @@ class Package(
552556

553557
# TODO: Think about ordering, unique together, indexes, etc.
554558
class Meta:
559+
ordering = ["id"]
555560
unique_together = [
556561
(
557562
"download_url",
@@ -1143,6 +1148,7 @@ class Resource(
11431148

11441149
class Meta:
11451150
unique_together = (("package", "path"),)
1151+
ordering = ("id",)
11461152
indexes = [
11471153
models.Index(fields=["md5"]),
11481154
models.Index(fields=["sha1"]),

0 commit comments

Comments
 (0)