Admin Site

Example

If you need to override base site class create the files (e.g. <project_name>/admin_webix.py) a Here an example:

import datetime
from django.apps import apps
from django.conf import settings
from django.utils.functional import LazyObject
from django.utils.module_loading import import_string

class CustomSiteAdminWebixSite(LazyObject):
    def _setup(self):
        AdminWebixSiteClass = import_string(apps.get_app_config('admin_webix').default_site)

        AdminWebixSiteClass.site_url = '/'

        # texts
        AdminWebixSiteClass.site_title = gettext_lazy('Django webix site admin')
        AdminWebixSiteClass.site_header = gettext_lazy('Django webix administration')
        AdminWebixSiteClass.index_title = gettext_lazy('Site administration')

        # form style
        AdminWebixSiteClass.login_form = None
        AdminWebixSiteClass.label_width = None

        # template style
        AdminWebixSiteClass.webix_container_id = 'content_right'
        AdminWebixSiteClass.webix_menu_type = 'menu'  # ['menu', 'sidebar']
        AdminWebixSiteClass.webix_menu_width = 180

        # templates
        AdminWebixSiteClass.index_template = None
        AdminWebixSiteClass.login_template = None
        AdminWebixSiteClass.logout_template = None
        AdminWebixSiteClass.dashboard_template = 'admin_webix/dashboard.js'
        AdminWebixSiteClass.password_change_template = None
        AdminWebixSiteClass.password_change_done_template = None

        # for webgis support
        AdminWebixSiteClass.webgis_template = 'webgis_leaflet/init.js'

        # context for index
        def extra_index_context(self, request):
            if request.session.get('year',None) == None:
                request.session['year'] = datetime.datetime.today().year
            return {
                'DEBUG': settings.DEBUG,
                'years': list(range(2020, datetime.datetime.today().year + 1)),
            }
        AdminWebixSiteClass.extra_index_context = extra_index_context

        # context for each view
        def each_context(self, request):
            return super().each_context(request)
        AdminWebixSiteClass.each_context = each_context

        # dashboard view
        def dashboard(self, request, extra_context=None):
            return super().dashboard(request, extra_context)
        AdminWebixSiteClass.dashboard = dashboard

        self._wrapped = AdminWebixSiteClass()

custom_site = CustomSiteAdminWebixSite()

Site texts

There are some options for customizate text header into django_webix_admin.

site_title
site_header
index_title

Site templates

It’s possibile to change all main templates.

index_template
login_template
logout_template
dashboard_template
password_change_template
password_change_done_template

Form style

With some variables is possibile to fit better label and field into forms.

login_form
label_width

Template style

There is possibility to customize many and main webix ID key.

webix_container_id = 'content_right'
webix_menu_type = 'menu'  # ['menu', 'sidebar']
webix_menu_width = 180

WebGIS support

Django webix admin supports gis based on leaflet. It’s posibile to find an example into package templates.

webgis_template

Context

It’s possibile to customizate context for each view and specially for index page.

def extra_index_context(self, request):
def each_context(self, request):

Dashboard

You can override main dashboard (not work only on his context).

def dashboard(self, request, extra_context=None):