Skip to content

Commit

Permalink
Add THEME_DEFAULT setting
Browse files Browse the repository at this point in the history
.. changeable in settings file and via envvar.
  • Loading branch information
elfjes authored Nov 12, 2024
1 parent 2ba2b05 commit d33d922
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 9 deletions.
3 changes: 2 additions & 1 deletion src/argus_htmx/constants.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from argus_htmx.dateformat.constants import DATETIME_DEFAULT, DATETIME_FORMATS, DATETIME_CHOICES
from argus_htmx.incidents.constants import DEFAULT_PAGE_SIZE, ALLOWED_PAGE_SIZES, PAGE_SIZE_CHOICES
from argus_htmx.themes.constants import THEME_CHOICES, THEME_NAMES
from argus_htmx.themes.constants import THEME_CHOICES, THEME_NAMES, THEME_DEFAULT


__all__ = [
Expand All @@ -11,5 +11,6 @@
"DEFAULT_PAGE_SIZE",
"PAGE_SIZE_CHOICES",
"THEME_CHOICES",
"THEME_DEFAULT",
"THEME_NAMES",
]
3 changes: 2 additions & 1 deletion src/argus_htmx/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# items in INCIDENT_TABLE_COLUMNS can be either a `str` referring to a key in
# argus_htmx.incidents.customization.BUILTIN_COLUMNS or an instance of
# argus_htmx.incidents.customization.IncidentTableColumn
from argus.site.settings import get_json_env
from argus.site.settings import get_json_env, get_str_env

INCIDENT_TABLE_COLUMNS = [
"row_select",
Expand Down Expand Up @@ -54,5 +54,6 @@
},
]
DAISYUI_THEMES = get_json_env("DAISYUI_THEMES", DEFAULT_THEMES, quiet=True)
THEME_DEFAULT = get_str_env("ARGUS_THEME_DEFAULT", "argus")
DEFAULT_THEME_OVERRIDE = {}
TAILWIND_THEME_OVERRIDE = get_json_env("TAILWIND_THEME_OVERRIDE", DEFAULT_THEME_OVERRIDE, quiet=True)
4 changes: 3 additions & 1 deletion src/argus_htmx/themes/constants.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
from argus_htmx.themes.utils import get_theme_names
from argus_htmx.themes.utils import get_theme_default, get_theme_names


__all__ = [
"THEME_CHOICES",
"THEME_DEFAULT",
"THEME_NAMES",
]


THEME_NAMES = sorted(get_theme_names())
THEME_CHOICES = tuple((theme, theme) for theme in THEME_NAMES)
THEME_DEFAULT = get_theme_default()
4 changes: 4 additions & 0 deletions src/argus_htmx/themes/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,7 @@ def get_theme_names():
elif isinstance(theme, dict):
theme_names.extend(theme.keys())
return theme_names


def get_theme_default():
return getattr(settings, "THEME_DEFAULT", argus_htmx_settings.THEME_DEFAULT)
8 changes: 2 additions & 6 deletions src/argus_htmx/user/preferences/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,17 @@
PAGE_SIZE_CHOICES,
DEFAULT_PAGE_SIZE,
THEME_CHOICES,
THEME_DEFAULT,
)


class DateTimeFormatForm(forms.Form):
datetime_format_name = forms.ChoiceField(required=False, choices=DATETIME_CHOICES)

def clean_datetime_format_name(self):
return self.cleaned_data.get("datetime_format_name", DATETIME_DEFAULT) or DATETIME_DEFAULT


class PageSizeForm(forms.Form):
page_size = forms.TypedChoiceField(required=False, choices=PAGE_SIZE_CHOICES, coerce=int)

def clean_page_size(self):
return self.cleaned_data.get("page_size", DEFAULT_PAGE_SIZE) or DEFAULT_PAGE_SIZE


class ThemeForm(forms.Form):
theme = forms.ChoiceField(choices=THEME_CHOICES)
Expand All @@ -40,6 +35,7 @@ class ArgusHtmxPreferences(Preferences):
_FIELD_DEFAULTS = {
"datetime_format_name": DATETIME_DEFAULT,
"page_size": DEFAULT_PAGE_SIZE,
"theme": THEME_DEFAULT,
}

class Meta:
Expand Down

0 comments on commit d33d922

Please sign in to comment.