diff --git a/apps/home/migrations/0001_initial.py b/apps/home/migrations/0001_initial.py index 6bbc1bc..6776bf3 100644 --- a/apps/home/migrations/0001_initial.py +++ b/apps/home/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 5.0.4 on 2024-06-11 13:58 +# Generated by Django 5.0.4 on 2024-06-17 01:11 import django.db.models.deletion import django.utils.timezone @@ -22,6 +22,7 @@ class Migration(migrations.Migration): ('name', models.CharField(max_length=32)), ('keywords', models.CharField(blank=True, max_length=128, null=True)), ('regex', models.CharField(blank=True, max_length=128, null=True)), + ('whitelist', models.BooleanField(default=False)), ('guild_id', models.CharField(max_length=128)), ], options={ @@ -67,6 +68,7 @@ class Migration(migrations.Migration): ('guild_id', models.CharField(max_length=128)), ('creation_datetime', models.DateTimeField(default=django.utils.timezone.now, editable=False)), ('extra_notes', models.CharField(blank=True, max_length=250, null=True)), + ('uwuify', models.BooleanField(default=False)), ('active', models.BooleanField(default=True)), ], options={ @@ -78,11 +80,18 @@ class Migration(migrations.Migration): migrations.CreateModel( name='TrackedContent', fields=[ - ('guid', models.CharField(max_length=128, primary_key=True, serialize=False)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('guid', models.CharField(max_length=128)), ('title', models.CharField(max_length=128)), - ('url', models.URLField()), + ('url', models.URLField(unique=True)), + ('blocked', models.BooleanField(default=False)), ('creation_datetime', models.DateTimeField(default=django.utils.timezone.now, editable=False)), + ('guild_id', models.CharField(max_length=128)), ], + options={ + 'verbose_name': 'tracked contents', + 'get_latest_by': '-creation_datetime', + }, ), migrations.AddConstraint( model_name='filter', @@ -120,4 +129,12 @@ class Migration(migrations.Migration): model_name='subchannel', constraint=models.UniqueConstraint(fields=('channel_id', 'subscription'), name='unique channel id and subscription pair'), ), + migrations.AddConstraint( + model_name='trackedcontent', + constraint=models.UniqueConstraint(fields=('guid', 'guild_id'), name='unique guid & guild_id pair'), + ), + migrations.AddConstraint( + model_name='trackedcontent', + constraint=models.UniqueConstraint(fields=('url', 'guild_id'), name='unique url & guild_id pair'), + ), ] diff --git a/apps/home/migrations/0002_articlemutator.py b/apps/home/migrations/0002_articlemutator.py new file mode 100644 index 0000000..89e2a02 --- /dev/null +++ b/apps/home/migrations/0002_articlemutator.py @@ -0,0 +1,21 @@ +# Generated by Django 5.0.4 on 2024-06-17 01:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='ArticleMutator', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('value', models.CharField(max_length=32)), + ], + ), + ] diff --git a/apps/home/migrations/0002_trackedcontent_blocked.py b/apps/home/migrations/0002_trackedcontent_blocked.py deleted file mode 100644 index 1eecc46..0000000 --- a/apps/home/migrations/0002_trackedcontent_blocked.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.0.4 on 2024-06-11 20:51 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='trackedcontent', - name='blocked', - field=models.BooleanField(default=False), - ), - ] diff --git a/apps/home/migrations/0003_filter_whitelist.py b/apps/home/migrations/0003_filter_whitelist.py deleted file mode 100644 index 4cf809c..0000000 --- a/apps/home/migrations/0003_filter_whitelist.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.0.4 on 2024-06-12 08:30 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0002_trackedcontent_blocked'), - ] - - operations = [ - migrations.AddField( - model_name='filter', - name='whitelist', - field=models.BooleanField(default=False), - ), - ] diff --git a/apps/home/migrations/0003_initial_mutator_data.py b/apps/home/migrations/0003_initial_mutator_data.py new file mode 100644 index 0000000..fb082d0 --- /dev/null +++ b/apps/home/migrations/0003_initial_mutator_data.py @@ -0,0 +1,31 @@ +# Generated by Django 5.0.4 on 2024-06-17 01:23 + +from django.db import migrations + +def add_mutators(apps, schema_editor): + ArticleMutator = apps.get_model("home", "ArticleMutator") + ArticleMutator.objects.create(name="Uwuify Title", value="UWU_TITLE") + ArticleMutator.objects.create(name="Uwuify Description", value="UWU_DESC") + ArticleMutator.objects.create(name="Gibberish Title", value="GIB_TITLE") + ArticleMutator.objects.create(name="Gibberish Description", value="GIB_DESC") + ArticleMutator.objects.create(name="L33t Sp34k Title", value="L3_TITLE") + ArticleMutator.objects.create(name="L33t Sp34k Description", value="L3_DESC") + ArticleMutator.objects.create(name="Reversed Title", value="REV_TITLE") + ArticleMutator.objects.create(name="Reversed Description", value="REV_DESC") + ArticleMutator.objects.create(name="Randomise Title", value="RND_TITLE") + ArticleMutator.objects.create(name="Randomise Description", value="RND_DESC") + ArticleMutator.objects.create(name="Random Case Title", value="RNC_TITLE") + ArticleMutator.objects.create(name="Random Case Description", value="RNC_DESC") + ArticleMutator.objects.create(name="Pig Latin Title", value="PGL_TITLE") + ArticleMutator.objects.create(name="Pig Latin Description", value="PGL_DESC") + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0002_articlemutator'), + ] + + operations = [ + migrations.RunPython(add_mutators) + ] diff --git a/apps/home/migrations/0004_remove_subscription_uwuify.py b/apps/home/migrations/0004_remove_subscription_uwuify.py new file mode 100644 index 0000000..05d8e92 --- /dev/null +++ b/apps/home/migrations/0004_remove_subscription_uwuify.py @@ -0,0 +1,17 @@ +# Generated by Django 5.0.4 on 2024-06-17 01:31 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0003_initial_mutator_data'), + ] + + operations = [ + migrations.RemoveField( + model_name='subscription', + name='uwuify', + ), + ] diff --git a/apps/home/migrations/0005_alter_trackedcontent_url.py b/apps/home/migrations/0005_alter_trackedcontent_url.py deleted file mode 100644 index 7fccba9..0000000 --- a/apps/home/migrations/0005_alter_trackedcontent_url.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.0.4 on 2024-06-15 22:44 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0004_subscription_uwuify'), - ] - - operations = [ - migrations.AlterField( - model_name='trackedcontent', - name='url', - field=models.URLField(unique=True), - ), - ] diff --git a/apps/home/migrations/0004_subscription_uwuify.py b/apps/home/migrations/0005_subscription_mutators.py similarity index 50% rename from apps/home/migrations/0004_subscription_uwuify.py rename to apps/home/migrations/0005_subscription_mutators.py index b875325..475700e 100644 --- a/apps/home/migrations/0004_subscription_uwuify.py +++ b/apps/home/migrations/0005_subscription_mutators.py @@ -1,4 +1,4 @@ -# Generated by Django 5.0.4 on 2024-06-15 21:47 +# Generated by Django 5.0.4 on 2024-06-17 01:33 from django.db import migrations, models @@ -6,13 +6,13 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('home', '0003_filter_whitelist'), + ('home', '0004_remove_subscription_uwuify'), ] operations = [ migrations.AddField( model_name='subscription', - name='uwuify', - field=models.BooleanField(default=False), + name='mutators', + field=models.ManyToManyField(blank=True, to='home.articlemutator'), ), ] diff --git a/apps/home/models.py b/apps/home/models.py index 92af49e..4cb988a 100644 --- a/apps/home/models.py +++ b/apps/home/models.py @@ -202,10 +202,10 @@ class Subscription(models.Model): blank=True, ) - uwuify = models.BooleanField(default=False) - filters = models.ManyToManyField(to="home.Filter", blank=True) + mutators = models.ManyToManyField(to="home.ArticleMutator", blank=True) + active = models.BooleanField(default=True) class Meta: @@ -246,10 +246,9 @@ class TrackedContent(models.Model): This is used to ensure duplicate articles aren't sent in feeds. """ - guid = models.CharField( - primary_key=True, - max_length=128 - ) + id = models.AutoField(primary_key=True) + + guid = models.CharField(max_length=128) title = models.CharField(max_length=128) @@ -264,5 +263,27 @@ class TrackedContent(models.Model): editable=False ) + guild_id = models.CharField(max_length=128) + + class Meta: + + verbose_name = "tracked content" + verbose_name = "tracked contents" + get_latest_by = "-creation_datetime" + constraints = [ + models.UniqueConstraint(fields=["guid", "guild_id"], name="unique guid & guild_id pair"), + models.UniqueConstraint(fields=["url", "guild_id"], name="unique url & guild_id pair") + ] + def __str__(self) -> str: return self.title + + +class ArticleMutator(models.Model): + + id = models.AutoField(primary_key=True) + name = models.CharField(max_length=64) + value = models.CharField(max_length=32) + + def __str__(self) -> str: + return self.name