diff --git a/apps/custom_example/apps.py b/apps/custom_example/apps.py index 672181cfa..26ebfd163 100644 --- a/apps/custom_example/apps.py +++ b/apps/custom_example/apps.py @@ -2,4 +2,4 @@ class CustomExampleConfig(AppConfig): - name = 'custom_example' + name = 'apps.custom_example' diff --git a/docker-compose.example.yml b/docker-compose.example.yml index 6e93d5527..c5a14fb3d 100644 --- a/docker-compose.example.yml +++ b/docker-compose.example.yml @@ -16,7 +16,7 @@ services: # HACK: No confirmed support for dir globbing, so block all of `static/` - /code/taccsite_cms/static # CAVEAT: CMS projects must add a line to ignore thier `...build/` dirs - - /code/taccsite_custom/example-cms/static + - /code/taccsite_custom/example_cms/static postgres: extends: diff --git a/docker-compose.yml b/docker-compose.yml index 03fbe3c08..7631bf98f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,7 @@ services: # HACK: No confirmed support for dir globbing, so block all of `static/` - /code/taccsite_cms/static # CAVEAT: CMS projects must add a line to ignore thier `...build/` dirs - - /code/taccsite_custom/example-cms/static + - /code/taccsite_custom/example_cms/static postgres: extends: diff --git a/poetry.lock b/poetry.lock index 952267f7f..fd0c8938a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -83,18 +83,21 @@ files = [ [[package]] name = "asgiref" -version = "3.2.10" +version = "3.7.2" description = "ASGI specs, helper code, and adapters" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" files = [ - {file = "asgiref-3.2.10-py3-none-any.whl", hash = "sha256:9fc6fb5d39b8af147ba40765234fa822b39818b12cc80b35ad9b0cef3a476aed"}, - {file = "asgiref-3.2.10.tar.gz", hash = "sha256:7e51911ee147dd685c3c8b805c0ad0cb58d360987b56953878f8c06d2d1c6f1a"}, + {file = "asgiref-3.7.2-py3-none-any.whl", hash = "sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e"}, + {file = "asgiref-3.7.2.tar.gz", hash = "sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"}, ] +[package.dependencies] +typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} + [package.extras] -tests = ["pytest", "pytest-asyncio"] +tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] [[package]] name = "astroid" @@ -220,6 +223,26 @@ files = [ {file = "colorclass-2.2.0.tar.gz", hash = "sha256:b05c2a348dfc1aff2d502527d78a5b7b7e2f85da94a96c5081210d8e9ee8e18b"}, ] +[[package]] +name = "cssselect2" +version = "0.7.0" +description = "CSS selectors for Python ElementTree" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cssselect2-0.7.0-py3-none-any.whl", hash = "sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969"}, + {file = "cssselect2-0.7.0.tar.gz", hash = "sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a"}, +] + +[package.dependencies] +tinycss2 = "*" +webencodings = "*" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["flake8", "isort", "pytest"] + [[package]] name = "decorator" version = "5.1.1" @@ -234,22 +257,23 @@ files = [ [[package]] name = "django" -version = "2.2.27" +version = "3.2.19" description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "Django-2.2.27-py3-none-any.whl", hash = "sha256:90763c764738586b11d7e1f44828032c153366e43ad7f782908193a1bb2d6d92"}, - {file = "Django-2.2.27.tar.gz", hash = "sha256:1ee37046b0bf2b61e83b3a01d067323516ec3b6f2b17cd49b1326dd4ba9dc913"}, + {file = "Django-3.2.19-py3-none-any.whl", hash = "sha256:21cc991466245d659ab79cb01204f9515690f8dae00e5eabde307f14d24d4d7d"}, + {file = "Django-3.2.19.tar.gz", hash = "sha256:031365bae96814da19c10706218c44dff3b654cc4de20a98bd2d29b9bde469f0"}, ] [package.dependencies] +asgiref = ">=3.3.2,<4" pytz = "*" sqlparse = ">=0.2.2" [package.extras] -argon2 = ["argon2-cffi (>=16.1.0)"] +argon2 = ["argon2-cffi (>=19.1.0)"] bcrypt = ["bcrypt"] [[package]] @@ -269,17 +293,18 @@ django = "*" [[package]] name = "django-appdata" -version = "0.3.0" +version = "0.3.2" description = "Extendable field that enables Django apps to store their data on your models." category = "main" optional = false python-versions = "*" files = [ - {file = "django-appdata-0.3.0.tar.gz", hash = "sha256:56dcbace6bfeda544cfb606e1e15611f7f8a9a48abbc76adf6f7d2b13457c008"}, + {file = "django-appdata-0.3.2.tar.gz", hash = "sha256:b57259ca306bf2be3f0b8be882b9c86c99603067a126ce8cefad8a26ebe85df9"}, + {file = "django_appdata-0.3.2-py3-none-any.whl", hash = "sha256:10e444b175f156dcec1c6a06f8931fde279391bf9dde12c90d036dcae736aa42"}, ] [package.dependencies] -Django = ">=1.11,<3.1" +Django = "*" six = "*" [[package]] @@ -315,41 +340,42 @@ django = ">=2.2" [[package]] name = "django-cms" -version = "3.7.4" -description = "An Advanced Django CMS" +version = "3.11.3" +description = "Lean enterprise content management powered by Django." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "django-cms-3.7.4.tar.gz", hash = "sha256:9374af5a35bac590f1891031fb0878a0e6c2dc5309a6907929c6a036493694f6"}, - {file = "django_cms-3.7.4-py2.py3-none-any.whl", hash = "sha256:9302f0e21153fc9afca55d9c3424ca3654b51d274a1af6ec39f4fbb05059fe46"}, + {file = "django-cms-3.11.3.tar.gz", hash = "sha256:1d97b5b07f8cd0a48a3d4a20a2495347b886568779aff954cb9aede3252c10f8"}, + {file = "django_cms-3.11.3-py2.py3-none-any.whl", hash = "sha256:fcbe668e5363a085683bd213f3bdf5a32ec53536ce5e1cf4b84df454696d5074"}, ] [package.dependencies] -Django = ">=1.11,<4" +Django = ">=2.2,<5.0" django-classy-tags = ">=0.7.2" django-formtools = ">=2.1" django-sekizai = ">=0.7" django-treebeard = ">=4.3" djangocms-admin-style = ">=1.2" -six = "*" +packaging = "*" [[package]] name = "django-filer" -version = "2.0.2" +version = "2.2.5" description = "A file management application for django that makes handling of files and images a breeze." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "django-filer-2.0.2.tar.gz", hash = "sha256:97fb205a70615c8c63dbe5beb5ea63078461c98d2b148d81147a796401915a07"}, + {file = "django-filer-2.2.5.tar.gz", hash = "sha256:ad21bcd430275ad68190336abab0274c4d22589d279ff9569e5af82103c40b75"}, + {file = "django_filer-2.2.5-py3-none-any.whl", hash = "sha256:a4764e2fba2f2074e8554d2d6d90e191c5cb583c00817161eb1b5e5ca72afa70"}, ] [package.dependencies] -django = ">=2.2,<4.0" -django-mptt = ">=0.6,<1.0" -django-polymorphic = ">=2,<3.1" -easy-thumbnails = ">=2,<3.0" +django = ">=2.2,<5" +django-mptt = "*" +django-polymorphic = "*" +easy-thumbnails = {version = "*", extras = ["svg"]} Unidecode = ">=0.04,<1.2" [[package]] @@ -406,35 +432,37 @@ files = [ [[package]] name = "django-meta" -version = "1.7.0" +version = "2.2.0" description = "Pluggable app for handling webpage meta tags and OpenGraph properties" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "django-meta-1.7.0.tar.gz", hash = "sha256:6930e4a5f87f0aec47b0639143f05541dc0bc75ac2b21b21b1986812c7f02e48"}, - {file = "django_meta-1.7.0-py2.py3-none-any.whl", hash = "sha256:0c1ea4d000afaea36983e42ff59aeb77c943073d304ff9e58b04041fb02d629a"}, + {file = "django-meta-2.2.0.tar.gz", hash = "sha256:0e52d41b2790038c02d80c3cc7a7df36d6bf71e02f2828e3267af50256c4a8b6"}, + {file = "django_meta-2.2.0-py2.py3-none-any.whl", hash = "sha256:c7d4eec6dfdc1bf0275794ad5106e088c8d7f350d465563035ac61d45456640d"}, ] -[package.dependencies] -six = "*" +[package.extras] +docs = ["django (<5.0)"] [[package]] name = "django-mptt" -version = "0.11.0" +version = "0.14.0" description = "Utilities for implementing Modified Preorder Tree Traversal with your Django Models and working with trees of Model instances." category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "django-mptt-0.11.0.tar.gz", hash = "sha256:dfdb3af75ad27cdd4458b0544ec8574174f2b90f99bc2cafab6a15b4bc1895a8"}, - {file = "django_mptt-0.11.0-py2.py3-none-any.whl", hash = "sha256:90eb236eb4f1a92124bd7c37852bbe09c0d21158477cc237556d59842a91c509"}, + {file = "django-mptt-0.14.0.tar.gz", hash = "sha256:2c92a2b1614c53086278795ccf50580cf1f9b8564f3ff03055dd62bab5987711"}, + {file = "django_mptt-0.14.0-py3-none-any.whl", hash = "sha256:d9a87433ab0e4f35247c6f6d5a93ace6990860a4ba8796f815d185f773b9acfc"}, ] [package.dependencies] -Django = ">=1.11" django-js-asset = "*" +[package.extras] +tests = ["coverage", "mock-django"] + [[package]] name = "django-parler" version = "2.2" @@ -621,17 +649,18 @@ files = [ [[package]] name = "django-treebeard" -version = "4.3.1" +version = "4.4" description = "Efficient tree implementations for Django" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "django-treebeard-4.3.1.tar.gz", hash = "sha256:83aebc34a9f06de7daaec330d858d1c47887e81be3da77e3541fe7368196dd8a"}, + {file = "django-treebeard-4.4.tar.gz", hash = "sha256:f50e4eea146f7af6702decf7ef198ac1eee1fb9bb4af2c5dba276c3c48f76623"}, + {file = "django_treebeard-4.4-py3-none-any.whl", hash = "sha256:214ae3ab331a7de11fb055a2015c201e34f3fa14255b667e1e07752231a7a398"}, ] [package.dependencies] -Django = ">=1.8" +Django = ">=2.2" [[package]] name = "djangocms-admin-style" @@ -662,61 +691,63 @@ django-cms = "*" [[package]] name = "djangocms-attributes-field" -version = "2.0.0" +version = "2.1.0" description = "Adds attributes to Django models." category = "main" optional = false python-versions = "*" files = [ - {file = "djangocms-attributes-field-2.0.0.tar.gz", hash = "sha256:525f1a94de38c446e2746ff307dbc0ec7b157ca1e10c1350bc43b3eace9065d6"}, - {file = "djangocms_attributes_field-2.0.0-py3-none-any.whl", hash = "sha256:ebd7d3ef9e7a2a3413f02512cd13638e3eab0b15ab9eea44b3f002405ac77c7c"}, + {file = "djangocms-attributes-field-2.1.0.tar.gz", hash = "sha256:df4a9fe0d399c7bd8d93b2b281a73f404975ca2c1415d13067f9a39565a416e2"}, + {file = "djangocms_attributes_field-2.1.0-py3-none-any.whl", hash = "sha256:f17920c89244512d4c64e7be60d99b07016d8b30bc73cb02723e6bbf8e41741c"}, ] [package.dependencies] django-cms = ">=3.7" +django-treebeard = ">=4.3,<4.5" [[package]] name = "djangocms-blog" -version = "1.1.1" -description = "A djangoCMS 3 blog application" +version = "1.2.3" +description = "The blog application for django CMS" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "djangocms-blog-1.1.1.tar.gz", hash = "sha256:5c8bad8986d360ac306b5ac27a019c80907bc48a3502bbfc6f5e105467a2929c"}, - {file = "djangocms_blog-1.1.1-py2.py3-none-any.whl", hash = "sha256:0ea294a4d611472fc1d97f23ddfa3088f5df41c0ffaf39142c4506e56e588cf6"}, + {file = "djangocms-blog-1.2.3.tar.gz", hash = "sha256:6a50fb84d3350f13ca1795bfdd44940d8abadcc9d1a767347aa92fddbb38386f"}, + {file = "djangocms_blog-1.2.3-py2.py3-none-any.whl", hash = "sha256:682f1b549bf54427d4a1a9e4011d974934d1c5b37003ced311ceccbb44f5f504"}, ] [package.dependencies] aldryn-apphooks-config = ">=0.5" -django-cms = ">=3.5" +django-cms = ">=3.7" django-filer = ">=1.4" -django-meta = ">=1.4" +django-meta = ">=2.0" django-parler = ">=2.0" django-sortedm2m = "*" -django-taggit = ">=0.20,<1.3" +django-taggit = ">=1.0" django-taggit-autosuggest = "*" django-taggit-templatetags = "*" djangocms-apphook-setup = "*" -djangocms-text-ckeditor = ">=3.5" -easy-thumbnails = ">=2.4.1,<2.8" +djangocms-text-ckeditor = ">=3.9" +easy-thumbnails = ">=2.4.1" lxml = "*" pytz = "*" [package.extras] +docs = ["django (<3.1)"] search = ["aldryn-search"] taggit-helpers = ["django-taggit-helpers"] [[package]] name = "djangocms-bootstrap4" -version = "2.0.0" +version = "3.0.0" description = "Adds Bootstrap 4 components as plugins." category = "main" optional = false python-versions = "*" files = [ - {file = "djangocms-bootstrap4-2.0.0.tar.gz", hash = "sha256:9e08c16f7e04e09e65f1d3eea3c13e41c27b5ea04418eecc41e1a1cea92f3388"}, - {file = "djangocms_bootstrap4-2.0.0-py3-none-any.whl", hash = "sha256:34848c8e16d4e6c2d9011ef99c7ac3c1e0bbbf3fedca9136d8716f0094ec869f"}, + {file = "djangocms-bootstrap4-3.0.0.tar.gz", hash = "sha256:b75a2f61a8c57848fa28971a31d5831646c5917b9735744f895a19ddafa1a288"}, + {file = "djangocms_bootstrap4-3.0.0-py3-none-any.whl", hash = "sha256:b1a6d99cae22af2c36f3d62a79c6838776bc125f485b593ac719d924b3e17eee"}, ] [package.dependencies] @@ -728,22 +759,24 @@ djangocms-link = ">=2.5.0" djangocms-picture = ">=2.3.0" djangocms-text-ckeditor = ">=3.1.0" +[package.extras] +static-ace = ["djangocms-static-ace"] + [[package]] name = "djangocms-column" -version = "1.11.0" +version = "2.0.0" description = "Column Plugin for django CMS" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "djangocms-column-1.11.0.tar.gz", hash = "sha256:3a763159bc454311aa7e472aca32a2ab2e5070176a3204e17d844e3d548f6c7c"}, - {file = "djangocms_column-1.11.0-py2-none-any.whl", hash = "sha256:1112c787a93474a31dae1cc164b46d282431b8e671514b181d1f216b2d3c1b81"}, + {file = "djangocms-column-2.0.0.tar.gz", hash = "sha256:1ded8ae99053cf0a174e862e9c8c72d5b9c5dec78ed4a860a0630c616c2e48b7"}, + {file = "djangocms_column-2.0.0-py3-none-any.whl", hash = "sha256:6279b47fa7529c694f2d52630e7958343532d4a0ebbd4f482749d6da4fd254d5"}, ] [package.dependencies] -Django = ">=1.11,<=3.2" -django-cms = ">=3.4.5" -six = ">=1.9.0" +Django = ">=2.2" +django-cms = ">=3.8.0" [[package]] name = "djangocms-file" @@ -823,14 +856,14 @@ djangocms-attributes-field = ">=1" [[package]] name = "djangocms-link" -version = "3.0.0" +version = "3.1.1" description = "Adds a link plugin to django CMS" category = "main" optional = false python-versions = "*" files = [ - {file = "djangocms-link-3.0.0.tar.gz", hash = "sha256:2a53b5d397f85abecc3e423c608e6a2205d14268c8c7af1a158e8114e20a6a67"}, - {file = "djangocms_link-3.0.0-py3-none-any.whl", hash = "sha256:b3121a7fc48ce46dbcdaa5be9e138154cd01661f27532208626b5a5d482ffb36"}, + {file = "djangocms-link-3.1.1.tar.gz", hash = "sha256:e9e989b851ba93ca5e57c497c4e989fe76f16979467c6093f51349b43eba4391"}, + {file = "djangocms_link-3.1.1-py3-none-any.whl", hash = "sha256:1ee4c34fe08830fcf41ed85bfc40d869b3ac42dde7c351814ebd7b1181cb4c18"}, ] [package.dependencies] @@ -840,20 +873,23 @@ djangocms-attributes-field = ">=1" [[package]] name = "djangocms-page-meta" -version = "0.10.0" -description = "OpenGraph, Twitter Card and Google+ snippet tags for django CMS 3 pages" +version = "1.2.0" +description = "OpenGraph, Twitter Card and Schema.org snippet tags for django CMS 3 pages" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "djangocms-page-meta-0.10.0.tar.gz", hash = "sha256:d1443467eee0cee9f5c4e19a0136ad96605469122ea572824d5c554696e5a8fa"}, - {file = "djangocms_page_meta-0.10.0-py2.py3-none-any.whl", hash = "sha256:c54cf479a9f5d43074484e49c3032359e66d2b6fb992432b774d35cb1714405b"}, + {file = "djangocms-page-meta-1.2.0.tar.gz", hash = "sha256:3c0702998424327ac6e5a30e84cdacca2a20c19a284ed490a18f9cdd99d06f4b"}, + {file = "djangocms_page_meta-1.2.0-py2.py3-none-any.whl", hash = "sha256:58e9cf57d07c8dfda1bb2574a047f2700715b3b4583b2914d6688ddbfe64593d"}, ] [package.dependencies] -django-cms = ">=3.4" +django-cms = ">=3.7" django-filer = ">=1.2" -django-meta = ">=1.3" +django-meta = ">=2.0.0" + +[package.extras] +docs = ["django (<5.0)", "djangocms-page-tags", "sphinx (>2,<5)"] [[package]] name = "djangocms-picture" @@ -928,18 +964,20 @@ resolved_reference = "cb6834936c508df449914641dafa232c54c858ef" [[package]] name = "djangocms-text-ckeditor" -version = "3.10.0" +version = "5.1.2" description = "Text Plugin for django CMS with CKEditor support" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "djangocms-text-ckeditor-3.10.0.tar.gz", hash = "sha256:905fa0cfbd244fb3a12657f89b083bfb57554ba35f4358972eebc6d78f8d8c3d"}, + {file = "djangocms-text-ckeditor-5.1.2.tar.gz", hash = "sha256:6edaf6ad1334b7797223b04046d9d91fc427595fa5892a6b27ee47af7e7f03d5"}, + {file = "djangocms_text_ckeditor-5.1.2-py3-none-any.whl", hash = "sha256:3523bc77af346f5bb54e1f153d1694802b6dba2d47dda9a081c24223e743b850"}, ] [package.dependencies] -django-cms = ">=3.4.5" -html5lib = ">=0.999999999" +django-cms = ">=3.6" +html5lib = ">=1" +packaging = "*" Pillow = "*" [[package]] @@ -987,18 +1025,24 @@ files = [ [[package]] name = "easy-thumbnails" -version = "2.7" +version = "2.8.5" description = "Easy thumbnails for Django" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "easy-thumbnails-2.7.tar.gz", hash = "sha256:e4e7a0dd4001f56bfd4058428f2c91eafe27d33ef3b8b33ac4e013b159b9ff91"}, + {file = "easy-thumbnails-2.8.5.tar.gz", hash = "sha256:7e4e912609fc9b60b3a1fef6557ec15ddf9c4f946267a92e6920dfd4dd765e35"}, + {file = "easy_thumbnails-2.8.5-py3-none-any.whl", hash = "sha256:97f5a5278d8b6c1f5b1b7473f3737d29b18f5c1159cbdf0ab28674fdac2f8c87"}, ] [package.dependencies] -django = ">=1.11,<4.0" +django = ">=2.2" pillow = "*" +reportlab = {version = "*", optional = true, markers = "extra == \"svg\""} +svglib = {version = "*", optional = true, markers = "extra == \"svg\""} + +[package.extras] +svg = ["reportlab", "svglib"] [[package]] name = "elasticsearch" @@ -1920,6 +1964,26 @@ files = [ {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] +[[package]] +name = "reportlab" +version = "4.0.4" +description = "The Reportlab Toolkit" +category = "main" +optional = false +python-versions = ">=3.7,<4" +files = [ + {file = "reportlab-4.0.4-py3-none-any.whl", hash = "sha256:3dcda79ce04baf70721e2ec54854722644262cac2feec3d5c4c5e77015504cb0"}, + {file = "reportlab-4.0.4.tar.gz", hash = "sha256:7f70b3b56aff5f11cb4136c51a0f5a56fe6e4c8fbbac7b903076db99a8ef31c1"}, +] + +[package.dependencies] +pillow = ">=9.0.0" + +[package.extras] +accel = ["rl-accel (>=0.9.0,<1.1)"] +pycairo = ["freetype-py (>=2.3.0,<2.4)", "rlPyCairo (>=0.2.0,<1)"] +renderpm = ["rl-renderPM (>=4.0.3,<4.1)"] + [[package]] name = "requests" version = "2.27.1" @@ -1978,14 +2042,14 @@ test = ["codecov", "coveralls", "nose"] [[package]] name = "setuptools" -version = "67.8.0" +version = "68.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.8.0-py3-none-any.whl", hash = "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f"}, - {file = "setuptools-67.8.0.tar.gz", hash = "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102"}, + {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, + {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, ] [package.extras] @@ -2049,6 +2113,23 @@ pure-eval = "*" [package.extras] tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] +[[package]] +name = "svglib" +version = "1.5.1" +description = "A pure-Python library for reading and converting SVG" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "svglib-1.5.1.tar.gz", hash = "sha256:3ae765d3a9409ee60c0fb4d24c2deb6a80617aa927054f5bcd7fc98f0695e587"}, +] + +[package.dependencies] +cssselect2 = ">=0.2.0" +lxml = "*" +reportlab = "*" +tinycss2 = ">=0.6.0" + [[package]] name = "tablib" version = "2.0.0" @@ -2086,6 +2167,25 @@ files = [ {file = "terminaltables-3.1.0.tar.gz", hash = "sha256:f3eb0eb92e3833972ac36796293ca0906e998dc3be91fbe1f8615b331b853b81"}, ] +[[package]] +name = "tinycss2" +version = "1.2.1" +description = "A tiny CSS parser" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"}, + {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"}, +] + +[package.dependencies] +webencodings = ">=0.4" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["flake8", "isort", "pytest"] + [[package]] name = "toml" version = "0.10.1" @@ -2325,4 +2425,4 @@ testing = ["func-timeout", "jaraco.itertools"] [metadata] lock-version = "2.0" python-versions = ">=3.8,<4.0" -content-hash = "0af1e8456d76ecdaaee4562d47b0e195e05f7d31772cb1a638a82fe6009edf4e" +content-hash = "0ccbcae5bea1976c541d7f8f4a5d34523689bedfb9ce86ff761b193adf7cae81" diff --git a/pyproject.toml b/pyproject.toml index 936ad00c1..da5fc51cc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,25 +10,25 @@ aldryn-apphooks-config = "0.6.0" aldryn-boilerplates = "0.8.0" aldryn-common = "1.0.5" aldryn-search = "1.1.0" -asgiref = "3.2.10" +asgiref = "^3.6.0" astroid = "2.4.2" autopep8 = "1.5.4" certifi = "2020.6.20" chardet = "3.0.4" colorclass = "2.2.0" -Django = "2.2.27" +Django = "^3.2" django-appconf = "1.0.4" -django-appdata = "0.3.0" +django-appdata = "0.3.2" django-auth-ldap = "2.2.0" django-classy-tags = "2.0.0" -django-cms = "3.7.4" -django-filer = "2.0.2" +django-cms = "^3.8.0" +django-filer = "^2.2" django-formtools = "2.2" django-haystack = "3.0" django-ipware = "3.0.1" django-js-asset = "1.2.2" -django-meta = "1.7.0" -django-mptt = "0.11.0" +django-meta = "^2.1" +django-mptt = "0.14.0" django-parler = "2.2" django-polymorphic = "3.0.0" django-sekizai = "2.0.0" @@ -40,29 +40,29 @@ django-taggit = "1.2.0" django-taggit-autosuggest = "0.3.8" django-taggit-templatetags = "0.2.5" django-templatetag-sugar = "1.0" -django-treebeard = "4.3.1" +django-treebeard = "^4.4" djangocms-admin-style = "2.0.0" djangocms-apphook-setup = "0.4.1" -djangocms-attributes-field = "2.0.0" -djangocms-blog = "1.1.1" -djangocms-bootstrap4 = "2.0.0" -djangocms-column = "1.11.0" +djangocms-attributes-field = "2.1.0" +djangocms-blog = "^1.2" +djangocms-bootstrap4 = "3.0.0" +djangocms-column = "^2.0" djangocms-file = "3.0.0" djangocms-forms-maintained = { git = "https://github.com/avryhof/djangocms-forms", rev = "d8a69efd2f447ee2f940c7b6f5b8b088c9cb79ed" } djangocms-googlemap = "2.0.0" djangocms-icon = "2.0.0" -djangocms-link = "3.0.0" -djangocms-page-meta = "0.10.0" +djangocms-link = "^3.1" +djangocms-page-meta = "^1.1.0" djangocms-picture = "3.0.0" djangocms-snippet = "3.0.0" djangocms-style = "3.0.0" djangocms-tacc-image-gallery = { git = "https://github.com/TACC/Core-CMS-Plugin-Image-Gallery.git", rev = "v0.1.3" } -djangocms-text-ckeditor = "3.10.0" +djangocms-text-ckeditor = "^5.1" djangocms-transfer = "1.0.0" djangocms-video = "3.0.0" django-test-without-migrations = "0.6" docopt = "0.6.2" -easy-thumbnails = "2.7" +easy-thumbnails = "^2.8" elasticsearch = "7.9.1" elasticsearch-dsl = "7.3.0" flake8 = "3.8.3" diff --git a/taccsite_cms/contrib/taccsite_system_specs/templates/system_specs.html b/taccsite_cms/contrib/taccsite_system_specs/templates/system_specs.html index 36aea2fa7..de5aeb36f 100644 --- a/taccsite_cms/contrib/taccsite_system_specs/templates/system_specs.html +++ b/taccsite_cms/contrib/taccsite_system_specs/templates/system_specs.html @@ -1,6 +1,6 @@ {% load cms_tags static %} - +
diff --git a/taccsite_cms/settings.py b/taccsite_cms/settings.py index 686a725e9..97142833f 100644 --- a/taccsite_cms/settings.py +++ b/taccsite_cms/settings.py @@ -38,13 +38,16 @@ def gettext(s): return s # Default portal authorization verification endpoint. CEP_AUTH_VERIFICATION_ENDPOINT = 'localhost' # 'https://0.0.0.0:8000' +# https://docs.djangoproject.com/en/3.0/ref/clickjacking/#how-to-use-it +X_FRAME_OPTIONS = 'SAMEORIGIN' + ######################## # DATABASE SETTINGS ######################## DATABASES = { 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'ENGINE': 'django.db.backends.postgresql', 'PORT': '5432', 'NAME': 'taccsite', 'USER': 'postgresadmin', @@ -266,8 +269,6 @@ def gettext(s): return s TACC_BLOG_CUSTOM_MEDIA_POST_CATEGORY = 'sample_value_e_g__mutlimedia__' TACC_BLOG_SHOW_ABSTRACT_TAG = 'sample_value_e_g__redirect__' - - ######################## # TACC: CORE STYLES ######################## @@ -459,7 +460,10 @@ def gettext(s): return s def get_subdirs_as_module_names(path): module_names = [] for entry in os.scandir(path): - is_app = entry.path.find('_readme') == -1 + is_app = ( + entry.path.find('_readme') == -1 and + entry.path.find('demdata-') == -1 + ) if entry.is_dir() and is_app: # FAQ: There are different root paths to tweak: # - Containers use `/code/…` diff --git a/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.css b/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.css index aff21e93e..09b7ce231 100644 --- a/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.css +++ b/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.css @@ -1,7 +1,3 @@ -/*! https://github.com/django-cms/djangocms-text-ckeditor/blob/3.10.0/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/contents.css */ -body {font-family: sans-serif, Arial, Verdana, "Trebuchet MS", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size: 12px;color: #333;background-color: #fff;margin: 20px;}.cke_editable {font-size: 13px;line-height: 1.6;word-wrap: break-word;}blockquote {font-style: italic;font-family: Georgia, Times, "Times New Roman", serif;padding: 2px 0;border-style: solid;border-color: #ccc;border-width: 0;}.cke_contents_ltr blockquote {padding-left: 20px;padding-right: 8px;border-left-width: 5px;}.cke_contents_rtl blockquote {padding-left: 8px;padding-right: 20px;border-right-width: 5px;}a {color: #0782C1;}ol,ul,dl {*margin-right: 0px;padding: 0 40px;}h1,h2,h3,h4,h5,h6 {font-weight: normal;line-height: 1.2;}hr {border: 0px;border-top: 1px solid #ccc;}img.right {border: 1px solid #ccc;float: right;margin-left: 15px;padding: 5px;}img.left {border: 1px solid #ccc;float: left;margin-right: 15px;padding: 5px;}pre {white-space: pre-wrap;word-wrap: break-word;-moz-tab-size: 4;tab-size: 4;}.marker {background-color: Yellow;}span[lang] {font-style: italic;}figure {text-align: center;outline: solid 1px #ccc;background: rgba(0,0,0,0.05);padding: 10px;margin: 10px 20px;display: inline-block;}figure > figcaption {text-align: center;display: block;}a > img {padding: 1px;margin: 1px;border: none;outline: 1px solid #0782C1;}.code-featured {border: 5px solid red;}.math-featured {padding: 20px;box-shadow: 0 0 2px rgba(200, 0, 0, 1);background-color: rgba(255, 0, 0, 0.05);margin: 10px;}.image-clean {border: 0;background: none;padding: 0;}.image-clean > figcaption {font-size: .9em;text-align: right;}.image-grayscale {background-color: white;color: #666;}.image-grayscale img, img.image-grayscale {filter: grayscale(100%);}.embed-240p {max-width: 426px;max-height: 240px;margin:0 auto;}.embed-360p {max-width: 640px;max-height: 360px;margin:0 auto;}.embed-480p {max-width: 854px;max-height: 480px;margin:0 auto;}.embed-720p {max-width: 1280px;max-height: 720px;margin:0 auto;}.embed-1080p {max-width: 1920px;max-height: 1080px;margin:0 auto;} +@import url("/static/djangocms_text_ckeditor/ckeditor/contents.original.css"); -/*! @tacc/core-styles 2.9.0+ | MIT | github.com/TACC/Core-Styles */@import url("https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"); -/*! core-styles.wysiwig.css */ -/*! core-styles.settings.css → */:root{--global-border-width--normal:1px;--global-border--normal:var(--global-border-width--normal) solid var(--global-color-primary--normal);--global-border-width--thick:2px;--global-border--thick:var(--global-border-width--thick) solid var(--global-color-primary--normal);--global-border-width--x-thick:3px;--global-border--x-thick:var(--global-border-width--x-thick) solid var(--global-color-primary--normal);--global-border-width--xx-thick:5px;--global-border--xx-thick:var(--global-border-width--xx-thick) solid var(--global-color-primary--normal)}:root{--global-color-primary--xx-light:#fff;--global-color-primary--xx-light-rgb:255,255,255;--global-color-primary--x-light:#f4f4f4;--global-color-primary--x-light-rgb:244,244,244;--global-color-primary--light:#d7d7d7;--global-color-primary--light-rgb:198,198,198;--global-color-primary--normal:#afafaf;--global-color-primary--normal-rgb:175,175,175;--global-color-primary--dark:#707070;--global-color-primary--dark-rgb:112,112,112;--global-color-primary--x-dark:#484848;--global-color-primary--x-dark-rgb:72,72,72;--global-color-primary--xx-dark:#222;--global-color-primary--xx-dark-rgb:34,34,34;--global-color-primary--xxx-dark:#000;--global-color-primary--xxx-dark-rgb:0,0,0;--global-color-accent--xxx-light:#dfeafe;--global-color-accent--xx-light:#caddfe;--global-color-accent--x-light:#aac7ff;--global-color-accent--light:#86aeff;--global-color-accent--normal:#039;--global-color-accent--dark:#026;--global-color-accent--x-dark:#013;--global-color-accent--xx-dark:#021230;--global-color-accent--xxx-dark:#000a22;--global-color-accent--secondary:var(--global-color-secondary--normal);--global-color-accent--tertiary:var(--global-color-tertiary--normal);--global-color-secondary--xx-light:#fcf6ec;--global-color-secondary--x-light:#e5d7c0;--global-color-secondary--light:#d5b57c;--global-color-secondary--normal:#877453;--global-color-secondary--dark:#514328;--global-color-secondary--x-dark:#332c1f;--global-color-secondary--xxx-dark:var(--global-color-secondary--x-dark);--global-color-tertiary--xx-light:#e7f1f0;--global-color-tertiary--x-light:#b1d1ce;--global-color-tertiary--light:#92ccc5;--global-color-tertiary--normal:#61a39c;--global-color-tertiary--dark:#406d68;--global-color-tertiary--x-dark:#1e3331;--global-color-tertiary--xxx-dark:var(--global-color-tertiary--x-dark);--global-color-info--x-light:var(--global-color-primary--x-light);--global-color-info--light:var(--global-color-primary--light);--global-color-info--normal:var(--global-color-primary--dark);--global-color-info--dark:var(--global-color-primary--x-dark);--global-color-info--x-dark:var(--global-color-primary--xx-dark);--global-color-danger--x-light:#fce4db;--global-color-danger--light:#fcaf91;--global-color-danger--normal:#ed4c11;--global-color-danger--dark:#c23a03;--global-color-danger--x-dark:#932b06;--global-color-warning--x-light:#fdf0d3;--global-color-warning--light:#fed880;--global-color-warning--normal:#f2b327;--global-color-warning--dark:#cd971c;--global-color-warning--x-dark:#996f0a;--global-color-success--x-light:#baf8dc;--global-color-success--light:#93f6cd;--global-color-success--normal:#10f7a9;--global-color-success--dark:#3dce92;--global-color-success--x-dark:#26885f;--global-color-extra--x-light:#f0f6ff;--global-color-extra--light:#b4d0f9;--global-color-extra--normal:#3f85f4;--global-color-extra--dark:#255bb1;--global-color-extra--x-dark:#174a99;--global-color-info--weak:rgba(var(--global-color-info--normal),0.125);--global-color-danger--weak:rgba(var(--global-color-danger--normal),0.125);--global-color-warning--weak:rgba(var(--global-color-warning--normal),0.125);--global-color-success--weak:rgba(var(--global-color-success--normal),0.125);--global-color-extra--weak:rgba(var(--global-color-extra--normal),0.125);--global-color-background--app:var(--global-color-primary--xx-light);--global-color-link-on-light--normal:var(--global-color-accent--normal);--global-color-link-on-dark--normal:var(--global-color-accent--light)}@font-face{font-display:swap;font-family:Benton Sans;font-style:normal;font-weight:400;src:url(fonts/BentonSans-Regular.otf) format("opentype")}@font-face{font-display:swap;font-family:Benton Sans;font-style:italic;font-weight:400;src:url(fonts/BentonSans-RegularItalic.otf) format("opentype")}@font-face{font-display:swap;font-family:Benton Sans;font-style:normal;font-weight:500;src:url(fonts/BentonSans-Medium.otf) format("opentype")}@font-face{font-display:swap;font-family:Benton Sans;font-style:italic;font-weight:500;src:url(fonts/BentonSans-MediumItalic.otf) format("opentype")}@font-face{font-display:swap;font-family:Benton Sans;font-style:normal;font-weight:700;src:url(fonts/BentonSans-Bold.otf) format("opentype")}@font-face{font-display:swap;font-family:Benton Sans;font-style:normal;font-weight:800;src:url(fonts/BentonSans-Black.otf) format("opentype")}:root{--global-font-family--sans--cms:"Benton Sans","Roboto",sans-serif;--global-font-family--sans--portal:"Roboto",sans-serif;--global-font-family--serif:Times,sans-serif;--global-font-family--mono:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace;--sans--cms:var(--global-font-family--sans--cms);--sans--portal:var(--global-font-family--sans--portal);--serif:var(--global-font-family--serif);--mono:var(--global-font-family--mono);--global-font-weight--regular:400;--global-font-weight--medium:500;--global-font-weight--bold:700;--global-font-weight--black:800;--regular:var(--global-font-weight--regular);--medium:var(--global-font-weight--medium);--bold:var(--global-font-weight--bold);--black:var(--global-font-weight--black)}:root{--global-max-width--x-narrow:540px;--global-max-width--narrow:720px;--global-max-width--medium:960px;--global-max-width--wide:1140px;--global-max-width--x-wide:1320px;--global-max-width--xx-wide:1580px;--global-max-width--xxx-wide:1800px}:root{--global-space--xx-small:2px;--global-space--x-small:4px;--global-space--small:8px;--global-space--normal:16px;--global-space--large:24px;--global-space--x-large:48px;--global-space--bootstrap-gap:30px;--global-space--list-indent:40px;--global-space--section-gap:60px;--global-space--grid-gap:var(--global-space--bootstrap-gap);--global-space--above-breadcrumbs:45px;--global-space--under-breadcrumbs:40px;--global-space--section-top:12px;--global-space--section-bottom:0;--global-space--section-left:24px;--global-space--section-right:36px;--global-space--section:var(--global-space--section-top) var(--global-space--section-right) var(--global-space--section-bottom) var(--global-space--section-left);--global-space--hr-buffer-above:30px;--global-space--hr-buffer-below:30px;--global-space--p-buffer-above:0;--global-space--p-buffer-below:2rem} -/*! ← core-styles.settings.css */.c-island,.island{background-color:var(--global-color-primary--x-light);border-top:var(--global-border-width--thick) solid var(--global-color-tertiary--normal);font-style:italic;padding:1em 2em}.c-island hr,.island hr{border-bottom:var(--global-border-width--normal) solid;border-top:none;margin-block:2em} +@import url("/static/site_cms/css/build/core-styles.wysiwyg.css"); diff --git a/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.original.css b/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.original.css new file mode 100644 index 000000000..42900acf9 --- /dev/null +++ b/taccsite_cms/static/djangocms_text_ckeditor/ckeditor/contents.original.css @@ -0,0 +1,2 @@ +/*! https://github.com/django-cms/djangocms-text-ckeditor/blob/3.10.0/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/contents.css */ +body {font-family: sans-serif, Arial, Verdana, "Trebuchet MS", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size: 12px;color: #333;background-color: #fff;margin: 20px;}.cke_editable {font-size: 13px;line-height: 1.6;word-wrap: break-word;}blockquote {font-style: italic;font-family: Georgia, Times, "Times New Roman", serif;padding: 2px 0;border-style: solid;border-color: #ccc;border-width: 0;}.cke_contents_ltr blockquote {padding-left: 20px;padding-right: 8px;border-left-width: 5px;}.cke_contents_rtl blockquote {padding-left: 8px;padding-right: 20px;border-right-width: 5px;}a {color: #0782C1;}ol,ul,dl {*margin-right: 0px;padding: 0 40px;}h1,h2,h3,h4,h5,h6 {font-weight: normal;line-height: 1.2;}hr {border: 0px;border-top: 1px solid #ccc;}img.right {border: 1px solid #ccc;float: right;margin-left: 15px;padding: 5px;}img.left {border: 1px solid #ccc;float: left;margin-right: 15px;padding: 5px;}pre {white-space: pre-wrap;word-wrap: break-word;-moz-tab-size: 4;tab-size: 4;}.marker {background-color: Yellow;}span[lang] {font-style: italic;}figure {text-align: center;outline: solid 1px #ccc;background: rgba(0,0,0,0.05);padding: 10px;margin: 10px 20px;display: inline-block;}figure > figcaption {text-align: center;display: block;}a > img {padding: 1px;margin: 1px;border: none;outline: 1px solid #0782C1;}.code-featured {border: 5px solid red;}.math-featured {padding: 20px;box-shadow: 0 0 2px rgba(200, 0, 0, 1);background-color: rgba(255, 0, 0, 0.05);margin: 10px;}.image-clean {border: 0;background: none;padding: 0;}.image-clean > figcaption {font-size: .9em;text-align: right;}.image-grayscale {background-color: white;color: #666;}.image-grayscale img, img.image-grayscale {filter: grayscale(100%);}.embed-240p {max-width: 426px;max-height: 240px;margin:0 auto;}.embed-360p {max-width: 640px;max-height: 360px;margin:0 auto;}.embed-480p {max-width: 854px;max-height: 480px;margin:0 auto;}.embed-720p {max-width: 1280px;max-height: 720px;margin:0 auto;}.embed-1080p {max-width: 1920px;max-height: 1080px;margin:0 auto;} diff --git a/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.wysiwyg.css b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.wysiwyg.css new file mode 100644 index 000000000..350fb8195 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_core-styles/core-styles.wysiwyg.css @@ -0,0 +1,2 @@ +/* TODO: Host Core-Styles static files on a CDN */ +@import url("@tacc/core-styles/dist/core-styles.wysiwyg.css"); diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.css b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.css index fbd49629d..0a48936af 100644 --- a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.css +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.css @@ -10,6 +10,7 @@ Reference: Styleguide Components.DjangoCMS.Blog.App */ @import url("@tacc/core-styles/src/lib/_imports/components/bootstrap.pagination.css"); +@import url("@tacc/core-styles/src/lib/_imports/components/c-tag.css"); @import url("./django.cms.blog.app.page.css"); @import url("./django.cms.blog.app.item.css"); @@ -21,7 +22,7 @@ Styleguide Components.DjangoCMS.Blog.App /* Variables */ .app-blog { - --blog-item-buffer: 20px; + --article-buffer: 20px; } @@ -33,7 +34,11 @@ Styleguide Components.DjangoCMS.Blog.App @custom-selector :--article article; @custom-selector :--article-page article.post-detail; @custom-selector :--article-list .blog-list; +@custom-selector :--article-list--as-list .blog-list:not(.as-grid); +@custom-selector :--article-list--as-grid .blog-list.as-grid; @custom-selector :--article-item .blog-list article; +@custom-selector :--article-item--in-list .blog-list:not(.as-grid) article; +@custom-selector :--article-item--in-grid .blog-list.as-grid article; @@ -46,17 +51,39 @@ Styleguide Components.DjangoCMS.Blog.App -/* Header */ +/* Generic */ -.blog-list > header { - margin-bottom: var(--blog-item-buffer); +.app-blog { + /* To control absolute position of descendants e.g. `.blog-visual` */ + position: relative; } -ul.post-detail { + + +/* Header */ + +.app-blog header { + display: grid; + grid-template-areas: + 'cats' + 'tags' + 'attr' + 'head' + 'subh'; +} +:--article-page h1, +:--article-item h3 { grid-area: head } +:--article-page h2, +:--article-item h4 { grid-area: subh } +.app-blog .attrs { grid-area: attr } +.app-blog .categories { grid-area: cats } +.app-blog .tags { grid-area: tags } + +.app-blog ul.post-detail { list-style: none; padding-left: 0; /* overwrite html-elements.css */ - margin-bottom: 0; /* overwrite Bootstrap `reboot.css` */ + margin-bottom: 0.25em; /* overwrite html-elements.css */ font-size: var(--global-font-size--medium); } @@ -65,17 +92,58 @@ ul.post-detail { /* Metadata */ -/* To (optionally) hide tags & categories */ +/* To layout data */ +.app-blog .attrs, +.app-blog .tags, +.app-blog .categories { + display: flex; + flex-direction: row; + gap: 1em; +} +.app-blog .attrs { + justify-content: space-between; +} +.app-blog .date { + order: -1 +} + +/* To conditionally hide tags & categories */ .app-blog.no-tags :--article .tags, .app-blog.no-categories :--article .categories { display: none; } +/* To hide empty tags & categories */ +:--article .tags:empty, +:--article .categories:empty { + display: none; +} + +/* To style categories as "tags" (the UI pattern) */ +.app-blog .categories a { + @extend :--c-tag; + + display: inline-block; + + color: var(--global-color-primary--xx-light); + background-color: var(--global-color-primary--xx-dark); + + font-size: var(--global-font-size--x-small); +} + +/* To style tags as "pills" (the UI pattern) */ +.app-blog .tags a { + /* TODO: When available in Core-Styles, uncomment this */ + /* @extend :--c-pill; */ + + background-color: var(--global-color-primary--light); +} + /* Pagination */ .pagination { - margin-block: calc( var(--blog-item-buffer) * 2 ); + margin-block: calc( var(--article-buffer) * 2 ); } diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.item.css b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.item.css index ba43af062..18731f637 100644 --- a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.item.css +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.item.css @@ -11,7 +11,6 @@ Styleguide Components.DjangoCMS.Blog.App.Item @import url("@tacc/core-styles/src/lib/_imports/tools/x-truncate.css"); @import url("../tools/media-queries.css"); -@import url("../tools/selectors.css"); @@ -19,16 +18,15 @@ Styleguide Components.DjangoCMS.Blog.App.Item /* List */ -/* To have two columns at certain viewport widths */ -@media (--xx-narrow-to-x-narrow), (--x-narrow-to-narrow) { - :--article-list { - display: grid; - grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); - column-gap: 40px; - } - :--article-list > :where(header, nav) { - grid-column: 1 / -1; - } +/* To support rendering list as a grid */ +:--article-list--as-grid { + display: grid; + grid-template-columns: repeat( auto-fit, minmax(350px, 1fr) ); + column-gap: var(--global-space--pattern-pad); +} +/* So page title spans all columns */ +:--article-list--as-grid > header { + grid-column: 1 / -1; } @@ -41,38 +39,53 @@ Styleguide Components.DjangoCMS.Blog.App.Item /* Item (Structure) */ +/* For basic layout */ :--article-item { display: grid; + column-gap: 50px; /* for horz. space between image and content */ + border-bottom: var(--global-border-width--normal) solid var(--global-color-primary--dark); - margin-bottom: var(--blog-item-buffer); - padding-bottom: var(--blog-item-buffer); + margin-bottom: var(--article-buffer); + padding-bottom: var(--article-buffer); } +:--article-item header { grid-area: head } +:--article-item .blog-visual { grid-area: media } +:--article-item .blog-lead { grid-area: desc } -/* To have vertical layout for narrow viewports */ -@media (--narrow-and-below) { - :--article-item { +/* For layout options */ +.x-blog-grid-item { grid-template-areas: 'media' 'head' 'desc'; /* To prevent content from overflowing cell */ grid-template-columns: minmax(0, 1fr); - } + /* To prevent vertical stretch of rows */ + grid-auto-rows: min-content; } -/* To have horizontal layout for wide viewports */ -@media (--narrow-and-above) { - :--article-item { +.x-blog-list-item { grid-template-areas: 'media head' 'media desc'; - /* To have shrinkwrapped media and flexible text content */ + /* To shrinkwrap media and flexible text content */ grid-template-columns: minmax(0, max-content) 1fr; + /* To let 'desc' take remaining space (removes gap between head and desc) */ + grid-template-rows: min-content 1fr; +} +@media (--narrow-and-below) { + :--article-item { + @extend .x-blog-grid-item; + } +} +@media (--narrow-and-above) { + :--article-item--in-list { + @extend .x-blog-list-item; + } + :--article-item--in-grid { + @extend .x-blog-grid-item; } } -:--article-item header { grid-area: head } -:--article-item .blog-visual { grid-area: media } -:--article-item .blog-lead { grid-area: desc } @@ -86,114 +99,19 @@ Styleguide Components.DjangoCMS.Blog.App.Item /* Header (Structure) */ :--article-item header { - display: grid; - position: relative; /* for `position: absolute` children */ - - min-width: 0; /* to support truncation */ - - grid-template-areas: - var(--row-one-areas, 'cats tags') - 'attr attr' - 'head subh'; - - /* To truncate 'subh' fully before truncating 'head' */ - /* CAVEAT: 'cats' is truncated but 'tags' never is */ - grid-template-columns: minmax(0, max-content) 1fr; -} -:--article-item h3 { grid-area: head } -:--article-item h4 { grid-area: subh } -:--article-item .attrs { grid-area: attr } -:--article-item .categories { grid-area: cats } -:--article-item .tags { - grid-area: tags; - - /* To span top row and align right */ - justify-content: end; -} - -/* To (optionally) hide tags & categories */ -.app-blog.no-categories.no-tags :--article-item header { - grid-template-areas: - 'head subh' - 'attr attr'; - - margin-bottom: 20px; -} -.app-blog:not(.no-categories.no-tags) :--article-item header { margin-bottom: 5px; } -.app-blog.no-categories:not(.no-tags) :--article-item header { - --row-one-areas: 'tags tags'; -} -.app-blog.no-tags:not(.no-categories) :--article-item header { - --row-one-areas: 'cats cats'; -} /* Header - Title */ -:--article-item h3, -:--article-item h4 { - margin-block: unset; /* overwrite html-elements.css */ - font-size: var(--global-font-size--large); +:--article-item h3 { + margin-bottom: unset; /* overwrite Core-Styles headings--cms.css */ } -:--article-item h3 a, /* truncate a not h3 so :focus-visible is not cropped */ :--article-item h4 { - @extend %x-truncate--one-line; -} -:--article-item h4 { - text-transform: none; /* overwrite html-elements.css */ - - /* To style subtitle differently than title */ - /* CAVEAT: Font-weight change switches to font that has different alignment */ - transform: translateY(2px); /* HACK: tweak vertical alignment */ - font-weight: var(--regular); -} -:--article-item h4::before { - content: ': '; -} -:--article-item h3 a { - display: block; /* to prevent grid blowout */ - color: var(--global-color-primary--xx-dark); -} - - - -/* Header - Metadata (Structure) */ - -:--article-item .attrs, -:--article-item .tags { - display: flex; - flex-wrap: nowrap; - flex-direction: row; - gap: 2em; -} -:--article-item .tags { align-items: center } - -/* To truncate all metadata */ -:--article-item :is(.byline, .date) { - display: flex; - flex-direction: row; - flex-wrap: nowrap; - - /* To allow truncation */ - min-width: 0; - - /* To limit text to one line */ - height: 1.4em; /* ~ line-height */ - overflow: hidden; + display: none; } -:--article-item .date span, -:--article-item .byline a, -:--article-item .tags li, -:--article-item .categories li, -:--article-item .categories::before { @extend %x-truncate--one-line } - -:--article-item .tags:empty, -:--article-item .categories:empty { display: none } - -:--article-item .date { order: -1 } @@ -204,26 +122,11 @@ Styleguide Components.DjangoCMS.Blog.App.Item } :--article-item .attrs { - margin-block: 2px 6px; - - font-size: var(--global-font-size--x-small); color: var(--global-color-primary--dark); } -:--article-item .attrs a { color: inherit } - -:--article-item .categories { - font-weight: var(--bold); - font-size: var(--global-font-size--x-small); - text-transform: uppercase; -} -:--article-item .categories a { color: var(--global-color-primary--xx-dark) } - -/* NOTE: Mimicking .attrs styles until we have a design */ -:--article-item .tags { - font-size: var(--global-font-size--x-small); - color: var(--global-color-primary--dark); +:--article-item .attrs a { + color: inherit; } -:--article-item .tags a { color: inherit } @@ -231,32 +134,30 @@ Styleguide Components.DjangoCMS.Blog.App.Item /* Visual */ -:--article-item .blog-visual:not(:empty) { - /* To align any small image inside (useless with some image sizes) */ - display: grid; - align-items: center; - justify-items: center; -} :--article-item .blog-visual:empty { display: none; } -/* To support vertical layouts at narrow viewports */ +/* To support vertical article layouts */ +/* FAQ: In simple layouts, the media element is the grid cell */ +/* FAQ: In complex layouts, the media element is within the grid cell */ +.x-blog-grid-item-media-cell { + margin-bottom: 15px; /* to add space between image and content */ +} +.x-blog-grid-item-media-element-in-cell { + max-width: 100%; /* to prevent overflow if column is narrower than image */ + height: auto; /* to preserve ratio if width is reduced (by max-width: 100%) */ +} @media (--narrow-and-below) { - :--article-item .blog-visual:not(:empty) { - height: 140px; /* for consistent image height */ - margin-bottom: 15px; - } - :--article-item .blog-visual img { - max-width: 100%; /* to prevent overflow if column is narrower */ - height: auto; /* to maintain aspect ratio if width changes */ + :--article-item .blog-visual { + @extend .x-blog-grid-item-media-cell; + & img { @extend .x-blog-grid-item-media-element-in-cell; } } } -/* To support horizontal layouts at wide viewports */ @media (--narrow-and-above) { - :--article-item .blog-visual:not(:empty) { - width: 255px; /* for consistent image width */ - margin-right: 50px; + :--article-item--in-grid .blog-visual { + @extend .x-blog-grid-item-media-cell; + & img { @extend .x-blog-grid-item-media-element-in-cell; } } } @@ -268,13 +169,19 @@ Styleguide Components.DjangoCMS.Blog.App.Item :--article-item .blog-lead { @extend %x-truncate--many-lines; - --lines: 3; + --lines: 4; line-height: 1.5; color: var(--global-color-primary--dark); } :--article-item .blog-lead p:last-child { - margin-bottom: 0 /* overwrite Boostrap */ + margin-bottom: 0 /* overwrite core-styles.cms */ +} + +/* To undo inline content styles */ +/* FAQ: In case author pasted such markup from another source */ +:--article-item .blog-lead [style] { + all: revert !important; /* force undo all inline styles */ } @@ -283,23 +190,16 @@ Styleguide Components.DjangoCMS.Blog.App.Item /* Footer */ -/* If not editing, stretch "read more" atop the article */ -html:not(:--cms-edit-mode) .read-more a:hover { - --outline-offset: var(--blog-item-buffer); - @extend %x-article-link-hover; -} -html:not(:--cms-edit-mode) .read-more a:active { - @extend %x-article-link-active; -} -html:not(:--cms-edit-mode) .read-more { grid-area: 1 / 1 / -1 / -1 } -html:not(:--cms-edit-mode) .read-more { position: relative; } -html:not(:--cms-edit-mode) .read-more a { - @extend %x-article-link-stretch; - @extend %x-article-link-text; -} +/* To make image clickable via "read more" link */ +/* FAQ: This is not available via c-news, because c-news assumes + if image should be clickable, client would wrap it in a link */ +.read-more { + /* To cover the image exactly */ + display: grid; + grid-row-start: 1; + grid-column-start: 1; + grid-row-end: span 2; -/* If editing, hide "read more" */ -/* FAQ: User can: edit by double clicking abstract; visit by clicking title */ -html:--cms-edit-mode .read-more { - display: none; + /* To hide link text */ + font-size: 0; } diff --git a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.page.css b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.page.css index 4171d8e52..cda923f79 100644 --- a/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.page.css +++ b/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.page.css @@ -15,10 +15,12 @@ Styleguide Components.DjangoCMS.Blog.App.Page -/* Variables */ +/* Root */ :--article-page { - max-width: 665px; + --header-buffer: calc( var(--global-space--grid-gap) / 2 ); + + max-width: 775px; margin-inline: auto; } @@ -28,29 +30,28 @@ Styleguide Components.DjangoCMS.Blog.App.Page /* Header (Structure) */ -:--article-page .attrs { - display: flex; - justify-content: space-between; +:--article-page header { + grid-template-areas: + 'head' + 'subh' + 'cats' + 'tags' + 'attr'; } - +:--article-page header h1, :--article-page header h2 { + margin-bottom: var(--header-buffer); +} +:--article-page header h1 { font-size: var(--global-font-size--xxx-large); + + border-bottom: var(--global-border-width--normal) solid var(--global-color-primary--dark); } -:--article-page header h3 { - font-style: italic; +:--article-page header h2 { font-weight: normal; font-size: var(--global-font-size--large); } -:--article-page header :is(h3, h2 + .attrs) { - padding-top: 17px; - border-top: var(--global-border-width--normal) solid var(--global-color-primary--dark); -} - -:--article-page .date-published span { - display: none; -} - @@ -58,9 +59,19 @@ Styleguide Components.DjangoCMS.Blog.App.Page /* Media & Content */ :--article-page :is(.blog-visual, .blog-content) { - --blog-page-main-image-buffer: 45px; + --blog-item-media-buffer: 45px; - margin-block: var(--blog-page-main-image-buffer); + margin-block: var(--blog-item-media-buffer) 60px; +} + +/* To undo inline content styles */ +/* FAQ: In case author pasted such markup from another source */ +:--article-page .blog-content [style]:not( + [data-style="admin"], /* HACK: So CMS admin can override this */ + /* TODO: When using Core-Styles .c-news keep `flickrembed_` only in TACC */ + [id^="flickrembed_"] * /* HACK: So Flickr slideshow works */ +) { + all: revert !important; /* force undo all inline styles */ } @@ -77,14 +88,14 @@ Styleguide Components.DjangoCMS.Blog.App.Page :--article-page .blog-visual { display: grid; justify-content: center; - margin-bottom: var(--blog-page-main-image-buffer); + margin-bottom: var(--blog-item-media-buffer); } } /* To support horizontal layouts at wide viewports */ @media (--x-narrow-and-above) { :--article-page .blog-visual { float: left; - margin-right: var(--blog-page-main-image-buffer); + margin-right: var(--blog-item-media-buffer); } } @@ -116,15 +127,32 @@ Styleguide Components.DjangoCMS.Blog.App.Page /* Media & Content - Alignment */ +/* FAQ: The .align-... classes come from Bootstrap Picture */ +/* FAQ: The .blockquote.text-... classes come from Bootstrap Blockquote */ -:--article-page .blog-content .align-left { +/* TODO: When extending Core-Styles c-news, .blockquote... is only for TACC */ +:--article-page .blog-content .align-left, +:--article-page .blog-content .blockquote.text-left { @extend .o-offset-content--left; } -:--article-page .blog-content .align-right { +:--article-page .blog-content .align-right, +:--article-page .blog-content .blockquote.text-right { @extend .o-offset-content--right; } :--article-page .blog-content .align-center { - max-width: 100%; /* overwrite @tacc/core-styles/…/components/align.css */ + max-width: 100%; +} +:--article-page .blog-content .blockquote.text-center { + margin-inline: auto; +} + +/* To always align Bootstrap blockquote text left */ +/* FAQ: Boostrap, loaded in foundation layer, used !important */ +/* TODO: When extending Core-Styles c-news, .blockquote... is only for TACC */ +@layer foundation { + :--article-page .blog-content .blockquote[class*="text-"] { + text-align: left !important; /* overwrite Bootstrap .text-... !important */ + } } /* To remove margin on narrow screens */ diff --git a/taccsite_cms/static/site_cms/css/src/_imports/elements/figure-caption-blockquote.css b/taccsite_cms/static/site_cms/css/src/_imports/elements/figure-caption-blockquote.css new file mode 100644 index 000000000..c5129d166 --- /dev/null +++ b/taccsite_cms/static/site_cms/css/src/_imports/elements/figure-caption-blockquote.css @@ -0,0 +1,24 @@ +@import url("@tacc/core-styles/src/lib/_imports/tools/x-figure.css"); +@import url("@tacc/core-styles/src/lib/_imports/tools/x-blockquote.css"); + +/* To style elements that are or have captions */ +figure, +.embed-responsive { + @extend .x-figure; +} +figcaption, +p.caption { + @extend .x-figure-caption; +} + +blockquote { + @extend .x-blockquote; +} +blockquote footer { + @extend .x-blockquote-caption; +} + +/* To remove extra whitespace beneath embeded content */ +.embed-responsive > * { + display: block; +} diff --git a/taccsite_cms/static/site_cms/css/src/_imports/settings/font.css b/taccsite_cms/static/site_cms/css/src/_imports/settings/font.css index 6d61b0dc4..770e8e4e5 100644 --- a/taccsite_cms/static/site_cms/css/src/_imports/settings/font.css +++ b/taccsite_cms/static/site_cms/css/src/_imports/settings/font.css @@ -1,6 +1,6 @@ :root { /* FAQ: Used by TACC/Core-Styles `s-header` */ - /* FAQ: Overwritten by TACC/Core-CMS-Resource:/texascale-org `props.font` */ + /* FAQ: Overwritten by TACC/Core-CMS-Resource:/texascale_org `props.font` */ --global-font-family: var(--global-font-family--sans); /* To overwrite Boostrap */ diff --git a/taccsite_cms/static/site_cms/css/src/core-cms.css b/taccsite_cms/static/site_cms/css/src/core-cms.css index 7640bb3d7..3569351b0 100644 --- a/taccsite_cms/static/site_cms/css/src/core-cms.css +++ b/taccsite_cms/static/site_cms/css/src/core-cms.css @@ -5,9 +5,12 @@ @import url("./_imports/settings/font.css"); +@import url("./_imports/elements/figure-caption-blockquote.css"); + @import url("./_imports/components/c-button.css"); @import url("./_imports/components/django.cms.css"); @import url("./_imports/components/django-cms-forms.css"); +@import url("./_imports/components/django-cms-icon.css"); @import url("./_imports/components/django.cms.picture.css"); @import url("./_imports/components/django-cms-video.css"); @import url("./_imports/components/lightgallery.css"); diff --git a/taccsite_cms/templates/assets_core.html b/taccsite_cms/templates/assets_core.html index 3556758c5..0546517c4 100644 --- a/taccsite_cms/templates/assets_core.html +++ b/taccsite_cms/templates/assets_core.html @@ -1,5 +1,5 @@ {# SEE: ./assets_core.md #} -{% load staticfiles %} +{% load static %} {% endif %}
- {% include './tacc/layout-choice-form.html' %} + {% include './tacc/layout-choice-form.html' with list_selector='.blog-list' %} {% block content_blog %}{% endblock %}
diff --git a/taccsite_cms/templates/djangocms_blog/includes/blog_meta.html b/taccsite_cms/templates/djangocms_blog/includes/blog_meta.html index 6d1739d4e..96eb4b4c4 100644 --- a/taccsite_cms/templates/djangocms_blog/includes/blog_meta.html +++ b/taccsite_cms/templates/djangocms_blog/includes/blog_meta.html @@ -16,9 +16,13 @@ {% endif %} {# TACC (add class so CSS can target this element): #}
  • - {# /TACC #} + {# TACC (show date if published otherwise show "Unpublished"): #} + {% if post.date_published %} + {# /TACC #} {# TACC (add and   so whitespace can be stripped): #} - {% trans "Published" %}  + {# TACC ("Published" vs "To be published"): #} + {% if post.publish %}{% trans "Published" %}{% else %}{% trans "To be published" %}{% endif %}  + {# /TACC #} {# /TACC #} {# TACC (wrap with
  • {% if post.date_featured %} {# TACC (add class so CSS can target this element): #}
  • {% trans "Uncategorized" %}
  • {% endif %} {# TACC (distinguish categories and tags via class): #} {# TACC (strip whitespace): #} diff --git a/taccsite_cms/templates/djangocms_blog/post_detail.html b/taccsite_cms/templates/djangocms_blog/post_detail.html index eb1d0b279..ec20bdd66 100644 --- a/taccsite_cms/templates/djangocms_blog/post_detail.html +++ b/taccsite_cms/templates/djangocms_blog/post_detail.html @@ -15,9 +15,25 @@ {# /TACC #}
    + {# TACC (use greater heading level): #} + {# TACC (do not use large header until core-styles.cms.css): #} + {% if settings.TACC_CORE_STYLES_VERSION >= 1 %} +

    {% render_model post "title" %}

    + {% else %}

    {% render_model post "title" %}

    + {% endif %} + {# /TACC #} + {# /TACC #} {% if post.subtitle %} + {# TACC (use greater heading level): #} + {# TACC (do not use large header until core-styles.cms.css): #} + {% if settings.TACC_CORE_STYLES_VERSION >= 1 %} +

    {% render_model post "subtitle" %}

    + {% else %}

    {% render_model post "subtitle" %}

    + {% endif %} + {# /TACC #} + {# /TACC #} {% endif %} {% block blog_meta %} {% include "djangocms_blog/includes/blog_meta.html" %} diff --git a/taccsite_cms/templates/djangocms_blog/post_list.html b/taccsite_cms/templates/djangocms_blog/post_list.html index 6f4f4673a..2a4421f45 100644 --- a/taccsite_cms/templates/djangocms_blog/post_list.html +++ b/taccsite_cms/templates/djangocms_blog/post_list.html @@ -13,13 +13,29 @@
    {% block blog_title %}
    + {# TACC (use greater heading level): #} + {# TACC (do not use large header until core-styles.cms.css): #} + {% if settings.TACC_CORE_STYLES_VERSION >= 1 %} +

    + {% else %}

    + {% endif %} + {# /TACC #} + {# /TACC #} {% if author %}{% trans "Articles by" %} {{ author.get_full_name }} {% elif archive_date %}{% trans "Archive" %} – {% if month %}{{ archive_date|date:'F' }} {% endif %}{{ year }} {% elif tagged_entries %}{% trans "Tag" %} – {{ tagged_entries|capfirst }} {% elif category %}{% trans "Category" %} – {{ category }} {% else %}{% trans "News" %}{% endif %} + {# TACC (use greater heading level): #} + {# TACC (do not use large header until core-styles.cms.css): #} + {% if settings.TACC_CORE_STYLES_VERSION >= 1 %} +

    + {% else %} + {% endif %} + {# /TACC #} + {# /TACC #}
    {% endblock %} {% for post in post_list %} diff --git a/taccsite_cms/templates/djangocms_blog/tacc/layout-choice-form.html b/taccsite_cms/templates/djangocms_blog/tacc/layout-choice-form.html index 09f8781f3..5aafc5637 100644 --- a/taccsite_cms/templates/djangocms_blog/tacc/layout-choice-form.html +++ b/taccsite_cms/templates/djangocms_blog/tacc/layout-choice-form.html @@ -1,3 +1,5 @@ +{# @var list_selector #} + {# To support user changing layout of news list #} {# FAQ: The form is hidden, because styles are not complete #} {# FAQ: The script is active, so new styles can be tested on a server #} @@ -15,7 +17,9 @@ import switchLayout from '/static/site_cms/js/modules/switchLayout.js'; const form = document.getElementById('layout-choice'); - const content = document.getElementsByClassName('blog-list')[0]; + const content = document.querySelector( + '{{ list_selector|default:".blog-list" }}' + ); const formChoices = form.querySelectorAll('input[name="layout"]'); switchLayout( content, formChoices ); diff --git a/taccsite_cms/templates/guide.html b/taccsite_cms/templates/guide.html index 716a47bab..72ec294d7 100644 --- a/taccsite_cms/templates/guide.html +++ b/taccsite_cms/templates/guide.html @@ -1,5 +1,5 @@ {% extends "fullwidth.html" %} -{% load cms_tags staticfiles %} +{% load cms_tags static %} {% block assets_custom %} {{ block.super }} diff --git a/taccsite_cms/templates/guides/getting_started.tam.html b/taccsite_cms/templates/guides/getting_started.tam.html index 3fcba975d..ed4c58579 100644 --- a/taccsite_cms/templates/guides/getting_started.tam.html +++ b/taccsite_cms/templates/guides/getting_started.tam.html @@ -1,5 +1,5 @@ {% extends "guide.html" %} -{% load cms_tags staticfiles tacc_uri_shortcuts %} +{% load cms_tags static tacc_uri_shortcuts %} {% block guide %} {% site_uri as site_uri %} diff --git a/taccsite_cms/templates/guides/getting_started.v2.html b/taccsite_cms/templates/guides/getting_started.v2.html index 923552862..2f58639a7 100644 --- a/taccsite_cms/templates/guides/getting_started.v2.html +++ b/taccsite_cms/templates/guides/getting_started.v2.html @@ -1,5 +1,5 @@ {% extends "guide.html" %} -{% load cms_tags staticfiles tacc_uri_shortcuts %} +{% load cms_tags static tacc_uri_shortcuts %} {% block guide %} {% site_uri as site_uri %} diff --git a/taccsite_cms/templates/header_branding.html b/taccsite_cms/templates/header_branding.html index 17705b5e7..36b0d4c4b 100644 --- a/taccsite_cms/templates/header_branding.html +++ b/taccsite_cms/templates/header_branding.html @@ -1,5 +1,5 @@ {# @var brands, className #} -{% load staticfiles custom_portal_settings %} +{% load static custom_portal_settings %} {% with settings.BRANDING as brands %}
    diff --git a/taccsite_cms/templates/header_logo.html b/taccsite_cms/templates/header_logo.html index 706c436b6..2378df871 100644 --- a/taccsite_cms/templates/header_logo.html +++ b/taccsite_cms/templates/header_logo.html @@ -1,5 +1,5 @@ {# @var logo, className #} -{% load staticfiles custom_portal_settings %} +{% load static custom_portal_settings %} {% with settings.LOGO as logo %} {% with filename=logo|index:1 selectors=logo|index:2 targeturl=logo|index:3 targettype=logo|index:4 accessibility=logo|index:5 corstype=logo|index:6 visibility=logo|index:7 %} diff --git a/taccsite_cms/templates/home_portal.html b/taccsite_cms/templates/home_portal.html index 8ac214742..b64c40ed3 100644 --- a/taccsite_cms/templates/home_portal.html +++ b/taccsite_cms/templates/home_portal.html @@ -1,5 +1,5 @@ {% extends "fullwidth.html" %} -{% load cms_tags staticfiles %} +{% load cms_tags static %} {% block assets_custom %} {{ block.super }} diff --git a/taccsite_cms/templates/nav_search.raw.html b/taccsite_cms/templates/nav_search.raw.html index 87f9cb136..2fcfa856e 100644 --- a/taccsite_cms/templates/nav_search.raw.html +++ b/taccsite_cms/templates/nav_search.raw.html @@ -1,6 +1,6 @@ {# @var settings #} -{% load staticfiles %} +{% load static %} diff --git a/taccsite_cms/templates/snippets/typography-guide.html b/taccsite_cms/templates/snippets/typography-guide.html index b51fbfdb6..adeeadc3e 100644 --- a/taccsite_cms/templates/snippets/typography-guide.html +++ b/taccsite_cms/templates/snippets/typography-guide.html @@ -1,4 +1,4 @@ -{% load staticfiles %} +{% load static %} {% if settings.TACC_CORE_STYLES_VERSION == 0 %} diff --git a/taccsite_cms/templates/style_guide.html b/taccsite_cms/templates/style_guide.html index 7c759b18f..9bbd46c9f 100644 --- a/taccsite_cms/templates/style_guide.html +++ b/taccsite_cms/templates/style_guide.html @@ -1,5 +1,5 @@ {% extends "standard.html" %} -{% load cms_tags staticfiles %} +{% load cms_tags static %} {% block assets_custom %} {{ block.super }} diff --git a/taccsite_cms/urls.py b/taccsite_cms/urls.py index 6b22fd66a..58dfd2a0b 100755 --- a/taccsite_cms/urls.py +++ b/taccsite_cms/urls.py @@ -64,7 +64,7 @@ # http://www.ilian.io/custom-404-not-found-page-with-django-cms/ # https://stackoverflow.com/a/44519606/11817077 # https://blog.maestropublishing.com/2019/11/custom-404-page-for-django-cms.html -from django.utils.functional import curry +from functools import partial as curry from django.views.defaults import page_not_found handler404 = curry(page_not_found, template_name='404.html') diff --git a/taccsite_custom b/taccsite_custom index acf7e6466..f6ef48028 160000 --- a/taccsite_custom +++ b/taccsite_custom @@ -1 +1 @@ -Subproject commit acf7e64669b623b9be5a3703eb229a98b5c60435 +Subproject commit f6ef480281b23662737cf41c12437eac9343cdca