# Generated by Django 3.2.18 on 2023-10-10 21:17 from django.db import migrations, models import django.db.models.deletion from django.urls import reverse from collections import defaultdict # Run this in shell def migrate_notif(apps, schema_editor): Notification = apps.get_model("judge", "Notification") Profile = apps.get_model("judge", "Profile") NotificationProfile = apps.get_model("judge", "NotificationProfile") unread_count = defaultdict(int) for c in Notification.objects.all(): if c.comment: c.html_link = ( f'{c.comment.page_title}' ) c.author = c.comment.author c.save() if c.read is False: unread_count[c.author] += 1 for user in unread_count: np = NotificationProfile(user=user) np.unread_count = unread_count[user] np.save() class Migration(migrations.Migration): dependencies = [ ("judge", "0170_contests_summary"), ] operations = [ migrations.AlterModelOptions( name="contestssummary", options={ "verbose_name": "contests summary", "verbose_name_plural": "contests summaries", }, ), migrations.CreateModel( name="NotificationProfile", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("unread_count", models.IntegerField(default=0)), ( "user", models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, to="judge.profile" ), ), ], ), ]