Skip to content

Commit 644c5e7

Browse files
committed
fix Award model name field to be unique
1 parent 14df37d commit 644c5e7

File tree

3 files changed

+12
-16
lines changed

3 files changed

+12
-16
lines changed

backend/apps/owasp/management/commands/owasp_sync_awards.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,10 @@ def _process_winner(self, winner_data: dict, *, dry_run: bool = False):
131131
logger.warning("Could not match user: %s", winner_name)
132132

133133
if not dry_run:
134-
# Check if award exists before update
134+
# Check if award exists before update using unique name
135+
unique_name = f"{award_name} - {winner_name} ({winner_data.get('year')})"
135136
try:
136-
Award.objects.get(
137-
name=award_name,
138-
category=winner_data.get("category", ""),
139-
year=winner_data.get("year"),
140-
winner_name=winner_name,
141-
)
137+
Award.objects.get(name=unique_name)
142138
is_new = False
143139
except Award.DoesNotExist:
144140
is_new = True

backend/apps/owasp/migrations/0045_award.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class Migration(migrations.Migration):
4242
models.CharField(
4343
help_text="Award name/title (e.g., 'Event Person of the Year')",
4444
max_length=200,
45+
unique=True,
4546
verbose_name="Name",
4647
),
4748
),

backend/apps/owasp/models/award.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class Meta:
3636
name = models.CharField(
3737
verbose_name="Name",
3838
max_length=200,
39+
unique=True,
3940
help_text="Award name/title (e.g., 'Event Person of the Year')",
4041
)
4142
description = models.TextField(
@@ -136,22 +137,20 @@ def update_data(award_data: dict, *, save: bool = True) -> Award:
136137
Award instance
137138
138139
"""
139-
# Create unique identifier for get_or_create
140-
name = award_data.get("title", "")
140+
# Create unique name for each winner to satisfy unique constraint
141+
award_title = award_data.get("title", "")
141142
category = award_data.get("category", "")
142143
year = award_data.get("year")
143144
winner_name = award_data.get("name", "").strip()
144145

146+
# Create unique name combining award title, winner, and year
147+
unique_name = f"{award_title} - {winner_name} ({year})"
148+
145149
try:
146-
award = Award.objects.get(
147-
name=name,
148-
category=category,
149-
year=year,
150-
winner_name=winner_name,
151-
)
150+
award = Award.objects.get(name=unique_name)
152151
except Award.DoesNotExist:
153152
award = Award(
154-
name=name,
153+
name=unique_name,
155154
category=category,
156155
year=year,
157156
winner_name=winner_name,

0 commit comments

Comments
 (0)