Skip to content

Commit

Permalink
feat: multi site support
Browse files Browse the repository at this point in the history
  • Loading branch information
lukasvinclav committed Mar 25, 2023
1 parent 2e254e7 commit 9e59690
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 22 deletions.
1 change: 1 addition & 0 deletions src/unfold/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ class UnfoldAdminField(helpers.AdminField):
def label_tag(self):
classes = []

# TODO load config from current AdminSite (override Fieldline.__iter__ method)
for lang, flag in get_config()["EXTENSIONS"]["modeltranslation"][
"flags"
].items():
Expand Down
7 changes: 5 additions & 2 deletions src/unfold/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,8 @@


@lru_cache
def get_config():
return {**CONFIG_DEFAULTS, **getattr(settings, "UNFOLD", {})}
def get_config(settings_name=None):
if settings_name is None:
settings_name = "UNFOLD"

return {**CONFIG_DEFAULTS, **getattr(settings, settings_name, {})}
50 changes: 30 additions & 20 deletions src/unfold/sites.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,22 @@

class UnfoldAdminSite(AdminSite):
default_site = "unfold.admin.UnfoldAdminSite"
settings_name = "UNFOLD"

def __init__(self, name="admin"):
from .forms import AuthenticationForm

super().__init__(name)

self.login_form = AuthenticationForm
if get_config()["SITE_TITLE"]:
self.site_title = get_config()["SITE_TITLE"]
if get_config(self.settings_name)["SITE_TITLE"]:
self.site_title = get_config(self.settings_name)["SITE_TITLE"]

if get_config()["SITE_HEADER"]:
self.site_header = get_config()["SITE_HEADER"]
if get_config(self.settings_name)["SITE_HEADER"]:
self.site_header = get_config(self.settings_name)["SITE_HEADER"]

if get_config()["SITE_URL"]:
self.site_url = get_config()["SITE_URL"]
if get_config(self.settings_name)["SITE_URL"]:
self.site_url = get_config(self.settings_name)["SITE_URL"]

def get_urls(self):
urlpatterns = [
Expand All @@ -46,21 +47,28 @@ def each_context(self, request):

context.update(
{
"logo": self._get_value(get_config()["SIDEBAR"].get("logo"), request),
"colors": get_config()["COLORS"],
"icon": self._get_value(get_config()["SITE_ICON"], request),
"tab_list": get_config()["TABS"],
"logo": self._get_value(
get_config(self.settings_name)["SIDEBAR"].get("logo"), request
),
"colors": get_config(self.settings_name)["COLORS"],
"icon": self._get_value(
get_config(self.settings_name)["SITE_ICON"], request
),
"tab_list": get_config(self.settings_name)["TABS"],
"styles": [
self._get_value(style, request) for style in get_config()["STYLES"]
self._get_value(style, request)
for style in get_config(self.settings_name)["STYLES"]
],
"scripts": [
self._get_value(script, request)
for script in get_config()["SCRIPTS"]
for script in get_config(self.settings_name)["SCRIPTS"]
],
"sidebar_show_all_applications": get_config()["SIDEBAR"].get(
"show_all_applications"
"sidebar_show_all_applications": get_config(self.settings_name)[
"SIDEBAR"
].get("show_all_applications"),
"sidebar_show_search": get_config(self.settings_name)["SIDEBAR"].get(
"show_search"
),
"sidebar_show_search": get_config()["SIDEBAR"].get("show_search"),
"sidebar_navigation": self.get_sidebar_list(request)
if self.has_permission(request)
else [],
Expand All @@ -81,7 +89,7 @@ def index(self, request, extra_context=None):
**(extra_context or {}),
}

dashboard_callback = get_config()["DASHBOARD_CALLBACK"]
dashboard_callback = get_config(self.settings_name)["DASHBOARD_CALLBACK"]

if isinstance(dashboard_callback, str):
context = import_string(dashboard_callback)(request, context)
Expand Down Expand Up @@ -133,10 +141,12 @@ def search(self, request, extra_context=None):

def login(self, request, extra_context=None):
extra_context = {} if extra_context is None else extra_context
image = self._get_value(get_config()["LOGIN"].get("image"), request)
image = self._get_value(
get_config(self.settings_name)["LOGIN"].get("image"), request
)

redirect_field_name = self._get_value(
get_config()["LOGIN"].get("redirect_after"), request
get_config(self.settings_name)["LOGIN"].get("redirect_after"), request
)

if image not in EMPTY_VALUES:
Expand Down Expand Up @@ -168,7 +178,7 @@ def password_change(self, request, extra_context=None):
return PasswordChangeView.as_view(**defaults)(request)

def get_sidebar_list(self, request):
navigation = get_config()["SIDEBAR"].get("navigation", [])
navigation = get_config(self.settings_name)["SIDEBAR"].get("navigation", [])
results = []

def _get_is_active(link):
Expand All @@ -187,7 +197,7 @@ def _get_is_active(link):
item["active"] = False
item["active"] = _get_is_active(item["link"])

for tab in get_config()["TABS"]:
for tab in get_config(self.settings_name)["TABS"]:
has_primary_link = False
has_tab_link_active = False

Expand Down

0 comments on commit 9e59690

Please sign in to comment.