Skip to content

Commit d9665e0

Browse files
committed
Added is_reviewed field to Award model and update admin and badge logic
1 parent 4251bd8 commit d9665e0

File tree

4 files changed

+34
-10
lines changed

4 files changed

+34
-10
lines changed

backend/apps/owasp/admin/award.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ class AwardAdmin(admin.ModelAdmin):
1515
"year",
1616
"winner_name",
1717
"user",
18+
"is_reviewed",
1819
"nest_created_at",
1920
"nest_updated_at",
2021
)
2122
list_filter = (
2223
"category",
2324
"year",
25+
"is_reviewed",
2426
)
2527
search_fields = (
2628
"name",
@@ -41,7 +43,13 @@ class AwardAdmin(admin.ModelAdmin):
4143
(
4244
"Winner Information",
4345
{
44-
"fields": ("winner_name", "winner_info", "winner_image", "user"),
46+
"fields": (
47+
"winner_name",
48+
"winner_info",
49+
"winner_image_url",
50+
"user",
51+
"is_reviewed",
52+
),
4553
"classes": ("collapse",),
4654
},
4755
),

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,21 @@ def handle(self, *args, **options):
2727
if created:
2828
self.stdout.write(f"Created badge: {waspy_badge.name}")
2929

30-
# Get users with WASPY awards
31-
waspy_winners = Award.get_waspy_award_winners()
30+
# Get users with reviewed WASPY awards only
31+
waspy_winners = User.objects.filter(
32+
awards__category=Award.Category.WASPY, awards__is_reviewed=True
33+
).distinct()
3234

3335
# Add badge to WASPY winners
3436
for user in waspy_winners:
3537
user.badges.add(waspy_badge)
3638

37-
# Remove badge from users without WASPY awards
39+
# Remove badge from users without reviewed WASPY awards
3840
users_with_badge = User.objects.filter(badges=waspy_badge)
3941
for user in users_with_badge:
40-
if not Award.get_user_waspy_awards(user).exists():
42+
if not Award.objects.filter(
43+
user=user, category=Award.Category.WASPY, is_reviewed=True
44+
).exists():
4145
user.badges.remove(waspy_badge)
4246

4347
self.stdout.write(f"Updated badges for {waspy_winners.count()} WASPY winners")

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,12 @@ class Migration(migrations.Migration):
8181
),
8282
),
8383
(
84-
"winner_image",
85-
models.CharField(
84+
"winner_image_url",
85+
models.URLField(
8686
blank=True,
8787
default="",
88-
help_text="Path to winner's image",
89-
max_length=500,
90-
verbose_name="Winner Image",
88+
help_text="URL to winner's image",
89+
verbose_name="Winner Image URL",
9190
),
9291
),
9392
(
@@ -102,6 +101,14 @@ class Migration(migrations.Migration):
102101
verbose_name="User",
103102
),
104103
),
104+
(
105+
"is_reviewed",
106+
models.BooleanField(
107+
default=False,
108+
help_text="Whether the user matching has been verified by a human",
109+
verbose_name="Is Reviewed",
110+
),
111+
),
105112
],
106113
options={
107114
"verbose_name": "Award",

backend/apps/owasp/models/award.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ class Meta:
7777
verbose_name="User",
7878
help_text="Associated GitHub user (if matched)",
7979
)
80+
is_reviewed = models.BooleanField(
81+
verbose_name="Is Reviewed",
82+
default=False,
83+
help_text="Whether the user matching has been verified by a human",
84+
)
8085

8186
def __str__(self) -> str:
8287
"""Return string representation of the award."""

0 commit comments

Comments
 (0)