Disable add, edit and delete views and widgets for a custom Wagtail ViewSet index page

I have this Django model:

class Player(models.Model):
    class Meta:
        verbose_name = _("Player")
        verbose_name_plural = _("Players")

    first_name = models.CharField(verbose_name=_("First Name"), blank=False, null=False, max_length=255)
    last_name = models.CharField(verbose_name=_("Last Name"), blank=False, null=False, max_length=255)
    email = models.EmailField(verbose_name=_("Email"), blank=False, null=False, max_length=255)
    uid = models.UUIDField(unique=True, blank=False, null=False, editable=False)

    objects = PlayerManager()

    @property
    def name(self):
        return f"{self.first_name} {self.last_name}"

    # Add verbose name for custom property
    name.fget.short_description = _("Full Name")

And this custom ViewSet to display it in the Wagtail Admin interface:

class PlayerListViewSet(ModelViewSet):
    model = Player
    name = "players"

    add_to_settings_menu = False
    add_to_admin_menu = False

    list_display = (
        "name",
        "email",
        "uid"
    )

    search_fields = ("first_name", "last_name", "email",)

    # Disable Player CRUD
    create_view_enabled = False
    edit_view_enabled = False
    delete_view_enabled = False

    # Disable forms
    exclude_form_fields = "__all__"

    # Block CRUD permissions
    def has_add_permission(self, request):
        return False
    
    def has_edit_permission(self, request, obj=None):
        return False
    
    def has_delete_permission(self, request, obj=None):
        return False

    def get_index_view_kwargs(self, **kwargs):
        kwargs = super().get_index_view_kwargs(**kwargs)
        kwargs["show_add_button"] = False
        return kwargs

The problem is - I don't want the Player models to be created, edited or deleted via the admin interface - only a list view should be accessible. I added attributes above, but the edit/delete and add widgets are still displayed on the page. Is there a way to disable those views and widgets for a custom ViewSet?

Вернуться на верх