message style safely deletes without setting null
All checks were successful
Build and Push Docker Image / build (push) Successful in 15s
All checks were successful
Build and Push Docker Image / build (push) Successful in 15s
will set the related subscription to use the default instead
This commit is contained in:
parent
9f18ae3f13
commit
1cd1199e28
@ -243,6 +243,11 @@ class SubscriptionSerializer(DynamicModelSerializer):
|
||||
)
|
||||
channels_detail = serializers.SerializerMethodField()
|
||||
filters_detail = serializers.SerializerMethodField()
|
||||
message_style = serializers.PrimaryKeyRelatedField(
|
||||
queryset=MessageStyle.objects.all(),
|
||||
required=True,
|
||||
allow_null=False
|
||||
)
|
||||
message_style_detail = serializers.SerializerMethodField()
|
||||
unique_rules_detail = serializers.SerializerMethodField()
|
||||
|
||||
|
@ -0,0 +1,19 @@
|
||||
# Generated by Django 5.0.4 on 2024-10-15 18:30
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('home', '0014_alter_discordchannel_id_alter_server_id'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='subscription',
|
||||
name='message_style',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='home.messagestyle'),
|
||||
),
|
||||
]
|
@ -150,7 +150,13 @@ class MessageStyle(models.Model):
|
||||
if self.auto_created:
|
||||
raise ValidationError("Cannot delete 'MessageStyle' instance with 'auto_created=True'")
|
||||
|
||||
super().delete()
|
||||
# If this style is being used, reset the users to the default style
|
||||
default_message_style = MessageStyle.objects.get(server=self.server, auto_created=True)
|
||||
Subscription.objects \
|
||||
.filter(server=self.server, message_style=self) \
|
||||
.update(message_style=default_message_style)
|
||||
|
||||
super().delete(*args, **kwargs)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
@ -240,7 +246,7 @@ class Subscription(models.Model):
|
||||
publish_threshold = models.DateTimeField(default=timezone.now)
|
||||
channels = models.ManyToManyField(to=DiscordChannel, related_name="subscriptions", blank=False)
|
||||
filters = models.ManyToManyField(to=ContentFilter, blank=True)
|
||||
message_style = models.ForeignKey(to=MessageStyle, on_delete=models.SET_NULL, null=True, blank=True)
|
||||
message_style = models.ForeignKey(to=MessageStyle, on_delete=models.SET_NULL, null=True, blank=False)
|
||||
unique_rules = models.ManyToManyField(to=UniqueContentRule, blank=False)
|
||||
|
||||
class Meta:
|
||||
|
Loading…
x
Reference in New Issue
Block a user