from apps.account import models as account_models
from apps.account.serializers import subscribe_newsletter_serializers
from base.permissions import AdminOrPostOnlyPermission
from base.views import BaseModelViewSet


class AccountSubscriberModelViewSet(BaseModelViewSet):
    """
    A viewset for managing newsletter subscribers.

    This viewset allows administrators to list and create newsletter subscribers,
    while regular users are only allowed to create subscriptions.
    """

    permission_classes = (AdminOrPostOnlyPermission,)
    serializer_class = (
        subscribe_newsletter_serializers.AccountNewsLetterSubscriberSerializer
    )
    queryset = account_models.NewsLetterSubscriber.objects.all()
    http_method_names = ["post", "get"]
