diff --git a/apps/api/serializers.py b/apps/api/serializers.py index 2d288d3..77ff6ba 100644 --- a/apps/api/serializers.py +++ b/apps/api/serializers.py @@ -171,18 +171,15 @@ class UniqueContentRuleSerializer(DynamicModelSerializer): fields = ("id", "name", "value") -class DiscordChannelSerializer(DynamicModelSerializer): - class Meta: - model = DiscordChannel - fields = ("id", "channel_id") - - class SubscriptionSerializer(DynamicModelSerializer): filters = serializers.PrimaryKeyRelatedField( queryset=ContentFilter.objects.all(), many=True ) - channels = DiscordChannelSerializer(many=True) + channels = serializers.PrimaryKeyRelatedField( + queryset=DiscordChannel.objects.all(), + many=True + ) # unique_rules = UniqueContentRuleSerializer(many=True) # TODO: solve? causes issues with submission. class Meta: @@ -203,22 +200,6 @@ class SubscriptionSerializer(DynamicModelSerializer): "unique_rules" ) - def _delete_unused_channels(self): - referenced_channel_ids = set(Subscription.objects.values_list("channels__channel_id", flat=True)) - del_count, _ = DiscordChannel.objects.exclude(channel_id__in=referenced_channel_ids).delete() - log.info("Deleted %s unreferenced DiscordChannel object(s).", del_count) - - def update(self, instance, validated_data): - channels = validated_data.pop("channels") - - instance.channels.clear() - for channel_id in channels: - channel, created = DiscordChannel.objects.get_or_create(channel_id=channel_id) - instance.channels.add(channel) - - self._delete_unused_channels() - return super().update(instance, validated_data) - def validate(self, data): server = data.get("server") or self.context.get("server") if not server: