diff --git a/biscuit/core/settings.py b/biscuit/core/settings.py index 289d3dcd0f3b770d5e5cda0ef514531e32bc3d2b..34e10eab0ecfdff9c4c6c7a2d46debb4ecac1c15 100644 --- a/biscuit/core/settings.py +++ b/biscuit/core/settings.py @@ -26,6 +26,7 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', 'django_global_request', + 'sass_processor', 'easyaudit', 'bootstrap4', 'fa', @@ -38,6 +39,20 @@ INSTALLED_APPS = [ INSTALLED_APPS += get_app_packages() +STATICFILES_FINDERS = [ + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', + 'sass_processor.finders.CssFinder' +] + +SASS_PROCESSOR_AUTO_INCLUDE = False +SASS_PROCESSOR_CUSTOM_FUNCTIONS = { + 'get-colour': 'biscuit.core.util.sass_helpers.get_colour', +} +SASS_PROCESSOR_INCLUDE_DIRS = [ + LocalSetting(default='/usr/share/sass/bootstrap') +] + MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', @@ -150,6 +165,14 @@ ANY_JS = { } } +COLOUR_PRIMARY = LocalSetting(default='#007bff') +COLOUR_SECONDARY = LocalSetting(default='#6c757d') +COLOUR_SUCCESS = LocalSetting(default='#28a745') +COLOUR_INFO = LocalSetting(default='#17a2b8') +COLOUR_WARNING = LocalSetting(default='#ffc107') +COLOUR_DANGER = LocalSetting(default='#dc3545') +COLOUR_LIGHT = LocalSetting(default='#f8f9fa') +COLOUR_DARK = LocalSetting(default='#343a40') _settings = load_and_check_settings(globals()) globals().update(_settings) diff --git a/biscuit/core/static/bootstrap_colours.scss b/biscuit/core/static/bootstrap_colours.scss new file mode 100644 index 0000000000000000000000000000000000000000..faa508a70cdf59234e231f34f96e497612865642 --- /dev/null +++ b/biscuit/core/static/bootstrap_colours.scss @@ -0,0 +1,12 @@ +$theme-colors: ( + "primary": get-colour(get-setting(COLOUR_PRIMARY)), + "secondary": get-colour(get-setting(COLOUR_SECONDARY)), + "success": get-colour(get-setting(COLOUR_SUCCESS)), + "info": get-colour(get-setting(COLOUR_INFO)), + "warning": get-colour(get-setting(COLOUR_WARNING)), + "danger": get-colour(get-setting(COLOUR_DANGER)), + "light": get-colour(get-setting(COLOUR_LIGHT)), + "dark": get-colour(get-setting(COLOUR_DARK)), +); + +@import "bootstrap"; diff --git a/biscuit/core/templates/core/base.html b/biscuit/core/templates/core/base.html index 09124833c5fa5e310c0b32bc7c0b6472acf1ddb1..17db1f12ea723856d5760664650b5ec5b36721b6 100644 --- a/biscuit/core/templates/core/base.html +++ b/biscuit/core/templates/core/base.html @@ -1,12 +1,13 @@ {# -*- engine:django -*- #} {% extends "bootstrap4/bootstrap4.html" %} -{% load bootstrap4 menu_generator staticfiles font_awesome any_js %} +{% load bootstrap4 menu_generator staticfiles font_awesome any_js sass_tags %} {% block bootstrap4_title %}BiscuIT School Information System{% endblock %} {% block bootstrap4_extra_head %} {% fa_css %} {% include_css "DataTables-Bootstrap4" %} + <link rel="stylesheet" href="{% sass_src 'bootstrap_colours.scss' %}" /> <link rel="stylesheet" href="{% static 'css/style.css' %}" /> <link rel="shortcut icon" href="#" /> {% endblock %} diff --git a/biscuit/core/util/sass_helpers.py b/biscuit/core/util/sass_helpers.py new file mode 100644 index 0000000000000000000000000000000000000000..ed864d07f5d440c9413a721415982cb52e38b276 --- /dev/null +++ b/biscuit/core/util/sass_helpers.py @@ -0,0 +1,8 @@ +from colour import web2hex +from sass import SassColor + +def get_colour(html_colour): + rgb = web2hex(html_colour, force_long=True)[1:] + r, g, b = int(rgb[0:2], 16), int(rgb[2:4], 16), int(rgb[4:6], 16) + + return SassColor(r, g, b, 255) diff --git a/local.cfg b/local.cfg index 842f1e4a13dc8cbe9cf8ed5b15d048124227b44f..d0c6ff53f2d60ea5c1d35531d8848043fbc9c1fe 100644 --- a/local.cfg +++ b/local.cfg @@ -16,3 +16,12 @@ BOOTSTRAP4.popper_url = "/javascript/popper.js/umd/popper.min.js" ANY_JS.DataTables-Bootstrap4.css_url = "/javascript/jquery-datatables/css/dataTables.bootstrap4.min.css" ANY_JS.DataTables-Bootstrap4.js_url = "/javascript/jquery-datatables/dataTables.bootstrap4.min.js" ANY_JS.DataTables.js_url = "/javascript/jquery-datatables/jquery.dataTables.js" +COLOUR_PRIMARY = "#007bff" +COLOUR_SECONDARY = "#6c757d" +COLOUR_SUCCESS = "#28a745" +COLOUR_INFO = "#17a2b8" +COLOUR_WARNING = "#ffc107" +COLOUR_DANGER = "#dc3545" +COLOUR_LIGHT = "#f8f9fa" +COLOUR_DARK = "#343a40" +SASS_PROCESSOR_INCLUDE_DIRS.0 = "/usr/share/sass/bootstrap" diff --git a/pyproject.toml b/pyproject.toml index 9205ca115b4d137bb0522f331a40d9b7c1583e9c..5d2e5d2acc53bc6a49892f98d4cc8d4214de549e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,9 @@ django-tables2 = "^2.1" Pillow = "^6.1" django-phonenumber-field = {version = "^3.0", extras = ["phonenumbers"]} django-local-settings = {version = "^1.0-alpha.1", allows-prereleases = true} +django-sass-processor = "^0.7.3" +libsass = "^0.19.2" +colour = "^0.1.5" [tool.poetry.dev-dependencies] sphinx = "^2.1"