From 2bcadc0c8da80ae0bbc10d5d25b3bb5501a29ba2 Mon Sep 17 00:00:00 2001 From: Wesley B <62723358+wesleyboar@users.noreply.github.com> Date: Fri, 1 Sep 2023 15:46:12 -0500 Subject: [PATCH] feat: ecep_cms (#184) --- ecep_cms/.dockerignore | 4 + ecep_cms/Dockerfile | 7 + ecep_cms/Makefile | 39 ++++++ ecep_cms/README.md | 7 + ecep_cms/docker-compose.dev.yml | 54 ++++++++ .../src/taccsite_cms/custom_app_settings.py | 25 ++++ ecep_cms/src/taccsite_cms/settings_custom.py | 127 ++++++++++++++++++ .../taccsite_cms/templates/assets_custom.html | 22 +++ ecep_cms/src/taccsite_cms/urls_custom.py | 6 + .../src/taccsite_custom/ecep_cms/__init__.py | 0 .../ecep_cms/static/ecep_cms/css/site.css | 67 +++++++++ .../ecep_cms/img/ecep-purple-has_words.svg | 1 + .../img/ecep-purple-no_words-padded.jpeg | Bin 0 -> 62092 bytes .../ecep_cms/img/ecep-purple-no_words.svg | 1 + .../ecep_cms/img/ecep-white-has_words.svg | 1 + .../ecep_cms/img/ecep-white-no_words.svg | 1 + .../ecep_cms/static/ecep_cms/img/favicon.ico | Bin 0 -> 15086 bytes .../snippets/page-members-css-old.html | 70 ++++++++++ .../templates/snippets/page-members-css.html | 39 ++++++ .../snippets/page-members-js-old.html | 31 +++++ .../templates/snippets/page-members-js.html | 17 +++ .../ecep_cms/templates/snippets/site-css.html | 3 + 22 files changed, 522 insertions(+) create mode 100644 ecep_cms/.dockerignore create mode 100644 ecep_cms/Dockerfile create mode 100644 ecep_cms/Makefile create mode 100644 ecep_cms/README.md create mode 100644 ecep_cms/docker-compose.dev.yml create mode 100644 ecep_cms/src/taccsite_cms/custom_app_settings.py create mode 100644 ecep_cms/src/taccsite_cms/settings_custom.py create mode 100644 ecep_cms/src/taccsite_cms/templates/assets_custom.html create mode 100644 ecep_cms/src/taccsite_cms/urls_custom.py create mode 100755 ecep_cms/src/taccsite_custom/ecep_cms/__init__.py create mode 100644 ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/css/site.css create mode 100644 ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-purple-has_words.svg create mode 100644 ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-purple-no_words-padded.jpeg create mode 100644 ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-purple-no_words.svg create mode 100644 ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-white-has_words.svg create mode 100644 ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-white-no_words.svg create mode 100644 ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/favicon.ico create mode 100644 ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-css-old.html create mode 100644 ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-css.html create mode 100644 ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-js-old.html create mode 100644 ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-js.html create mode 100644 ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/site-css.html diff --git a/ecep_cms/.dockerignore b/ecep_cms/.dockerignore new file mode 100644 index 00000000..a64885d2 --- /dev/null +++ b/ecep_cms/.dockerignore @@ -0,0 +1,4 @@ +.git +.cache +**/secrets.py +**/settings_local.py diff --git a/ecep_cms/Dockerfile b/ecep_cms/Dockerfile new file mode 100644 index 00000000..c68513f4 --- /dev/null +++ b/ecep_cms/Dockerfile @@ -0,0 +1,7 @@ +# TACC/Core-CMS#v3.12.0-beta.3 +FROM taccwma/core-cms:aba079b + +WORKDIR /code + +COPY /src/taccsite_custom /code/taccsite_custom +COPY /src/taccsite_cms /code/taccsite_cms diff --git a/ecep_cms/Makefile b/ecep_cms/Makefile new file mode 100644 index 00000000..04d475d0 --- /dev/null +++ b/ecep_cms/Makefile @@ -0,0 +1,39 @@ +DOCKERHUB_REPO := $(shell cat ./docker_repo.var) +DOCKER_TAG ?= $(shell git rev-parse --short HEAD) +DOCKER_IMAGE := $(DOCKERHUB_REPO):$(DOCKER_TAG) +DOCKER_IMAGE_LATEST := $(DOCKERHUB_REPO):latest + +#### +# `DOCKER_IMAGE_BRANCH` tag is the git tag for the commit if it exists, else the branch on which the commit exists +DOCKER_IMAGE_BRANCH := $(DOCKERHUB_REPO):$(shell git describe --exact-match --tags 2> /dev/null || git symbolic-ref --short HEAD) + +#.PHONY: build +build: + docker-compose -f docker-compose.dev.yml build + +.PHONY: build-full +build-full: + docker build -t $(DOCKER_IMAGE) --target production -f Dockerfile . + docker tag $(DOCKER_IMAGE) $(DOCKER_IMAGE_BRANCH) # Note: Currently broken for branches with slashes + +.PHONY: publish +publish: + docker push $(DOCKER_IMAGE) + docker push $(DOCKER_IMAGE_BRANCH) + +.PHONY: publish-latest +publish-latest: + docker tag $(DOCKER_IMAGE) $(DOCKER_IMAGE_LATEST) + docker push $(DOCKER_IMAGE_LATEST) + +.PHONY: start +start: + docker-compose -f docker-compose.dev.yml up + +.PHONY: stop +stop: + docker-compose -f docker-compose.dev.yml down + +.PHONY: stop-full +stop-v: + docker-compose -f docker-compose.dev.yml down -v diff --git a/ecep_cms/README.md b/ecep_cms/README.md new file mode 100644 index 00000000..59a51232 --- /dev/null +++ b/ecep_cms/README.md @@ -0,0 +1,7 @@ +# Example + +An extension of the [Core CMS](https://github.com/TACC/Core-CMS) project + +## Basics + +See [Core-CMS-Custom](../README.md). diff --git a/ecep_cms/docker-compose.dev.yml b/ecep_cms/docker-compose.dev.yml new file mode 100644 index 00000000..8c16426e --- /dev/null +++ b/ecep_cms/docker-compose.dev.yml @@ -0,0 +1,54 @@ +version: "3" +services: + cms: + build: . + ports: + - 127.0.0.1:8000:8000 + command: ["python3", "manage.py", "runserver", "0.0.0.0:8000"] + container_name: core_cms + hostname: core_cms + volumes: + - ./src/taccsite_custom:/code/taccsite_custom + - ./src/taccsite_cms/custom_app_settings.py:/code/taccsite_cms/custom_app_settings.py + - ./src/taccsite_cms/urls_custom.py:/code/taccsite_cms/urls_custom.py + - ./src/taccsite_cms/settings_custom.py:/code/taccsite_cms/settings_custom.py + - ./src/taccsite_cms/settings_local.py:/code/taccsite_cms/settings_local.py + - ./src/taccsite_cms/secrets.py:/code/taccsite_cms/secrets.py + networks: + - core_cms_net + + postgres: + image: postgres:11.5 + environment: + - POSTGRES_PASSWORD=taccforever + - POSTGRES_USER=postgresadmin + - POSTGRES_DB=taccsite + - PGDATA=/var/lib/postgresql/data/taccsite + volumes: + - core_cms_postgres_data:/var/lib/postgresql/data + hostname: core_cms_postgres + container_name: core_cms_postgres + networks: + - core_cms_net + + elasticsearch: + image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0 + ulimits: + memlock: -1 + environment: + - ES_HEAP_SIZE:1g + - discovery.type=single-node + volumes: + - core_cms_es_data:/usr/share/elasticsearch/data + container_name: core_cms_elasticsearch + ports: + - 127.0.0.1:9201:9200 + networks: + - core_cms_net + +volumes: + core_cms_postgres_data: + core_cms_es_data: + +networks: + core_cms_net: diff --git a/ecep_cms/src/taccsite_cms/custom_app_settings.py b/ecep_cms/src/taccsite_cms/custom_app_settings.py new file mode 100644 index 00000000..084ea2dc --- /dev/null +++ b/ecep_cms/src/taccsite_cms/custom_app_settings.py @@ -0,0 +1,25 @@ +CUSTOM_APPS = [ + + # ... + + ######################## + # NEWS / BLOG + ######################## + + # 'filer', # already in Core + # 'easy_thumbnails', # already in Core + 'parler', + 'taggit', + 'taggit_autosuggest', + # 'meta', # already in Core + 'sortedm2m', + 'djangocms_blog', + + # REQ: 'taggit_autosuggest' requires the following is added to `urls_custom.py` + # custom_urls = [ + # # Support `taggit_autosuggest` (from `djangocms-blog`) + # url(r'^taggit_autosuggest/', include('taggit_autosuggest.urls')), + # ] +] +CUSTOM_MIDDLEWARE = [] +STATICFILES_DIRS = () diff --git a/ecep_cms/src/taccsite_cms/settings_custom.py b/ecep_cms/src/taccsite_cms/settings_custom.py new file mode 100644 index 00000000..79c12218 --- /dev/null +++ b/ecep_cms/src/taccsite_cms/settings_custom.py @@ -0,0 +1,127 @@ +# CUSTOM SETTINGS VALUES. +# TACC WMA CMS SITE: +# *.ECEP.TACC.UTEXAS.EDU + +# FAQ: Some _VARIABLES are duplicated from settings.py (but prefixed with "_") +# because current infrastructure lacks ability to reference default values + +######################## +# DJANGO CMS SETTINGS +######################## + +CMS_TEMPLATES = ( + ('standard.html', 'Standard'), + ('fullwidth.html', 'Full Width'), + + ('guide.html', 'Guide'), + ('guides/getting_started.html', 'Guide: Getting Started'), + ('guides/data_transfer.html', 'Guide: Data Transfer'), + ('guides/data_transfer.globus.html', 'Guide: Globus Data Transfer'), + ('guides/portal_technology.html', 'Guide: Portal Technology Stack') +) + +######################## +# TACC: BRANDING +######################## + +_NSF_BRANDING = [ + "nsf", + "site_cms/img/nsf-white.png", + "branding-nsf", + "https://www.nsf.gov/", + "_blank", + "NSF Logo", + "anonymous", + "True" +] + +_TACC_BRANDING = [ + "tacc", + "site_cms/img/tacc-white.png", + "branding-tacc", + "https://www.tacc.utexas.edu/", + "_blank", + "TACC Logo", + "anonymous", + "True" +] + +_UTEXAS_BRANDING = [ + "utexas", + "site_cms/img/utaustin-white.png", + "branding-utaustin", + "https://www.utexas.edu/", + "_blank", + "University of Texas at Austin Logo", + "anonymous", + "True" +] + +BRANDING = [_NSF_BRANDING, _TACC_BRANDING, _UTEXAS_BRANDING] + +######################## +# TACC: LOGOS +######################## + +LOGO = [ + "ecep", + "ecep_cms/img/ecep-white-no_words.svg", + "", + "/", + "_self", + "ECEP Logo", + "anonymous", + "True" +] + +FAVICON = { + "img_file_src": "ecep_cms/img/favicon.ico" +} + +######################## +# TACC: PORTAL +######################## + +INCLUDES_CORE_PORTAL = True +INCLUDES_PORTAL_NAV = True +INCLUDES_SEARCH_BAR = True + +######################## +# TACC: NEWS/BLOG +######################## + +# TACC settings +TACC_BLOG_SHOW_CATEGORIES = False +TACC_BLOG_SHOW_TAGS = False + +######################## +# NEWS / BLOG +######################## + +# REQ: Assumes various "NEWS / BLOG" are installed via `custom_app_settings.py` + +# Paths for alternate templates that user can choose for blog-specific plugin +# - Devs can customize core templates at `templates/djangocms_blog/`. +# - Users can choose alt. templates from `templates/djangocms_blog/plugins/*`. +# - Devs can customize alt. templates at `templates/djangocms_blog/plugins/*`. +BLOG_PLUGIN_TEMPLATE_FOLDERS = ( + ('plugins', 'Default'), + # ('plugins/alternate', 'Alternate'), +) + +# Change default values for the auto-setup of one `BlogConfig` +# SEE: https://github.com/nephila/djangocms-blog/issues/629 +BLOG_AUTO_SETUP = False # Set to False after setup (to minimize server overhead) +BLOG_AUTO_HOME_TITLE ='Home' +BLOG_AUTO_BLOG_TITLE = 'News' +BLOG_AUTO_APP_TITLE = 'News' +BLOG_AUTO_NAMESPACE = 'News' + +# Miscellaneous settings +BLOG_ENABLE_COMMENTS = False + +######################## +# TACC: CORE STYLES +######################## + +TACC_CORE_STYLES_VERSION = 0 diff --git a/ecep_cms/src/taccsite_cms/templates/assets_custom.html b/ecep_cms/src/taccsite_cms/templates/assets_custom.html new file mode 100644 index 00000000..32eebb1a --- /dev/null +++ b/ecep_cms/src/taccsite_cms/templates/assets_custom.html @@ -0,0 +1,22 @@ +{# This template overwrites the original from TACC/Core-CMS #} +{# NOTE: This should extend taccsite_cms via taccsite_custom, not overwrite #} +{# FAQ: To extend, via app template inheritance, see TACC/Core-CMS#492 #} + + + +{# COPIED FROM CORE #} +{# https://github.com/TACC/Core-CMS/blob/c8844e1/taccsite_cms/templates/assets_custom.html #} + +{% load static %} + + +{% with settings.FAVICON as favicon %} + +{% endwith %} + + + +{# NEW CODE #} + + + diff --git a/ecep_cms/src/taccsite_cms/urls_custom.py b/ecep_cms/src/taccsite_cms/urls_custom.py new file mode 100644 index 00000000..795aff92 --- /dev/null +++ b/ecep_cms/src/taccsite_cms/urls_custom.py @@ -0,0 +1,6 @@ +from django.conf.urls import include, url + +custom_urls = [ + # Support `taggit_autosuggest` (from `djangocms-blog`) + url(r'^taggit_autosuggest/', include('taggit_autosuggest.urls')), +] diff --git a/ecep_cms/src/taccsite_custom/ecep_cms/__init__.py b/ecep_cms/src/taccsite_custom/ecep_cms/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/css/site.css b/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/css/site.css new file mode 100644 index 00000000..0979eb8d --- /dev/null +++ b/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/css/site.css @@ -0,0 +1,67 @@ +/* Organize via ITCSS */ +/* SEE: https://confluence.tacc.utexas.edu/x/IAA9Cw */ + + + + + +/* SETTINGS */ + +/* https://github.com/TACC/Core-Styles/blob/v0.13.0/src/lib/_imports/settings/color.css */ +:root { + /* Accent */ + --global-color-accent--xxx-light: #DAADFF; + --global-color-accent--x-light: #A12EFF; + --global-color-accent--light: #6E00C8; + --global-color-accent--normal: #4F008F; + --global-color-accent--dark: #2F0054; + --global-color-accent--x-dark: #1E0037; + + --global-color-accent--alt: #DDC4F2; + --global-color-accent--weak: #5B00A440; + + /* Link */ + --global-color-link-on-light--normal: var(--global-color-accent--normal); + --global-color-link-on-dark--normal: var(--global-color-accent--xxx-light); +} + +/* https://github.com/TACC/Core-Styles/blob/v0.13.0/src/lib/_imports/theme.default.css */ +:root { + --header-bkgd-color: #4F008F; + --header-minor-border-color: #DAADFF; + --header-search-brdr-color: #A12EFF; + --header-search-bkgd-color: #5f00ad; +} + + + + + +/* COMPONENTS */ + +/* https://github.com/TACC/Core-CMS/blob/main/taccsite_cms/static/site_cms/css/src/_imports/components/django.cms.blog.app.item.css */ +.blog-list article .byline, +article.post-detail .byline { + display: none; +} + + + + + +/* TRUMPS */ + +/* SEE: TACC/Core-Styles/blob/main/source/_imports/trumps/s-header.css */ +.s-header .navbar-brand { + min-width: 76px; +} + + + + + +/* UNORGANIZED */ + +/* SEE: TACC/Core-Styles/blob/main/source/_imports/branding_logos.css */ +/* NOTE: This is ONLY allowed because branding was added to Footer via CMS */ +#header-branding { display: none; } diff --git a/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-purple-has_words.svg b/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-purple-has_words.svg new file mode 100644 index 00000000..76563d57 --- /dev/null +++ b/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-purple-has_words.svg @@ -0,0 +1 @@ + diff --git a/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-purple-no_words-padded.jpeg b/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-purple-no_words-padded.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..d7dbc917b943fa42b714eaf6f11a7e88ee7c076f GIT binary patch literal 62092 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 literal 0 HcmV?d00001 diff --git a/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-purple-no_words.svg b/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-purple-no_words.svg new file mode 100644 index 00000000..73ca5f5f --- /dev/null +++ b/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-purple-no_words.svg @@ -0,0 +1 @@ + diff --git a/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-white-has_words.svg b/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-white-has_words.svg new file mode 100644 index 00000000..9c672b44 --- /dev/null +++ b/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-white-has_words.svg @@ -0,0 +1 @@ + diff --git a/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-white-no_words.svg b/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-white-no_words.svg new file mode 100644 index 00000000..6b17140b --- /dev/null +++ b/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/ecep-white-no_words.svg @@ -0,0 +1 @@ + diff --git a/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/favicon.ico b/ecep_cms/src/taccsite_custom/ecep_cms/static/ecep_cms/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f0bc52b6774c70ead26b8ef6a386220d4fed4727 GIT binary patch literal 15086 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 Uuld{`g+1+#4t^iB2M_xDzw;TrO8@`> literal 0 HcmV?d00001 diff --git a/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-css-old.html b/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-css-old.html new file mode 100644 index 00000000..913c6870 --- /dev/null +++ b/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-css-old.html @@ -0,0 +1,70 @@ + + + + + +{# The {{ html }} allows DjangoCMS Snippet to pass in more markup #} +{{ html }} diff --git a/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-css.html b/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-css.html new file mode 100644 index 00000000..1ee3aec4 --- /dev/null +++ b/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-css.html @@ -0,0 +1,39 @@ + + + + + + + + + + +{# The {{ html }} allows DjangoCMS Snippet to pass in more markup #} +{{ html }} diff --git a/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-js-old.html b/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-js-old.html new file mode 100644 index 00000000..0fac9ee6 --- /dev/null +++ b/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-js-old.html @@ -0,0 +1,31 @@ + + + + +{# The {{ html }} allows DjangoCMS Snippet to pass in any JavaScript #} +{{ html }} diff --git a/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-js.html b/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-js.html new file mode 100644 index 00000000..ad7d465f --- /dev/null +++ b/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/page-members-js.html @@ -0,0 +1,17 @@ + + + + +{# The {{ html }} allows DjangoCMS Snippet to pass in any JavaScript #} +{{ html }} diff --git a/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/site-css.html b/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/site-css.html new file mode 100644 index 00000000..085c5985 --- /dev/null +++ b/ecep_cms/src/taccsite_custom/ecep_cms/templates/snippets/site-css.html @@ -0,0 +1,3 @@ +{% load static %} + +