Initial commit

This commit is contained in:
2025-05-20 21:27:20 -07:00
commit afc6e0c937
13 changed files with 730 additions and 0 deletions

0
sandbox/__init__.py Normal file
View File

16
sandbox/asgi.py Normal file
View File

@ -0,0 +1,16 @@
"""
ASGI config for sandbox project.
It exposes the ASGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/5.2/howto/deployment/asgi/
"""
import os
from django.core.asgi import get_asgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'sandbox.settings')
application = get_asgi_application()

241
sandbox/settings.py Normal file
View File

@ -0,0 +1,241 @@
"""
Django settings for sandbox project.
Generated by 'djangocms' command using django CMS 5.0.0 and Django 5.2.1.
For more information on this file, see
https://docs.djangoproject.com/en/5.2/topics/settings/
For the full list of Django settings and their values, see
https://docs.djangoproject.com/en/5.2/ref/settings/
For the list of django CMS settings and their values, see
https://docs.django-cms.org/en/release-5.0.x/reference/configuration.html
"""
import os
from pathlib import Path
from django.utils.translation import gettext_lazy as _
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/5.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-l*51_imckgkjri#_$sjsq=mcm0329%)^&nfmq+wj30&e76#prk'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'djangocms_admin_style',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
# CMS base apps
'cms',
'menus',
'djangocms_text',
'djangocms_link',
'djangocms_alias',
'djangocms_versioning',
'sekizai',
'treebeard',
'parler',
'filer',
'easy_thumbnails',
'djangocms_frontend',
'djangocms_frontend.contrib.accordion',
'djangocms_frontend.contrib.alert',
'djangocms_frontend.contrib.badge',
'djangocms_frontend.contrib.card',
'djangocms_frontend.contrib.carousel',
'djangocms_frontend.contrib.collapse',
'djangocms_frontend.contrib.content',
'djangocms_frontend.contrib.grid',
'djangocms_frontend.contrib.icon',
'djangocms_frontend.contrib.image',
'djangocms_frontend.contrib.jumbotron',
'djangocms_frontend.contrib.link',
'djangocms_frontend.contrib.listgroup',
'djangocms_frontend.contrib.media',
'djangocms_frontend.contrib.navigation',
'djangocms_frontend.contrib.tabs',
'djangocms_frontend.contrib.utilities',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware',
'django.middleware.locale.LocaleMiddleware',
'cms.middleware.language.LanguageCookieMiddleware',
]
ROOT_URLCONF = 'sandbox.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, "sandbox", "templates"),
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.template.context_processors.i18n',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'sekizai.context_processors.sekizai',
'cms.context_processors.cms_settings',
],
},
},
]
THUMBNAIL_PROCESSORS = (
'easy_thumbnails.processors.colorspace',
'easy_thumbnails.processors.autocrop',
'filer.thumbnail_processors.scale_and_crop_with_subject_location',
'easy_thumbnails.processors.filters',
)
WSGI_APPLICATION = 'sandbox.wsgi.application'
# Database
# https://docs.djangoproject.com/en/5.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# Password validation
# https://docs.djangoproject.com/en/5.2/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/5.2/topics/i18n/
LANGUAGE_CODE = 'en'
LANGUAGES = [
("en", _("English")),
# Add additional languages here
]
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_THOUSAND_SEPARATOR = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.2/howto/static-files/
STATIC_URL = 'static/'
# Default primary key field type
# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
# This is a django CMS 4 template
CMS_CONFIRM_VERSION4 = True
# django CMS requires the site framework
# https://docs.django-cms.org/en/release-5.0.x/how_to/multi-site.html
SITE_ID = 1
# A base template is part of this setup
# https://docs.django-cms.org/en/release-5.0.x/reference/configuration.html#cms-templates
CMS_TEMPLATES = (
("base.html", _("Standard")),
)
# Enable permissions
# https://docs.django-cms.org/en/release-5.0.x/topics/permissions.html
CMS_PERMISSION = True
# Allow admin sidebar to open admin URLs
X_FRAME_OPTIONS = 'SAMEORIGIN'
# Enable inline editing with djangocms-text
# https://github.com/django-cms/djangocms-text#inline-editing-feature
TEXT_INLINE_EDITING = True
# Allow deletion of version objects
# https://djangocms-versioning.readthedocs.io/en/latest/settings.html#DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS
DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS = True
# Add project-wide static files directory
# https://docs.djangoproject.com/en/5.2/ref/settings/#staticfiles-dirs
STATICFILES_DIRS = [
BASE_DIR / "sandbox" / "static",
]
INTERNAL_IPS = [
"127.0.0.1",
]
# Add project-wide static files directory
# https://docs.djangoproject.com/en/5.2/ref/settings/#media-root
MEDIA_URL = "media/"
MEDIA_ROOT = str(BASE_DIR.parent / "media")

View File

@ -0,0 +1,211 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="1000"
height="1000"
viewBox="0 0 264.58332 264.58333"
version="1.1"
id="svg5"
xml:space="preserve"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="colormatic_logo.svg"
inkscape:export-filename="drawing.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="false"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
showgrid="false"
inkscape:zoom="0.52850974"
inkscape:cx="347.20268"
inkscape:cy="504.24804"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="38"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
showguides="false"><inkscape:grid
type="xygrid"
id="grid1290"
originx="0"
originy="0" /></sodipodi:namedview><defs
id="defs2"><inkscape:path-effect
effect="fillet_chamfer"
id="path-effect2036"
is_visible="true"
lpeversion="1"
nodesatellites_param="F,0,0,1,0,8,0,1 @ F,0,0,1,0,8,0,1 @ F,0,0,1,0,8,0,1 @ F,0,0,1,0,8,0,1"
unit="px"
method="auto"
mode="F"
radius="8"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false" /><inkscape:path-effect
effect="fillet_chamfer"
id="path-effect2034"
is_visible="true"
lpeversion="1"
nodesatellites_param="F,0,0,1,0,8,0,1 @ F,0,0,1,0,8,0,1 @ F,0,0,1,0,8,0,1 @ F,0,0,1,0,8,0,1"
unit="px"
method="auto"
mode="F"
radius="8"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false" /><inkscape:path-effect
effect="fillet_chamfer"
id="path-effect2028"
is_visible="true"
lpeversion="1"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
unit="px"
method="auto"
mode="F"
radius="8"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false" /><inkscape:path-effect
effect="fillet_chamfer"
id="path-effect2024"
is_visible="true"
lpeversion="1"
nodesatellites_param="F,0,0,1,0,8,0,1 @ F,0,0,1,0,8,0,1 @ F,0,0,1,0,8,0,1 @ F,0,0,1,0,8,0,1"
unit="px"
method="auto"
mode="F"
radius="8"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false" /><inkscape:path-effect
effect="fillet_chamfer"
id="path-effect869"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1"
unit="px"
method="auto"
mode="F"
radius="1"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1" /><inkscape:path-effect
effect="fillet_chamfer"
id="path-effect859"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
unit="px"
method="auto"
mode="F"
radius="1"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" /></defs><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><path
style="fill:#d65e7a;fill-opacity:1;stroke-width:6.13818"
d="m 138.44549,250.55474 c -4.55247,0.26406 -9.37823,0.91958 -14.82915,1.92718 -11.65067,2.15418 -20.84357,5.04773 -26.044079,7.49308 a 132.70987,132.29573 0 0 0 34.353209,4.60832 132.70987,132.29573 0 0 0 42.66233,-7.10995 c -14.12901,-5.29674 -24.48059,-7.59639 -36.14231,-6.91863 z"
id="path414" /><path
style="fill:#08d3dd;fill-opacity:1;stroke-width:6.13818"
d="m 146.83866,229.35597 c -2.43608,0.30575 -3.42495,1.37126 -2.1974,3.35149 2.17347,3.50575 9.32279,6.36804 15.8858,6.36804 6.56298,0 11.93534,2.63551 11.93534,5.85335 0,2.45646 6.41314,5.36808 14.37288,7.72054 a 132.70987,132.29573 0 0 0 10.99878,-5.55408 c -3.68628,-1.58437 -7.52511,-3.20626 -10.00216,-4.71604 -13.27189,-8.08976 -33.68501,-13.94288 -40.99331,-13.0233 z"
id="path412" /><path
style="fill:#8ec419;fill-opacity:1;stroke-width:6.13818"
d="m 63.17105,201.37013 c -5.57449,-1.71639 -10.666234,1.54963 -21.289134,11.6349 -3.282631,3.11639 -5.498672,5.86216 -7.804821,8.61835 a 132.70987,132.29573 0 0 0 3.314046,3.39944 c 1.629756,-2.08469 3.171263,-4.14344 6.820206,-6.69117 20.499607,-14.31373 29.60477,-11.92258 11.443052,3.00451 l -11.87533,9.75543 a 132.70987,132.29573 0 0 0 0.672443,0.57445 l 15.465557,-8.51064 c 17.704391,-9.75775 18.607937,-11.57027 9.22169,-18.48149 -2.187879,-1.60985 -4.109522,-2.73188 -5.967709,-3.30378 z"
id="path410" /><path
style="fill:#b158bc;fill-opacity:1;stroke-width:6.13818"
d="m 106.06151,190.04655 c -8.675019,0 -18.804135,13.50742 -15.861792,21.15105 2.99165,7.77174 -23.483751,21.62544 -40.741133,24.72978 a 132.70987,132.29573 0 0 0 15.285433,10.42578 c 6.14523,-0.47717 12.036586,-1.15353 18.575454,-1.23229 20.287698,-0.24553 41.351558,-0.78292 46.804878,-1.19754 15.759,-1.19985 6.53919,-21.29374 -13.58037,-29.6017 -9.8219,-4.05565 -17.855032,-9.95811 -17.855032,-13.11897 0,-3.16178 2.766542,-4.04546 6.147812,-1.96424 3.38129,2.08238 6.14778,0.86399 6.14778,-2.70523 0,-3.56969 -2.21808,-6.4878 -4.92303,-6.4878 z"
id="path408" /><path
style="fill:#2ead98;fill-opacity:1;stroke-width:6.13818"
d="m 47.561409,180.92556 c -3.746301,1.4616 -12.502138,8.43976 -22.645963,18.31402 -1.857699,1.80905 -3.024436,2.59405 -4.766955,4.20135 a 132.70987,132.29573 0 0 0 5.163194,7.46922 c 13.344295,-13.41268 24.194928,-26.39475 24.194928,-29.50581 0,-0.83851 -0.696375,-0.9659 -1.945297,-0.47948 z"
id="path406" /><path
style="fill:#0a7726;fill-opacity:1;stroke-width:6.13818"
d="m 31.063232,137.51046 c -6.266056,0 -10.047025,2.17503 -8.405186,4.82397 1.641838,2.64965 5.423016,4.81194 8.405186,4.81194 2.98217,0 6.763348,-2.16345 8.405186,-4.81194 1.642071,-2.64941 -2.139084,-4.82397 -8.405186,-4.82397 z"
id="path404" /><path
style="fill:#27663e;fill-opacity:1;stroke-width:6.13818"
d="m 264.58332,133.81175 c -1.452,0.55592 -2.23946,0.80377 -3.97445,1.4616 l -17.17059,6.49961 18.31131,17.61982 a 132.70987,132.29573 0 0 0 2.83373,-25.57987 z"
id="path402" /><path
style="fill:#a762ad;fill-opacity:1;stroke-width:6.13818"
d="m 75.73079,127.02492 c -2.591112,-1.42222 -18.266023,14.23752 -34.845502,34.80857 -28.501954,35.36332 -28.829811,36.15365 -5.895632,14.42375 13.340763,-12.64018 26.768753,-22.98234 29.838406,-22.98234 3.069652,0 2.256424,3.30493 -1.801236,7.3497 -4.057521,4.04499 -7.372543,9.99378 -7.372543,13.21463 0,3.22085 6.913916,-2.15187 15.357487,-11.94598 8.443549,-9.79389 12.566385,-18.73953 9.173663,-19.8699 -3.392723,-1.13036 -4.720669,-4.38017 -2.953822,-7.22994 1.766846,-2.85001 1.090221,-6.34627 -1.50103,-7.76849 z"
id="path400" /><path
style="fill:#c14015;fill-opacity:1;stroke-width:6.13818"
d="m 130.83281,116.50325 c -6.22932,0 -16.41841,17.6717 -14.80515,25.67553 0.46796,2.32258 -4.54885,5.93072 -11.15489,8.02004 -17.704412,5.60134 -40.129495,39.10512 -31.759604,47.44875 4.801785,4.78692 8.418732,2.06848 12.895961,-9.67181 3.423207,-8.97576 9.23138,-16.31504 12.89596,-16.31504 3.664443,0 4.763103,3.05524 2.449513,6.78707 -2.788638,4.49853 -0.0837,5.47625 8.03295,2.90861 10.33856,-3.27112 11.7994,-1.57511 9.40181,10.92865 -2.42616,12.65222 0.60413,15.9699 20.80886,22.80259 13.00342,4.39754 27.34446,8.62507 31.86765,9.3964 4.52316,0.77134 12.8227,5.46305 18.44338,10.42601 3.54654,3.13144 8.73362,6.07155 13.89257,8.49859 a 132.70987,132.29573 0 0 0 7.42059,-5.1471 c -7.24742,-0.50728 -8.12533,-1.80905 0.84044,-8.5704 10.40618,-7.84678 10.6028,-9.00147 1.53704,-9.00147 -5.71818,0 -10.39842,-2.8961 -10.39842,-6.4278 0,-3.5317 -7.32309,-13.18429 -16.27004,-21.45009 -8.94691,-8.26581 -13.30487,-15.02229 -9.68996,-15.02229 3.61494,0 15.19246,8.59727 25.73188,19.10388 14.29868,14.25328 22.07136,17.791 34.18509,15.8842 a 132.70987,132.29573 0 0 0 22.57391,-45.21049 c -17.16074,-14.03461 -27.62917,-18.79349 -38.08749,-16.85357 l -15.36948,2.84884 15.36948,-6.97862 c 8.45321,-3.83259 12.3897,-8.09509 8.75339,-9.48025 -10.83348,-4.12792 -42.56625,12.39025 -42.56625,22.15657 0,4.97477 -8.29954,11.82947 -18.44338,15.23771 -10.14385,3.40801 -19.82666,7.81551 -21.51729,9.79133 -1.69063,1.97583 -8.2232,5.4839 -14.51696,7.8044 -8.69761,3.20672 -10.57069,1.93876 -7.7928,-5.27868 2.04497,-5.31272 -0.14639,-10.94509 -4.98308,-12.79584 -14.50338,-5.54806 -15.36178,-18.16762 -1.30887,-19.22387 10.41232,-0.78292 11.2179,0.20847 3.93842,4.78808 -10.15405,6.4 -9.97411,6.52601 13.90458,9.34845 20.93488,2.47453 21.35336,-3.22224 1.60907,-21.71346 -11.69125,-10.94903 -13.682,-16.24901 -8.46522,-22.51537 4.30184,-5.16725 4.51196,-8.19955 0.57624,-8.19955 z"
id="path398" /><path
style="fill:#a06a61;fill-opacity:1;stroke-width:6.13818"
d="m 37.571242,104.24618 c -3.580839,0 -6.50801,2.75782 -6.50801,6.12854 0,3.37071 1.222665,6.12853 2.713681,6.12853 1.491038,0 4.418186,-2.75782 6.50801,-6.12853 2.089823,-3.37072 0.867158,-6.12854 -2.713681,-6.12854 z"
id="path396" /><path
style="fill:#d7a0e8;fill-opacity:1;stroke-width:6.13818"
d="m 247.41273,100.64314 c -4.2432,-0.40999 -8.31299,0.84778 -13.56836,3.65076 -12.4078,6.61959 -12.58662,7.74185 -2.97785,18.32607 8.42475,9.28035 13.40469,10.18209 28.16938,5.0512 2.40089,-0.83387 3.55066,-1.37589 5.42737,-2.07079 a 132.70987,132.29573 0 0 0 -2.25736,-18.45763 c -0.0837,-0.0463 -0.10688,-0.0695 -0.19285,-0.13898 -5.94692,-3.88448 -10.35781,-5.95875 -14.60103,-6.36804 z"
id="path394" /><path
style="fill:#8c4888;fill-opacity:1;stroke-width:6.13818"
d="m 19.608167,93.054168 c -1.911838,0.04633 -4.965272,0.889468 -9.14966,2.489817 -5.5365232,2.117121 -8.5348187,6.330975 -6.664108,9.348455 1.8707107,3.01747 0.7695682,5.48228 -2.4495134,5.48228 -0.079002,0 -0.1835625,0.13898 -0.2641906,0.16214 A 132.70987,132.29573 0 0 0 0,118.77209 c 2.0565968,-1.69555 3.2230317,-2.22831 6.015714,-4.89555 14.822902,-14.156685 19.327804,-20.9866 13.592383,-20.815887 z"
id="path392" /><path
style="fill:#759cef;fill-opacity:1;stroke-width:6.13818"
d="m 175.76453,82.688152 c -5.5293,0.115816 -13.11914,4.135334 -21.38521,12.029832 -15.01776,14.343146 -17.79943,24.160886 -13.43629,47.424886 0.43149,2.30012 6.34843,5.93767 13.16013,8.09185 6.81177,2.15418 10.80072,6.48386 8.86147,9.61182 -1.93926,3.1282 -0.8897,5.68565 2.32943,5.68565 3.2191,0 7.38809,-4.00562 9.26972,-8.89376 1.88163,-4.88837 13.68084,-14.1312 26.21218,-20.54024 L 223.55402,124.45148 204.16204,113.032 c -10.66997,-6.28326 -19.40397,-14.805943 -19.40397,-18.936413 0,-7.725637 -3.46427,-11.52024 -8.99354,-11.407435 z m -6.38795,9.63591 c 5.19071,-0.861673 9.2337,0.905683 9.2337,5.793359 0,3.370719 -2.5388,6.128759 -5.64347,6.128759 -3.10477,0 -10.71266,1.89707 -16.90646,4.2134 -9.91335,3.70751 -10.24913,2.97393 -2.82172,-6.12876 4.6125,-5.652531 10.94724,-9.145317 16.13795,-10.006758 z"
id="path390" /><path
style="fill:#9e5ba5;fill-opacity:1;stroke-width:6.13818"
d="m 9.9662108,80.354224 a 132.70987,132.29573 0 0 0 -2.16139,5.266627 c 2.6607262,-0.29649 4.8149832,-1.206805 4.8149832,-2.465728 0,-0.641622 -1.795659,-1.806733 -2.6536396,-2.800899 z"
id="path388" /><path
style="fill:#7781ce;fill-opacity:1;stroke-width:6.13818"
d="m 92.949415,64.266423 c -5.909992,0.433153 -20.17117,8.528012 -31.699567,17.978848 -11.52842,9.450836 -16.123523,15.596508 -10.206282,13.657744 6.96759,-2.281579 10.758643,-0.35903 10.758643,5.470235 0,12.89312 1.930659,11.68122 22.994174,-14.447614 C 99.936662,68.144414 101.55615,63.634067 92.949415,64.266423 Z M 79.58516,74.189558 c 1.692957,-0.326602 3.220778,-0.06949 4.286649,0.993703 1.547501,1.542672 -1.40251,6.293685 -6.556039,10.557575 -5.842793,4.833475 -9.365775,5.29674 -9.365775,1.232285 0,-5.555009 6.556131,-11.800979 11.635165,-12.784027 z"
id="path386" /><path
style="fill:#669aa8;fill-opacity:1;stroke-width:6.13818"
d="m 34.05307,58.101989 c -0.944069,0.54202 -0.693588,1.998988 0.768406,4.357006 2.922291,4.714184 1.029576,5.804015 -5.631464,3.255826 C 24.115322,63.773741 18.83739,64.640047 16.41411,67.25981 A 132.70987,132.29573 0 0 0 14.985111,69.953 c 0.660592,4.979403 17.416826,4.555052 27.3529,-1.723345 6.562823,-4.147148 6.187356,-5.946469 -1.861184,-9.025327 -3.340651,-1.278611 -5.479898,-1.644591 -6.423967,-1.100254 z"
id="path384" /><path
style="fill:#f940a3;fill-opacity:1;stroke-width:6.13818"
d="m 187.98807,80.617358 -0.15568,0.13898 0.1673,-0.115817 z m 0.012,0.02316 5.06714,6.822734 c 10.52852,14.196288 15.78186,16.598088 28.43355,12.999448 8.53356,-2.427279 21.659,-4.631957 29.16598,-4.9076 l 8.65734,-0.324285 a 132.70987,132.29573 0 0 0 -2.20926,-6.822734 l -7.37254,-6.822965 c -8.01058,-7.404595 -15.71123,-16.917971 -17.12257,-21.138778 -1.83168,-5.477876 -8.61031,-3.672996 -23.67863,6.308047 z m 27.85721,5.218911 c 3.58077,0 4.80348,2.757816 2.71366,6.128532 -2.08983,3.370715 -5.01697,6.128531 -6.50801,6.128531 -1.49127,0 -2.71368,-2.757816 -2.71368,-6.128531 0,-3.370716 2.92719,-6.128532 6.50803,-6.128532 z"
id="path382" /><path
style="fill:#1aaf5d;fill-opacity:1;stroke-width:6.13818"
d="m 212.26704,38.686789 c -4.39011,-1.368948 -9.00971,2.4831 -17.6989,13.34643 l -14.40891,18.026795 7.82884,10.557344 18.15519,-15.524933 c 14.72299,-12.577179 16.79955,-17.15192 10.57854,-23.353416 -1.55517,-1.549621 -2.99139,-2.595904 -4.45476,-3.05222 z"
id="path380" /><path
style="fill:#1d4d75;fill-opacity:1;stroke-width:6.13818"
d="m 111.41682,12.317056 c -3.38127,0 -9.10867,5.515631 -12.727872,12.257062 -4.232834,7.884074 -4.386562,12.257295 -0.432185,12.257295 3.381287,0 9.108647,-5.515864 12.727847,-12.257295 4.23284,-7.883842 4.38659,-12.257062 0.43221,-12.257062 z"
id="path378" /><path
style="fill:#3a995c;fill-opacity:1;stroke-width:6.13818"
d="m 101.78688,3.4830572 a 132.70987,132.29573 0 0 0 -8.032974,2.1426001 c -0.807442,1.0330808 -1.651365,1.570468 -2.389472,2.8847506 -5.182155,9.2310161 -7.443273,9.7973581 -11.851305,3.0042731 -0.274646,-0.423888 -0.293002,-0.09265 -0.540463,-0.430837 a 132.70987,132.29573 0 0 0 -3.314023,1.447703 c -0.05112,1.577417 -0.358528,2.272315 -0.04879,5.183008 1.036547,9.721151 -1.90115,15.143203 -8.813439,16.255039 -8.764481,1.408325 -8.532146,-1.264713 -1.669024,-15.967815 A 132.70987,132.29573 0 0 0 49.829939,28.379608 c -5.946658,10.229121 3.978519,21.026667 16.858424,16.099613 7.296864,-2.791402 8.509073,-0.961274 5.139168,7.792579 v 0.01181 c -4.292085,11.139436 -4.083893,11.143837 8.189048,0.06949 6.928809,-6.251065 11.184996,-12.764801 9.461832,-14.483514 -1.723164,-1.718712 1.250084,-9.797357 6.60409,-17.942944 C 100.55315,13.12499 102.3625,6.8994042 101.78602,3.4798143 Z"
id="path376" /><path
style="fill:#249b12;fill-opacity:1;stroke-width:6.13818"
d="M 152.69828,1.6279129 C 143.95311,9.3306184 137.82082,17.109763 139.65823,20.0735 c 2.43316,3.923854 0.62923,4.66832 -4.67087,1.927182 -4.74904,-2.456231 -3.10032,0.208469 3.66226,5.913113 12.094,10.205031 12.04365,10.311582 -3.07391,6.966578 -10.94053,-2.420791 -20.68419,1.109519 -33.81286,12.233204 -10.143845,8.595649 -14.047847,14.1949 -8.669351,12.43681 5.37859,-1.758091 13.678121,-0.701847 18.443381,2.358018 7.23162,4.641914 7.29684,6.444478 0.36016,10.904561 -6.53011,4.199033 -5.24827,7.481728 5.97969,15.32156 7.85943,5.487604 11.45428,9.982895 7.99694,9.982895 -3.45739,0 -9.24951,-2.960262 -12.87194,-6.571412 -10.07391,-10.042425 -35.214227,23.822011 -25.948017,34.952181 8.254642,9.91526 19.936607,4.43553 15.441527,-7.24176 -1.88488,-4.89601 -0.0325,-7.05622 4.5508,-5.30276 4.25188,1.62606 18.06029,-8.16574 30.67893,-21.761175 21.30252,-22.951996 22.75508,-28.087519 7.07236,-24.93338 -3.38124,0.680999 -4.09154,-0.806081 -1.58491,-3.303774 2.50665,-2.498851 1.47245,-8.248431 -2.29337,-12.771982 -9.73841,-11.697207 0.7152,-10.198545 14.28881,2.047631 10.79331,9.737365 12.84242,8.77169 39.62444,-18.69714 4.56204,-4.678975 7.72522,-8.400845 10.93877,-12.161398 A 132.70987,132.29573 0 0 0 170.32518,5.6624869 c -2.26897,1.7441923 -4.2777,2.9160209 -6.64008,5.0391641 l -18.83962,16.93766 15.34545,-18.3858262 c 2.09354,-2.5081162 2.30986,-2.9025863 4.21462,-5.2189108 A 132.70987,132.29573 0 0 0 152.6983,1.6286078 Z"
id="path374" /><path
style="fill:#7a5d34;fill-opacity:1;stroke-width:6.13818"
d="m 131.92547,0 a 132.70987,132.29573 0 0 0 -19.36796,1.4245396 c 0.30485,0.2084692 0.55975,0.5188567 0.8646,0.7180606 10.31164,6.7351767 14.44914,6.9698204 25.76792,-1.95034527 a 132.70987,132.29573 0 0 0 -7.26449,-0.18530596 z"
id="path315" /></g></svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,81 @@
<!DOCTYPE html>{% load cms_tags i18n menu_tags sekizai_tags static %}{% spaceless %}
{% get_current_language as LANGUAGE_CODE %}{% get_current_language_bidi as LANGUAGE_BIDI %}
<html data-bs-theme="dark" lang="{{ LANGUAGE_CODE|default:"en-us" }}" dir="{{ LANGUAGE_BIDI|yesno:'rtl,ltr,auto' }}">
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
<link rel="icon" type="image/x-icon" href="{% static 'colormatic_logo.svg' %}">
{% block meta %}
<meta name="description" content="{% page_attribute "meta_description" %}"/>
<meta property="og:type" content="website"/>
<meta property="og:title" content="{{ request.current_page.get_page_title|escape }}"/>
<meta property="og:description" content="{% page_attribute meta_description %}"/>
{% endblock meta %}
{% block canonical_url %}
<link rel="canonical" href="{{ request.build_absolute_uri|urlencode:":/&?" }}"/>
<meta property="og:url" content="{{ request.build_absolute_uri|urlencode:"&?" }}"/>
{% endblock canonical_url %}
{% block fb_meta %}{% endblock %}
<title>{% block title %}{{ request.current_page.get_page_title|striptags }}{% endblock %}</title>
{% block base_css %}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
{% endblock base_css %}
{% endspaceless %}{% render_block 'css' %}{% spaceless %}
{% block page_head %}{% endblock %}
</head>
<body {% block body_attrs %}{% endblock %}>
{% endspaceless %}{% cms_toolbar %}{% block navbar %}
<nav class="navbar {% block navbar_options %}navbar-expand-lg{% endblock %}">
<div class="container">
<a class="navbar-brand" href="/"><img class="logo" width="30" src="{% static 'colormatic_logo.svg' %}" alt="Colormatic Logo">{% block brand %}{% endblock %}</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">{% block menubar %}{% show_menu 0 100 100 100 'bootstrap5/menu.html' %}{% endblock %}</ul>
{% block searchbar %}{% endblock %}
</div>
</div>
</nav>
{% endblock navbar %}
{% block content %}
<section>
{% placeholder "Page Content" %}
</section>
{% endblock content %}{% spaceless %}
{% block base_js %}
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
{% endblock base_js %}
{% endspaceless %}{% render_block 'js' %}{% spaceless %}
{% block end_js %}
<script>
/*/
* Automatically set dark theme
*
* This code will detect when the OS's color scheme changes
* and will update accordingly.
/*/
let isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
if (isDarkMode) {
document.documentElement.setAttribute('data-bs-theme', 'dark');
}
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (event) => {
isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
if (isDarkMode) {
document.documentElement.setAttribute('data-bs-theme', 'dark');
} else {
document.documentElement.removeAttribute('data-bs-theme');
}
});
</script>
{% endblock end_js %}
{% block bottom_css %}{% endblock %}
</body>
</html>{% endspaceless %}

34
sandbox/urls.py Normal file
View File

@ -0,0 +1,34 @@
"""
URL configuration for sandbox project.
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/5.2/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.conf import settings
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import include, path
from django.views.i18n import JavaScriptCatalog
urlpatterns = i18n_patterns(
path('jsi18n/', JavaScriptCatalog.as_view(), name='javascript-catalog'),
path('admin/', admin.site.urls),
path('filer/', include('filer.urls')),
path('', include('cms.urls')),
)
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

16
sandbox/wsgi.py Normal file
View File

@ -0,0 +1,16 @@
"""
WSGI config for sandbox project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/5.2/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'sandbox.settings')
application = get_wsgi_application()