Files
offline-db/users/migrations/0002_badge_userbadge.py
google-labs-jules[bot] 6142d16487 feat(auto): implemented User Badges system (v1.1) (#55)
- Added `Badge` and `UserBadge` models in `users` app.
- Implemented `check_badges` service to award badges based on activity (Binge Watcher, Supporter, Veteran).
- Added `post_save` signal on `WatchLog` to trigger badge checking automatically.
- Added data migration to seed initial badges.
- Added tests for badge logic.
- Current Focus Mode: C (The Architect)

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2026-01-19 15:22:41 +00:00

74 lines
2.3 KiB
Python

# Generated by Django 6.0.1 on 2026-01-19 15:04
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("users", "0001_initial"),
]
operations = [
migrations.CreateModel(
name="Badge",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"slug",
models.SlugField(
help_text="Unique identifier for the badge logic", unique=True
),
),
("name", models.CharField(max_length=100)),
("description", models.TextField()),
("icon_url", models.URLField(blank=True, null=True)),
("created_at", models.DateTimeField(auto_now_add=True)),
],
),
migrations.CreateModel(
name="UserBadge",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("awarded_at", models.DateTimeField(auto_now_add=True)),
(
"badge",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="users.badge"
),
),
(
"user",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="badges",
to=settings.AUTH_USER_MODEL,
),
),
],
options={
"verbose_name": "User Badge",
"verbose_name_plural": "User Badges",
"unique_together": {("user", "badge")},
},
),
]