Updated subscription model
This commit is contained in:
parent
639dbee04f
commit
8cf077d280
@ -114,13 +114,13 @@ class SubscriptionSerializer(DynamicModelSerializer):
|
||||
Serializer for the Subscription Model.
|
||||
"""
|
||||
|
||||
image = serializers.ImageField(required=False)
|
||||
server = serializers.CharField()
|
||||
# image = serializers.ImageField(required=False)
|
||||
# server = serializers.CharField()
|
||||
# targets = SubscriptionTargetSerializer(many=True, required=False)
|
||||
|
||||
class Meta:
|
||||
model = Subscription
|
||||
fields = ("uuid", "name", "rss_url", "image", "server", "targets", "creation_datetime", "extra_notes", "active")
|
||||
fields = ("id", "name", "url", "guild_id", "channels_count", "creation_datetime", "extra_notes", "active")
|
||||
|
||||
|
||||
class UserServerLinkSerializer(DynamicModelSerializer):
|
||||
|
@ -52,9 +52,9 @@ class Subscription_ListView(generics.ListCreateAPIView):
|
||||
queryset = Subscription.objects.all().order_by("-creation_datetime")
|
||||
|
||||
filter_backends = [filters.SearchFilter, rest_filters.DjangoFilterBackend, filters.OrderingFilter]
|
||||
filterset_fields = ["uuid", "name", "rss_url", "server", "targets", "creation_datetime", "extra_notes", "active"]
|
||||
filterset_fields = ["id", "name", "url", "guild_id", "creation_datetime", "extra_notes", "active"]
|
||||
search_fields = ["name", "extra_notes"]
|
||||
ordering_fields = ["creation_datetime", "server"]
|
||||
ordering_fields = ["creation_datetime", "guild_id"]
|
||||
|
||||
def post(self, request):
|
||||
serializer = self.get_serializer(data=request.data)
|
||||
@ -62,10 +62,10 @@ class Subscription_ListView(generics.ListCreateAPIView):
|
||||
|
||||
try:
|
||||
self.perform_create(serializer)
|
||||
except IntegrityError:
|
||||
except IntegrityError as err:
|
||||
return Response(
|
||||
{"detail": "Duplicate or limit reached"},
|
||||
status=status.HTTP_409_CONFLICT,
|
||||
{"detail": str(err)},
|
||||
status=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
exception=True
|
||||
)
|
||||
|
||||
|
@ -8,8 +8,8 @@ from .models import Subscription, SavedGuilds
|
||||
@admin.register(Subscription)
|
||||
class SubscriptionAdmin(admin.ModelAdmin):
|
||||
list_display = [
|
||||
"uuid", "name", "rss_url", "server",
|
||||
"creation_datetime"
|
||||
"id", "name", "url", "guild_id",
|
||||
"creation_datetime", "active"
|
||||
]
|
||||
|
||||
|
||||
|
@ -73,8 +73,8 @@ class SavedGuilds(models.Model):
|
||||
default=False
|
||||
)
|
||||
|
||||
class NewSubscription(models.Model):
|
||||
|
||||
class Subscription(models.Model):
|
||||
id = models.AutoField(
|
||||
primary_key=True
|
||||
)
|
||||
@ -94,75 +94,19 @@ class NewSubscription(models.Model):
|
||||
max_length=128
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
class Subscription(models.Model):
|
||||
"""
|
||||
Represents a stored RSS Feed.
|
||||
"""
|
||||
|
||||
uuid = models.UUIDField(
|
||||
primary_key=True,
|
||||
default=uuid4,
|
||||
editable=False
|
||||
)
|
||||
|
||||
# Name attribute acts as a human readable identification and search option.
|
||||
name = models.CharField(
|
||||
verbose_name=_("name"),
|
||||
help_text=_("Reference name for this subscription (max 32 chars)."),
|
||||
max_length=32,
|
||||
null=False,
|
||||
blank=False
|
||||
)
|
||||
|
||||
rss_url = models.URLField(
|
||||
verbose_name=_("rss url"),
|
||||
help_text=_("URL of the subscribed to RSS feed.")
|
||||
)
|
||||
|
||||
image = models.ImageField(
|
||||
verbose_name=_("image"),
|
||||
help_text=_("image of the RSS feed."),
|
||||
upload_to=IconPathGenerator(),
|
||||
storage=OverwriteStorage(),
|
||||
default="../static/images/placeholder-100x100.png",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
|
||||
# Discord Server ID
|
||||
server = models.PositiveBigIntegerField(
|
||||
verbose_name=_("server id"),
|
||||
help_text=_("Identifier for the discord server that owns this subscription.")
|
||||
)
|
||||
|
||||
targets = models.CharField(
|
||||
verbose_name=_("targets"),
|
||||
max_length=500,
|
||||
help_text=_("Discord channels where subscription content is delivered to.")
|
||||
)
|
||||
|
||||
creation_datetime = models.DateTimeField(
|
||||
verbose_name=_("creation datetime"),
|
||||
help_text=_("when this instance was created."),
|
||||
default=timezone.now,
|
||||
editable=False
|
||||
)
|
||||
|
||||
extra_notes = models.CharField(
|
||||
verbose_name=_("extra notes"),
|
||||
max_length=250,
|
||||
null=True,
|
||||
blank=True,
|
||||
help_text=_("Additional user written notes about this item.")
|
||||
)
|
||||
|
||||
active = models.BooleanField(
|
||||
verbose_name=_("active"),
|
||||
default=True,
|
||||
help_text=_("Acts as a soft delete.")
|
||||
)
|
||||
|
||||
class Meta:
|
||||
@ -175,14 +119,18 @@ class Subscription(models.Model):
|
||||
get_latest_by = "-creation_datetime"
|
||||
constraints = [
|
||||
# Prevent servers from having subscriptions with duplicate names
|
||||
models.UniqueConstraint(fields=["name", "server"], name="unique name & server pair")
|
||||
models.UniqueConstraint(fields=["name", "guild_id"], name="unique name & server pair")
|
||||
]
|
||||
|
||||
@property
|
||||
def channels_count(self):
|
||||
return 0
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
new_text = "New " if self._state.adding else ""
|
||||
log.debug("%sSubscription Saved %s", new_text, self.uuid)
|
||||
log.debug("%sSubscription Saved %s", new_text, self.id)
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user