Skip to content

Commit 17ba976

Browse files
committed
Add is_duplicate field to Package
Signed-off-by: Jono Yang <[email protected]>
1 parent b257482 commit 17ba976

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed

minecode/indexing.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,27 @@ def index_package_files(package, scan_data, reindex=False):
122122
def index_package(
123123
scannable_uri, package, scan_data, summary_data, project_extra_data, reindex=False
124124
):
125+
from packagedb.models import Package
126+
127+
# Check for dupes
128+
existing_packages = Package.objects.filter(sha1=package.sha1)
129+
if existing_packages:
130+
for existing_package in existing_packages:
131+
# see if the package we are indexing is older than the package we have
132+
if existing_package.package.release_date > package.release_date:
133+
existing_package.approximatedirectorycontentindex_set.update(package=package)
134+
existing_package.approximatedirectorystructureindex_set.update(package=package)
135+
existing_package.approximateresourcecontentindex_set.update(package=package)
136+
existing_package.exactfileindex_set.update(package=package)
137+
existing_package.snippetindex_set.update(package=package)
138+
existing_package.stemmedsnippetindex_set.update(package=package)
139+
existing_package.resources.update(package=package)
140+
existing_package.is_duplicate = True
141+
existing_package.save()
142+
package.is_duplicate = False
143+
package.save()
144+
return
145+
125146
scan_index_errors = []
126147
try:
127148
indexing_errors = index_package_files(package, scan_data, reindex=reindex)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 5.1.5 on 2025-03-12 21:44
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("packagedb", "0090_alter_packageactivity_uuid"),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name="package",
15+
name="is_duplicate",
16+
field=models.BooleanField(
17+
default=False,
18+
help_text="True if this Package is a duplicate of another Package",
19+
),
20+
),
21+
]

packagedb/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -554,6 +554,9 @@ class Package(
554554
"A mapping containing a summary and license clarity score for this Package"
555555
),
556556
)
557+
is_duplicate = models.BooleanField(
558+
default=False, help_text=_("True if this Package is a duplicate of another Package")
559+
)
557560

558561
objects = PackageQuerySet.as_manager()
559562

0 commit comments

Comments
 (0)