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()
|
channels_detail = serializers.SerializerMethodField()
|
||||||
filters_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()
|
message_style_detail = serializers.SerializerMethodField()
|
||||||
unique_rules_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:
|
if self.auto_created:
|
||||||
raise ValidationError("Cannot delete 'MessageStyle' instance with 'auto_created=True'")
|
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):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
@ -240,7 +246,7 @@ class Subscription(models.Model):
|
|||||||
publish_threshold = models.DateTimeField(default=timezone.now)
|
publish_threshold = models.DateTimeField(default=timezone.now)
|
||||||
channels = models.ManyToManyField(to=DiscordChannel, related_name="subscriptions", blank=False)
|
channels = models.ManyToManyField(to=DiscordChannel, related_name="subscriptions", blank=False)
|
||||||
filters = models.ManyToManyField(to=ContentFilter, blank=True)
|
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)
|
unique_rules = models.ManyToManyField(to=UniqueContentRule, blank=False)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user