Skip to content

Commit 4d29a6d

Browse files
feat: add is_active field to UserBadge model and update badge assignment logic
1 parent 10473bb commit 4d29a6d

File tree

3 files changed

+29
-2
lines changed

3 files changed

+29
-2
lines changed

backend/apps/nest/management/commands/nest_update_badges.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ def update_owasp_staff_badge(self):
4848

4949
if count:
5050
for user in employees_without_badge:
51-
UserBadge.objects.get_or_create(user=user, badge=badge)
51+
user_badge, created = UserBadge.objects.get_or_create(user=user, badge=badge)
52+
if not user_badge.is_active:
53+
user_badge.is_active = True
54+
user_badge.save(update_fields=["is_active"])
5255

5356
logger.info("Added '%s' badge to %s users", OWASP_STAFF_BADGE_NAME, count)
5457
self.stdout.write(f"Added badge to {count} employees")
@@ -64,7 +67,7 @@ def update_owasp_staff_badge(self):
6467
UserBadge.objects.filter(
6568
user_id__in=non_employees.values_list("id", flat=True),
6669
badge=badge,
67-
).delete()
70+
).update(is_active=False)
6871

6972
logger.info("Removed '%s' badge from %s users", OWASP_STAFF_BADGE_NAME, removed_count)
7073
self.stdout.write(f"Removed badge from {removed_count} non-employees")
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 5.2.5 on 2025-08-21 09:33
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('nest', '0006_userbadge_uq_userbadge_user_badge'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='userbadge',
15+
name='is_active',
16+
field=models.BooleanField(default=True, help_text='Indicates if the badge assignment is active.', verbose_name='Is active'),
17+
),
18+
]

backend/apps/nest/models/user_badge.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ class Meta:
2020
),
2121
]
2222

23+
is_active = models.BooleanField(
24+
default=True,
25+
verbose_name="Is active",
26+
help_text="Indicates if the badge assignment is active.",
27+
)
28+
2329
note = models.CharField(
2430
verbose_name="Note",
2531
max_length=255,

0 commit comments

Comments
 (0)