Skip to content

Commit

Permalink
Added setting to support disabling admin pages (#444)
Browse files Browse the repository at this point in the history
  • Loading branch information
onurhunce-planetly authored Jun 2, 2022
1 parent d9dba2d commit 6344395
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 3 deletions.
4 changes: 4 additions & 0 deletions docs/starting/configuring.rst
Original file line number Diff line number Diff line change
Expand Up @@ -101,3 +101,7 @@ behavior.
e.g. ``logging.WARNING``.
Defaults to ``None``.


``WAFFLE_ENABLE_ADMIN_PAGES``
Enables the default admin pages for Waffle models. This is True by default,
but can be disabled to override or customize the pages.
1 change: 1 addition & 0 deletions test_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,4 +106,5 @@
WAFFLE_SAMPLE_DEFAULT = False
WAFFLE_READ_FROM_WRITE_DB = False
WAFFLE_OVERRIDE = False
WAFFLE_ENABLE_ADMIN_PAGES = True
WAFFLE_CACHE_PREFIX = 'test:'
8 changes: 5 additions & 3 deletions waffle/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from django.utils.translation import gettext_lazy as _

from waffle.models import Flag, Sample, Switch
from waffle.utils import get_setting


class BaseAdmin(admin.ModelAdmin):
Expand Down Expand Up @@ -133,6 +134,7 @@ class SampleAdmin(BaseAdmin):
ordering = ('-id',)


admin.site.register(Flag, FlagAdmin)
admin.site.register(Sample, SampleAdmin)
admin.site.register(Switch, SwitchAdmin)
if get_setting('ENABLE_ADMIN_PAGES'):
admin.site.register(Flag, FlagAdmin)
admin.site.register(Sample, SampleAdmin)
admin.site.register(Switch, SwitchAdmin)
1 change: 1 addition & 0 deletions waffle/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,4 @@
LOG_MISSING_SWITCHES = None

OVERRIDE = False
ENABLE_ADMIN_PAGES = True
29 changes: 29 additions & 0 deletions waffle/tests/test_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@
from django.contrib.admin.sites import AdminSite
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Permission
from django.test.utils import override_settings
from waffle import get_waffle_flag_model
from waffle.admin import (FlagAdmin, SwitchAdmin, InformativeManyToManyRawIdWidget, enable_for_all,
disable_for_all, delete_individually, enable_switches, disable_switches)
from waffle.models import Switch
from waffle.tests.base import TestCase
from waffle.utils import get_setting


django_version = tuple(int(d) for d in django.get_version().split("."))
Expand Down Expand Up @@ -111,6 +113,17 @@ def test_flag_action_delete(self):

self.assertEqual(actions.keys(), {"delete_individually"})

def test_model_can_be_registered_by_default(self):
config = get_setting("ENABLE_ADMIN_PAGES")
_register_model_to_admin_site(admin_site=self.site, config_setting=config, model=Flag)
self.assertTrue(self.site.is_registered(Flag))

@override_settings(WAFFLE_ENABLE_ADMIN_PAGES=False)
def test_admin_page_can_be_disabled(self):
config = get_setting("ENABLE_ADMIN_PAGES")
_register_model_to_admin_site(admin_site=self.site, config_setting=config, model=Flag)
self.assertFalse(self.site.is_registered(Flag))


class SwitchAdminTests(TestCase):
def setUp(self):
Expand Down Expand Up @@ -163,3 +176,19 @@ def test_switch_action_delete(self):
actions = self.switch_admin.get_actions(request)

self.assertEqual(actions.keys(), {"delete_individually"})

def test_model_can_be_registered_by_default(self):
config = get_setting("ENABLE_ADMIN_PAGES")
_register_model_to_admin_site(admin_site=self.site, config_setting=config, model=Switch)
self.assertTrue(self.site.is_registered(Switch))

@override_settings(WAFFLE_ENABLE_ADMIN_PAGES=False)
def test_admin_page_can_be_disabled(self):
config = get_setting("ENABLE_ADMIN_PAGES")
_register_model_to_admin_site(admin_site=self.site, config_setting=config, model=Switch)
self.assertFalse(self.site.is_registered(Switch))


def _register_model_to_admin_site(admin_site, config_setting, model):
if config_setting:
admin_site.register(model)

0 comments on commit 6344395

Please sign in to comment.