From a2109beecc8d63abbb0d89576081fe9cb837e166 Mon Sep 17 00:00:00 2001 From: Wesley B <62723358+wesleyboar@users.noreply.github.com> Date: Tue, 13 Feb 2024 09:52:11 -0600 Subject: [PATCH] chore: settings cleanup & match Core-CMS (#273) * style: consistent settings headers * style: consistent settings headers (cont) * style: settings headers & location match core * chore(ecep): no _ settings * chore(netsage): no _ nor unnecessary settings * chore(tapis): no _ settings, add ldap setting * chore(tapis): delete unused favicon * chore(example): comment out CMS_TEMPLATES These settings can use Core's. Only enable what should be changed. * chore(ecep): remove unused templates * chore(demdata): remove branding (css hides it) The original, fast solution was to hide it with CSS. Just setting BRANDING to False should have the same effect. * style(apcd): add missing newline at end of file --- a2cps_cms/src/taccsite_cms/settings_custom.py | 5 +- apcd-cms/src/taccsite_cms/settings_custom.py | 8 +-- .../src/taccsite_cms/settings_custom.py | 63 ++++-------------- .../src/taccsite_cms/custom_app_settings.py | 2 +- ecep_cms/src/taccsite_cms/settings_custom.py | 56 +++++++--------- .../src/taccsite_cms/settings_custom.py | 17 +++-- .../src/taccsite_cms/settings_custom.py | 6 +- .../src/taccsite_cms/settings_custom.py | 42 +++--------- .../src/taccsite_cms/settings_custom.py | 31 +++++---- .../tapisproject_cms/img/favicons/favicon.ico | Bin 34494 -> 0 bytes 10 files changed, 80 insertions(+), 150 deletions(-) delete mode 100644 tapisproject_cms/src/taccsite_custom/tapisproject_cms/static/tapisproject_cms/img/favicons/favicon.ico diff --git a/a2cps_cms/src/taccsite_cms/settings_custom.py b/a2cps_cms/src/taccsite_cms/settings_custom.py index fa49985b..ad65510d 100644 --- a/a2cps_cms/src/taccsite_cms/settings_custom.py +++ b/a2cps_cms/src/taccsite_cms/settings_custom.py @@ -2,9 +2,8 @@ # TACC WMA CMS SITE: # *.A2CPS.TACC.UTEXAS.EDU - ######################## -# DJANGO CMS SETTINGS +# DJANGO_CMS ######################## CMS_TEMPLATES = ( @@ -20,7 +19,7 @@ ) ######################## -# TACC: LOGOS +# TACC: LOGO & FAVICON ######################## LOGO = [ diff --git a/apcd-cms/src/taccsite_cms/settings_custom.py b/apcd-cms/src/taccsite_cms/settings_custom.py index 92e736e6..9ccb2082 100644 --- a/apcd-cms/src/taccsite_cms/settings_custom.py +++ b/apcd-cms/src/taccsite_cms/settings_custom.py @@ -3,7 +3,7 @@ # *.APCD.TACC.UTEXAS.EDU ######################## -# DJANGO (EMAIL) +# DJANGO: EMAIL ######################## # Set on server, NOT here @@ -13,7 +13,7 @@ # DEFAULT_FROM_EMAIL = "..." ######################## -# DJANGO CMS SETTINGS +# DJANGO_CMS ######################## CMS_TEMPLATES = ( @@ -27,7 +27,7 @@ ) ######################## -# TACC: LOGOS +# TACC: LOGO & FAVICON ######################## LOGO = [ @@ -43,4 +43,4 @@ FAVICON = { "img_file_src": "apcd-cms/img/favicons/favicon.ico" -} \ No newline at end of file +} diff --git a/demdata_cms/src/taccsite_cms/settings_custom.py b/demdata_cms/src/taccsite_cms/settings_custom.py index 5ead7035..cce3d602 100644 --- a/demdata_cms/src/taccsite_cms/settings_custom.py +++ b/demdata_cms/src/taccsite_cms/settings_custom.py @@ -1,24 +1,15 @@ # CUSTOM SETTINGS VALUES. # TACC WMA CMS SITE: # *.DEMOCTRATIZING-SITE.TACC.UTEXAS.EDU -# https://democratizingdata.ai/ ######################## -# TACC: PORTAL -######################## - -# Does this CMS site have a portal (default value: True)? -INCLUDES_CORE_PORTAL = False -INCLUDES_PORTAL_NAV = False -INCLUDES_SEARCH_BAR = False - -######################## -# DJANGO CMS SETTINGS +# DJANGO_CMS ######################## CMS_TEMPLATES = ( ('standard.html', 'Standard'), ('fullwidth.html', 'Full Width'), + ('demdata_cms/templates/standard.html', 'Standard (with CSS from TUP)'), ('demdata_cms/templates/fullwidth.html', 'Full Width (with CSS from TUP)'), ('demdata-cms/templates/standard.html', 'DEPRECATED Standard (with CSS from TUP)'), @@ -29,48 +20,10 @@ # TACC: BRANDING ######################## -# LOOK INTO THIS SOLUTION. -# from taccsite_cms.settings import TACC_BRANDING, UTEXAS_BRANDING, NSF_BRANDING - -TACC_BRANDING = [ - "tacc", - "site_cms/img/org_logos/tacc-white.png", - "branding-tacc", - "https://www.tacc.utexas.edu/", - "_blank", - "TACC Logo", - "anonymous", - "True" -] - -UTEXAS_BRANDING = [ - "utexas", - "site_cms/img/org_logos/utaustin-white.png", - "branding-utaustin", - "https://www.utexas.edu/", - "_blank", - "University of Texas at Austin Logo", - "anonymous", - "True" -] - -# NSF_BRANDING = [ -# "nsf", -# "site_cms/img/org_logos/nsf-white.png", -# "branding-nsf", -# "https://www.nsf.gov/", -# "_blank", -# "NSF Logo", -# "anonymous", -# "True" -# ] - -# BRANDING = [ TACC_BRANDING, UTEXAS_BRANDING, NSF_BRANDING ] -BRANDING = [ TACC_BRANDING, UTEXAS_BRANDING ] # this matches prod 2022 -# BRANDING = [] # prod 2022 hides bar via snippet CSS but should also do this +BRANDING = False ######################## -# TACC: LOGOS +# TACC: LOGO & FAVICON ######################## LOGO = [ @@ -88,6 +41,14 @@ "img_file_src": "demdata_cms/img/favicons/Favicon_64x64.svg" } +######################## +# TACC: PORTAL +######################## + +INCLUDES_CORE_PORTAL = False +INCLUDES_PORTAL_NAV = False +INCLUDES_SEARCH_BAR = False + ######################## # TACC: CORE STYLES ######################## diff --git a/ecep_cms/src/taccsite_cms/custom_app_settings.py b/ecep_cms/src/taccsite_cms/custom_app_settings.py index 084ea2dc..c831a4cf 100644 --- a/ecep_cms/src/taccsite_cms/custom_app_settings.py +++ b/ecep_cms/src/taccsite_cms/custom_app_settings.py @@ -3,7 +3,7 @@ # ... ######################## - # NEWS / BLOG + # DJANGOCMS_BLOG ######################## # 'filer', # already in Core diff --git a/ecep_cms/src/taccsite_cms/settings_custom.py b/ecep_cms/src/taccsite_cms/settings_custom.py index 259ad69f..261c7ae8 100644 --- a/ecep_cms/src/taccsite_cms/settings_custom.py +++ b/ecep_cms/src/taccsite_cms/settings_custom.py @@ -2,29 +2,30 @@ # 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 +# DJANGO_CMS ######################## 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: SEARCH +######################## + +# Support Google search instead of Portal's Elasticsearch +SEARCH_PATH = '/site-search' # cuz Portal Nginx config hijacks /search +SEARCH_QUERY_PARAM_NAME = 'q' # as Google expects + ######################## # TACC: BRANDING ######################## -_NSF_BRANDING = [ +# NOTE: Variables NSF_BRANDING, TACC_BRANDING, and UTEXAS_BRANDING are duplicated from Core-CMS cuz current infrastructure lacks ability to reference default values. + +NSF_BRANDING = [ "nsf", "site_cms/img/nsf-white.png", "branding-nsf", @@ -35,7 +36,7 @@ "True" ] -_TACC_BRANDING = [ +TACC_BRANDING = [ "tacc", "site_cms/img/tacc-white.png", "branding-tacc", @@ -46,7 +47,7 @@ "True" ] -_UTEXAS_BRANDING = [ +UTEXAS_BRANDING = [ "utexas", "site_cms/img/utaustin-white.png", "branding-utaustin", @@ -57,10 +58,10 @@ "True" ] -BRANDING = [_NSF_BRANDING, _TACC_BRANDING, _UTEXAS_BRANDING] +BRANDING = [ NSF_BRANDING, TACC_BRANDING, UTEXAS_BRANDING ] ######################## -# TACC: LOGOS +# TACC: LOGO & FAVICON ######################## LOGO = [ @@ -78,14 +79,6 @@ "img_file_src": "ecep_cms/img/favicon.ico" } -######################## -# TACC: SEARCH -######################## - -# Support Google search instead of Portal's Elasticsearch -SEARCH_PATH = '/site-search' # cuz Portal Nginx config hijacks /search -SEARCH_QUERY_PARAM_NAME = 'q' # as Google expects - ######################## # TACC: PORTAL ######################## @@ -95,15 +88,7 @@ INCLUDES_SEARCH_BAR = True ######################## -# TACC: NEWS/BLOG -######################## - -# TACC settings -TACC_BLOG_SHOW_CATEGORIES = False -TACC_BLOG_SHOW_TAGS = False - -######################## -# NEWS / BLOG +# DJANGOCMS_BLOG ######################## # REQ: Assumes various "NEWS / BLOG" are installed via `custom_app_settings.py` @@ -128,6 +113,13 @@ # Miscellaneous settings BLOG_ENABLE_COMMENTS = False +######################## +# DJANGOCMS_BLOG: TACC +######################## + +TACC_BLOG_SHOW_CATEGORIES = False +TACC_BLOG_SHOW_TAGS = False + ######################## # TACC: CORE STYLES ######################## diff --git a/example_cms/src/taccsite_cms/settings_custom.py b/example_cms/src/taccsite_cms/settings_custom.py index 9154b792..2f424b2c 100644 --- a/example_cms/src/taccsite_cms/settings_custom.py +++ b/example_cms/src/taccsite_cms/settings_custom.py @@ -3,7 +3,7 @@ # *.PROJECT_DOMAIN.TACC.UTEXAS.EDU ######################## -# DJANGO (EMAIL) +# DJANGO: EMAIL ######################## # Set on server, NOT here @@ -13,13 +13,16 @@ # DEFAULT_FROM_EMAIL = "..." ######################## -# DJANGO CMS SETTINGS +# DJANGO_CMS ######################## -CMS_TEMPLATES = ( - ('standard.html', 'Standard'), - ('fullwidth.html', 'Full Width'), -) +# CMS_TEMPLATES = ( +# ('standard.html', 'Standard'), +# ('fullwidth.html', 'Full Width'), + +# ('guide.html', 'Guide'), +# ('guides/portal_technology.html', 'Guide: Portal Technology Stack'), +# } ######################## # TACC: BRANDING @@ -41,7 +44,7 @@ # BRANDING = [ TACC_BRANDING, UTEXAS_BRANDING, NSF_BRANDING, _CUSTOM_BRANDING ] ######################## -# TACC: LOGOS +# TACC: LOGO & FAVICON ######################## LOGO = [ diff --git a/matcssi_cms/src/taccsite_cms/settings_custom.py b/matcssi_cms/src/taccsite_cms/settings_custom.py index 2126dc4b..dce03a14 100644 --- a/matcssi_cms/src/taccsite_cms/settings_custom.py +++ b/matcssi_cms/src/taccsite_cms/settings_custom.py @@ -3,7 +3,7 @@ # *.MISE.TACC.UTEXAS.EDU ######################## -# DJANGO (EMAIL) +# DJANGO: EMAIL ######################## # Set on server, NOT here @@ -13,7 +13,7 @@ # DEFAULT_FROM_EMAIL = "..." ######################## -# TACC: LOGOS +# TACC: LOGO & FAVICON ######################## LOGO = [ @@ -29,4 +29,4 @@ FAVICON = { "img_file_src": "matcssi_cms/img/favicons/favicon.ico" -} \ No newline at end of file +} diff --git a/netsage_cms/src/taccsite_cms/settings_custom.py b/netsage_cms/src/taccsite_cms/settings_custom.py index a5b0f89b..a086cd39 100644 --- a/netsage_cms/src/taccsite_cms/settings_custom.py +++ b/netsage_cms/src/taccsite_cms/settings_custom.py @@ -1,37 +1,14 @@ # CUSTOM SETTINGS VALUES. -# TACC WMA CMS SITE: +# TACC WMA (SAD) CMS SITE: # *.NETSAGE.TACC.UTEXAS.EDU -######################## -# DJANGO (EMAIL) -######################## - -# Set on server, NOT here -# https://tacc-main.atlassian.net/wiki/x/ZhVv -# EMAIL_BACKEND = "..." -# EMAIL_HOST = "..." -# DEFAULT_FROM_EMAIL = "..." - -######################## -# DJANGO CMS SETTINGS -######################## - -CMS_TEMPLATES = ( - ('standard.html', 'Standard'), - ('fullwidth.html', 'Full Width'), - - ('guide.html', 'Guide'), - ('guides/getting_started.tam.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 = [ +# NOTE: Variables NSF_BRANDING, TACC_BRANDING, and UTEXAS_BRANDING are duplicated from Core-CMS cuz current infrastructure lacks ability to reference default values. + +NSF_BRANDING = [ "nsf", "site_cms/img/org_logos/nsf-white.png", "branding-nsf", @@ -42,7 +19,7 @@ "True" ] -_TACC_BRANDING = [ +TACC_BRANDING = [ "tacc", "site_cms/img/org_logos/tacc-white.png", "branding-tacc", @@ -53,7 +30,7 @@ "True" ] -_UTEXAS_BRANDING = [ +UTEXAS_BRANDING = [ "utexas", "site_cms/img/org_logos/utaustin-white.png", "branding-utaustin", @@ -64,13 +41,13 @@ "True" ] -BRANDING = [_NSF_BRANDING, _TACC_BRANDING, _UTEXAS_BRANDING] +BRANDING = [ NSF_BRANDING, TACC_BRANDING, UTEXAS_BRANDING ] ######################## -# TACC: LOGOS +# TACC: LOGO & FAVICON ######################## -LOGO = [ +LOGO = [ "netsage", "netsage_cms/img/org_logos/netsage_logo_color.png", "", @@ -89,7 +66,6 @@ # TACC: PORTAL ######################## -# Does this CMS site have a portal? INCLUDES_CORE_PORTAL = False INCLUDES_PORTAL_NAV = False INCLUDES_SEARCH_BAR = False diff --git a/tapisproject_cms/src/taccsite_cms/settings_custom.py b/tapisproject_cms/src/taccsite_cms/settings_custom.py index 92869456..7ac9db08 100644 --- a/tapisproject_cms/src/taccsite_cms/settings_custom.py +++ b/tapisproject_cms/src/taccsite_cms/settings_custom.py @@ -1,15 +1,20 @@ # CUSTOM SETTINGS VALUES. -# TACC WMA CMS SITE: -# *.TAPIS-PROJECT.ORG +# TACC WMA (SAD) CMS SITE: +# *.TAPISPROJECT.TACC.UTEXAS.EDU -# FAQ: Some _VARIABLES are duplicated from settings.py (but prefixed with "_") -# because current infrastructure lacks ability to reference default values +######################## +# DJANGO: AUTH +######################## + +AUTH_LDAP_SERVER_URI = "ldap://cluster.ldap.tacc.utexas.edu" ######################## # TACC: BRANDING ######################## -_NSF_BRANDING = [ +# NOTE: Variables NSF_BRANDING, TACC_BRANDING, and UTEXAS_BRANDING are duplicated from Core-CMS cuz current infrastructure lacks ability to reference default values. + +NSF_BRANDING = [ "nsf", "site_cms/img/org_logos/nsf-white.png", "branding-nsf", @@ -20,7 +25,7 @@ "True" ] -_TACC_BRANDING = [ +TACC_BRANDING = [ "tacc", "site_cms/img/org_logos/tacc-white.png", "branding-tacc", @@ -31,7 +36,7 @@ "True" ] -_UTEXAS_BRANDING = [ +UTEXAS_BRANDING = [ "utexas", "site_cms/img/org_logos/utaustin-white.png", "branding-utaustin", @@ -53,13 +58,13 @@ "True" ] -BRANDING = [ _NSF_BRANDING, _TACC_BRANDING, _UTEXAS_BRANDING, UHAWAII_BRANDING ] +BRANDING = [ NSF_BRANDING, TACC_BRANDING, UTEXAS_BRANDING, UHAWAII_BRANDING ] ######################## -# TACC: LOGOS +# TACC: LOGO & FAVICON ######################## -LOGO = [ +LOGO = [ "tapis", "tapisproject_cms/img/org_logos/tapis-logo-navbar.png", "", @@ -81,9 +86,3 @@ INCLUDES_CORE_PORTAL = False INCLUDES_PORTAL_NAV = False INCLUDES_SEARCH_BAR = False - -######################## -# TACC: GOOGLE ANALYTICS -######################## - -GOOGLE_ANALYTICS_PROPERTY_ID = "G-5EQ8Y25ZTM" diff --git a/tapisproject_cms/src/taccsite_custom/tapisproject_cms/static/tapisproject_cms/img/favicons/favicon.ico b/tapisproject_cms/src/taccsite_custom/tapisproject_cms/static/tapisproject_cms/img/favicons/favicon.ico deleted file mode 100644 index 533966ed9f6346e9428e7b34ca693b5dab0a6966..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34494 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 W4Dx@^7z1z5SmxsaPGA3z5%^ys-eMU5