diff --git a/apps/home/admin.py b/apps/home/admin.py index 2b498a2..f6855fc 100644 --- a/apps/home/admin.py +++ b/apps/home/admin.py @@ -2,7 +2,7 @@ from django.contrib import admin -from .models import Subscription, SavedGuilds, Filter, SubChannel, TrackedContent, ArticleMutator +from .models import Subscription, SavedGuilds, Filter, SubChannel, TrackedContent, ArticleMutator, GuildSettings @admin.register(Subscription) @@ -44,4 +44,10 @@ class SavedGuildAdmin(admin.ModelAdmin): class ArticleMutatorAdmin(admin.ModelAdmin): list_display = [ "id", "name", "value" - ] \ No newline at end of file + ] + +@admin.register(GuildSettings) +class GuildSettingsAdmin(admin.ModelAdmin): + list_display = [ + "id", "guild_id", "default_embed_colour", "active" + ] diff --git a/apps/home/migrations/0021_alter_guildsettings_options_and_more.py b/apps/home/migrations/0021_alter_guildsettings_options_and_more.py new file mode 100644 index 0000000..1ff9025 --- /dev/null +++ b/apps/home/migrations/0021_alter_guildsettings_options_and_more.py @@ -0,0 +1,122 @@ +# Generated by Django 5.0.4 on 2024-08-14 20:41 + +import django.utils.timezone +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0020_guildsettings'), + ] + + operations = [ + migrations.AlterModelOptions( + name='guildsettings', + options={'get_latest_by': 'id', 'verbose_name': 'guild settings', 'verbose_name_plural': 'guild settings'}, + ), + migrations.RemoveField( + model_name='savedguilds', + name='default_embed_colour', + ), + migrations.AddField( + model_name='guildsettings', + name='active', + field=models.BooleanField(default=True, help_text='Subscriptions of inactive guilds will also be treated as inactive', verbose_name='Active'), + ), + migrations.AlterField( + model_name='guildsettings', + name='guild_id', + field=models.CharField(help_text='Discord snowflake ID for the represented guild.', max_length=128, unique=True, verbose_name='guild id'), + ), + migrations.AlterField( + model_name='savedguilds', + name='id', + field=models.AutoField(primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='subscription', + name='active', + field=models.BooleanField(default=True, verbose_name='Active'), + ), + migrations.AlterField( + model_name='subscription', + name='article_fetch_image', + field=models.BooleanField(default=True, help_text='Will the resulting article have an image?', verbose_name='Fetch Article Images'), + ), + migrations.AlterField( + model_name='subscription', + name='creation_datetime', + field=models.DateTimeField(default=django.utils.timezone.now, editable=False, verbose_name='Created At'), + ), + migrations.AlterField( + model_name='subscription', + name='embed_colour', + field=models.CharField(blank=True, default='3498db', max_length=6, verbose_name='Embed Colour'), + ), + migrations.AlterField( + model_name='subscription', + name='extra_notes', + field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Extra Notes'), + ), + migrations.AlterField( + model_name='subscription', + name='guild_id', + field=models.CharField(max_length=128, verbose_name='Guild ID'), + ), + migrations.AlterField( + model_name='subscription', + name='name', + field=models.CharField(max_length=32, verbose_name='Name'), + ), + migrations.AlterField( + model_name='subscription', + name='published_threshold', + field=models.DateTimeField(blank=True, default=django.utils.timezone.now, verbose_name='Published Threshold'), + ), + migrations.AlterField( + model_name='subscription', + name='url', + field=models.URLField(verbose_name='URL'), + ), + migrations.AlterField( + model_name='trackedcontent', + name='blocked', + field=models.BooleanField(default=False, verbose_name='Blocked'), + ), + migrations.AlterField( + model_name='trackedcontent', + name='channel_id', + field=models.CharField(max_length=128, verbose_name='Channel ID'), + ), + migrations.AlterField( + model_name='trackedcontent', + name='creation_datetime', + field=models.DateTimeField(default=django.utils.timezone.now, editable=False, verbose_name='Created At'), + ), + migrations.AlterField( + model_name='trackedcontent', + name='guid', + field=models.CharField(help_text='RSS provided GUID of the content', max_length=256, verbose_name='GUID'), + ), + migrations.AlterField( + model_name='trackedcontent', + name='id', + field=models.AutoField(primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='trackedcontent', + name='message_id', + field=models.CharField(max_length=128, verbose_name='Message ID'), + ), + migrations.AlterField( + model_name='trackedcontent', + name='title', + field=models.CharField(max_length=728, verbose_name='Title'), + ), + migrations.AlterField( + model_name='trackedcontent', + name='url', + field=models.URLField(verbose_name='URL'), + ), + ] diff --git a/apps/home/models.py b/apps/home/models.py index 9d5138b..6c0fe2e 100644 --- a/apps/home/models.py +++ b/apps/home/models.py @@ -23,7 +23,8 @@ class GuildSettings(models.Model): guild_id = models.CharField( verbose_name=_("guild id"), max_length=128, - help_text=_("Discord snowflake ID for the represented guild.") + help_text=_("Discord snowflake ID for the represented guild."), + unique=True ) default_embed_colour = models.CharField( @@ -33,6 +34,21 @@ class GuildSettings(models.Model): blank=True ) + active = models.BooleanField( + verbose_name=_("Active"), + default=True, + help_text=_("Subscriptions of inactive guilds will also be treated as inactive") + ) + + class Meta: + """ + Metadata for the GuildSettings model. + """ + + verbose_name = "guild settings" + verbose_name_plural = "guild settings" + get_latest_by = "id" + class SavedGuilds(models.Model): """ @@ -79,12 +95,6 @@ class SavedGuilds(models.Model): help_text=_("Does the 'added by' user own this guild?") ) - default_embed_colour = models.CharField( - max_length=6, - default="3498db", - blank=True - ) - class Meta: """ Metadata for the SavedGuilds Model. @@ -109,6 +119,10 @@ class SavedGuilds(models.Model): def settings(self): return GuildSettings.objects.get(guild_id=self.guild_id) + def save(self, *args, **kwargs): + GuildSettings.objects.get_or_create(guild_id=self.guild_id) + super().save(*args, **kwargs) + class SubChannel(models.Model): """