Skip to content
Draft
Show file tree
Hide file tree
Changes from 122 commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
4515b85
feat: template & setting for Google search
wesleyboar Oct 22, 2024
2883e49
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Oct 22, 2024
8607c90
fix: styles and fallback warning for Google Search
wesleyboar Oct 22, 2024
f3dc4dc
enhance: move sarch CSS to its own file
wesleyboar Oct 22, 2024
3947bc2
enhance: rename search stylesheet and ID
wesleyboar Oct 22, 2024
d0d5e00
refactor: move css to top of template
wesleyboar Oct 22, 2024
b74e2a0
fix: missing default GOOGLE_SEARCH_ENGINE_ID
wesleyboar Oct 22, 2024
7c93b7e
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Oct 23, 2024
f80ebc8
feat: search template is standard
wesleyboar Oct 23, 2024
5208bde
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Oct 23, 2024
9457519
feat: convert search template into a search app
wesleyboar Oct 23, 2024
16d34c3
feat(search_page): slimmer views.py
wesleyboar Oct 23, 2024
da3a73a
feat(search): create page if it does not exist
wesleyboar Oct 23, 2024
5fb5a32
fix(search): restore breadcrumbs
wesleyboar Oct 23, 2024
1fef4f8
chore(search_page): remove now-unnecessary file
wesleyboar Oct 23, 2024
e8072e6
enhance(search_page): flag page as auto-generated
wesleyboar Oct 23, 2024
3291015
enhance(search): attach apphook to manage urls
wesleyboar Oct 23, 2024
ca11f07
style(search): polish
wesleyboar Oct 24, 2024
445010c
fix(search): searchbar not using curr. search path
wesleyboar Oct 24, 2024
8d812c8
chore(search): remove cruft
wesleyboar Oct 24, 2024
3793bb9
chore(search): reduce silly complexity of tag
wesleyboar Oct 24, 2024
92e9ecf
chore(search): remove cruft 2
wesleyboar Oct 24, 2024
adf6ad2
feat(search): auto isntall and setup
wesleyboar Oct 24, 2024
d9db279
feat(search): simplify an isolate markup
wesleyboar Oct 24, 2024
fda65e5
core(search): remove cruft markup
wesleyboar Oct 24, 2024
9d88be6
chore(search): simlify utils.py
wesleyboar Oct 24, 2024
148f661
style(search): new line
wesleyboar Oct 24, 2024
7cbb96e
refactor(search): polish
wesleyboar Oct 24, 2024
f57d4e1
refactor(search): rename a function
wesleyboar Oct 24, 2024
55b84da
style(search): ending slash for example path
wesleyboar Oct 24, 2024
3ee4fe1
style(search): ending slash for example path
wesleyboar Oct 24, 2024
b4d6ac3
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Oct 25, 2024
0f16d38
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Oct 26, 2024
ba2b091
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Nov 1, 2024
959ba8e
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Nov 14, 2024
7dd0402
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Nov 14, 2024
a12a70f
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Nov 14, 2024
74230c0
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Jan 14, 2025
34be454
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Jan 17, 2025
a1a79b5
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Mar 13, 2025
448b6b3
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Mar 31, 2025
1db6303
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Jun 16, 2025
3a1e28e
fix: inaccurate text picture template name (#967)
wesleyboar Jul 21, 2025
893a434
refactor: no_link_to_image
wesleyboar Jul 22, 2025
91cc70c
docs: simplify no_link_to_image/picture.html notes
wesleyboar Jul 22, 2025
8cbb4a9
docs: clarify no_link_to_image/picture.html notes
wesleyboar Jul 22, 2025
6d7b730
docs: djangocms_picture template indentation
wesleyboar Jul 22, 2025
7f3ec21
feat: support core-styles u-image-zoom (#968)
wesleyboar Jul 25, 2025
5ec5e02
refactor!: djangocms_picture extension (#969)
wesleyboar Jul 26, 2025
478ffb5
chore(README): new line (to get new main commit)
wesleyboar Jul 26, 2025
de1eacf
Merge branch 'main' of github.com:TACC/Core-CMS
wesleyboar Jul 26, 2025
df14ad6
refactor: u-image-zoom via core-styles (#970)
wesleyboar Jul 28, 2025
461ca3e
chore: v4.36.0
wesleyboar Jul 28, 2025
5c1886c
Merge branch 'main' of github.com:TACC/Core-CMS
wesleyboar Jul 28, 2025
34acc58
fix: u-image-zoom validation (#971)
wesleyboar Jul 28, 2025
b2993c0
fix: space under span.u-image-zoom img (#972)
wesleyboar Jul 28, 2025
86f76fb
fix: v4.36.1
wesleyboar Jul 28, 2025
9d80485
feat: snippet template to redirect external article (#973)
wesleyboar Jul 29, 2025
6913b38
chore: v4.36.2
wesleyboar Jul 29, 2025
04a54de
deps: djangocms-bootstrap4 v3 (#974)
wesleyboar Aug 4, 2025
ab22440
chore: move imports to function that uses them
wesleyboar Aug 4, 2025
4b72436
feat: let custom sites overwrite app templates (#975)
wesleyboar Aug 5, 2025
69dcb55
chore: v4.36.3
wesleyboar Aug 15, 2025
6de0143
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar Aug 29, 2025
4a457ca
feat: new custom django command for devs (#728)
wesleyboar Sep 4, 2025
6661622
docs: we do not use Core-CMS-Resources
wesleyboar Sep 5, 2025
bfcca6a
feat: let client have fullwidth breadcrumbs (#985)
wesleyboar Sep 8, 2025
8904111
docs: revise note about code from 3rd-party
wesleyboar Sep 8, 2025
723c182
fix: client cannot change breadcrumb inclusion on guides (#986)
wesleyboar Sep 8, 2025
9d1cff2
fix: do not allow accidental blog install (#987)
wesleyboar Sep 12, 2025
2c6896a
feat: progressive web app & full favicon (#988) (#989)
wesleyboar Sep 13, 2025
5136026
feat: PORTAL_LOGIN_PATH (#990) (#991)
wesleyboar Sep 30, 2025
14611bf
chore: v4.36.4
wesleyboar Sep 30, 2025
8494266
fix: big error if core portal expected but absent (#993) (#994)
wesleyboar Oct 1, 2025
f8a59ca
docs: move docs/contributing to CONTRIBUTING
wesleyboar Oct 1, 2025
7b24129
chore: v4.36.5
wesleyboar Oct 1, 2025
b7a8e67
chore: poetry lock
wesleyboar Oct 1, 2025
7badb77
fix: djangocms-icon picker not showing Cortal icons (#995)
wesleyboar Oct 2, 2025
8f286c3
docs: icon picker bug
wesleyboar Oct 2, 2025
8524bb4
chore: v4.36.6
wesleyboar Oct 2, 2025
80208ac
fix: svg could display content (#997)
wesleyboar Oct 3, 2025
f1d8b3a
refactor: from portal.png to logo.svg
wesleyboar Oct 6, 2025
3797eed
Merge branch 'refactor/portal-png-to-logo-svg'
wesleyboar Oct 6, 2025
94f2356
refactor: from portal.png to logo.svg (#1001)
wesleyboar Oct 6, 2025
0a9bada
Merge branch 'stable'
wesleyboar Oct 13, 2025
0b24eb3
refactor: no need to annotate tags (#1006)
wesleyboar Oct 14, 2025
c90889a
chore: v4.35.7
wesleyboar Oct 15, 2025
36573bd
Merge branch 'stable'
wesleyboar Oct 15, 2025
c8eb94f
fix: image caption breaks alignment (old styles) (#1009)
wesleyboar Oct 16, 2025
4e9b795
feat: serve page with no header nor footer (#1012) (#1013)
wesleyboar Oct 24, 2025
594f31f
fix: serve page with no header nor footer (#1014) (#1015)
wesleyboar Oct 24, 2025
d620fee
feat: always allow CMS_TEMPLATE content.html (#1017)
wesleyboar Oct 24, 2025
445e457
refactor: DJANGOCMS plugins settings (off main) (#1019)
wesleyboar Oct 29, 2025
0dd7485
Merge branch 'stable'
wesleyboar Oct 30, 2025
339a440
chore: v4.36.10
wesleyboar Oct 30, 2025
3b52267
feat: support DjangoCMS Bootstrap4 Link/Button (#1020)
wesleyboar Nov 12, 2025
9e7b305
fix: core-styles v2.50.2 (#1021)
wesleyboar Nov 12, 2025
7eace56
chore: v4.36.11
wesleyboar Nov 12, 2025
70141ac
fix: link-wrapped img ignores box-model (#1023)
wesleyboar Nov 13, 2025
4ef206b
feat/new-email-svg (#1024)
wesleyboar Nov 13, 2025
82cbb84
fix: social media icons were giant by default (#1026)
wesleyboar Nov 13, 2025
97ccb58
refactor: simpler svg data for core logo
wesleyboar Nov 14, 2025
e6685c0
feat: logo icons inherit color & size (#1027)
wesleyboar Nov 14, 2025
f0dae34
chore v4.36.12
wesleyboar Nov 14, 2025
273bb04
feat: remove redundant social media icons - off main (#1031)
wesleyboar Nov 14, 2025
dd98597
chore v4.36.13
wesleyboar Nov 14, 2025
ef76b43
Merge branch 'stable'
wesleyboar Nov 19, 2025
a849392
chore: v4.36.14
wesleyboar Nov 19, 2025
298a6ad
deps: djangocms-tacc-remote-content 0.4.0
wesleyboar Jan 16, 2026
228e268
Revert "deps: djangocms-tacc-remote-content 0.4.0"
wesleyboar Jan 16, 2026
18e1440
merge v4.35.23 (#1078)
wesleyboar Jan 30, 2026
7fdabc4
Merge branch 'stable'
wesleyboar Jan 30, 2026
cd9e981
chore: merge v4.37.0 (#1079)
wesleyboar Jan 30, 2026
94389fd
fix: setup-cms.sh points to unprotected branch
wesleyboar Jan 30, 2026
3b51669
Merge branch 'main' of github.com:TACC/Core-CMS
wesleyboar Jan 30, 2026
9283f9e
Merge branch 'stable'
wesleyboar Jan 30, 2026
645b8b7
fix: search results style bugs
wesleyboar Feb 23, 2026
18695ab
fix: MORE search results style bugs
wesleyboar Feb 23, 2026
846e35e
fix(a11y): lighter accent color
wesleyboar Feb 23, 2026
4b07a7a
Merge branch 'main' into release/v4.36.X
wesleyboar Mar 17, 2026
ae9a6ba
fix: poetry.lock hash
wesleyboar Mar 17, 2026
67fed8b
Merge branch 'release/v4.36.X' into feat/template-and-setting-for-goo…
wesleyboar Mar 24, 2026
4f14e0e
Merge branch 'main' into feat/template-and-setting-for-google-search
wesleyboar May 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ To contribute, first read [How to Contribute][Contributing].
| `python manage.py collectstatic` | [django](https://docs.djangoproject.com/en/3.2/howto/static-files/)
| `python manage.py createsuperuser` | [django cms](https://docs.django-cms.org/en/release-3.8.x/how_to/install.html#admin-user), [django](https://docs.djangoproject.com/en/3.2/ref/django-admin/#createsuperuser)


<!-- Link Aliases -->

[Camino]: https://github.com/TACC/Camino
Expand Down
Empty file added apps/search_page/__init__.py
Empty file.
10 changes: 10 additions & 0 deletions apps/search_page/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from django.apps import AppConfig
from django.conf import settings

class SearchPageConfig(AppConfig):
name = 'apps.search_page'

def ready(self):
if settings.SEARCH_PAGE_AUTO_SETUP:
from .utils import create_page
create_page()
Comment on lines +7 to +10

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

2. Db write in appconfig.ready 🐞 Bug ☼ Reliability

SearchPageConfig.ready() calls create_page(), which performs ORM reads/writes during Django app
initialization; this can crash server startup or management commands when CMS tables aren’t
migrated/available yet. The codebase already uses post_migrate for DB bootstrapping, so this is an
inconsistent and unsafe initialization mechanism.
Agent Prompt
## Issue description
`SearchPageConfig.ready()` triggers DB work (`create_page()`) during app initialization. This runs on every process start and can fail before migrations (or when DB is unavailable), preventing startup.

## Issue Context
The repository already bootstraps DB state using `post_migrate` (see `taccsite_cms/apps.py`). The search page creation should follow the same pattern and be resilient to missing tables.

## Fix Focus Areas
- apps/search_page/apps.py[1-10]
- apps/search_page/utils.py[41-64]
- taccsite_cms/apps.py[13-24]

## Implementation notes
- Replace `ready()` DB call with `post_migrate.connect(...)` (like `taccsite_cms.apps.TaccsiteCmsConfig`).
- Guard access to `settings.SEARCH_PAGE_AUTO_SETUP` via `getattr(settings, 'SEARCH_PAGE_AUTO_SETUP', False)`.
- Ensure the handler is idempotent and wraps DB errors (e.g., `OperationalError`, `ProgrammingError`) with logging instead of crashing startup.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

11 changes: 11 additions & 0 deletions apps/search_page/cms_apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool


@apphook_pool.register
class SearchPageApphook(CMSApp):
app_name = 'apps.search_page'
name = 'SearchPage'

def get_urls(self, page=None, language=None, **kwargs):
return ['apps.search_page.urls']
152 changes: 152 additions & 0 deletions apps/search_page/static/search_page/css/google-search.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
#google-search {

&:is(#cms-content-container > *:last-child) {
margin-bottom: var(--global-space--section-gap, 60px);
}

/* SEARCH CONTAINER */

/* To remove padding from search container */
& .gsc-control-cse {
padding: unset;
}



/* TABLE OF SEARCH STATS & SORTING OPTIONS */

/* To remove border from search analytics, add gray background */
& .gsc-above-wrapper-area {
--bkgd-color: var(--global-color-primary--x-light);

background-color: var(--bkgd-color);
box-shadow: 40vw 0 var(--bkgd-color), -40vw 0 var(--bkgd-color);
border-bottom: unset;
}

& .gsc-above-wrapper-area-container {
border-bottom: unset;
}

/* To override Core-Styles tables */
& tbody > tr:first-child > :is(td, th) {
border: unset;
padding-inline: unset;
background: unset;
vertical-align: middle;
}

& .gsc-selected-option-container {
background: var(--global-color-primary--xx-light);
border: var(--global-border--normal);
}

& .gsc-result-info {
padding: unset;
font-size: var(--global-font-size--medium);
}



/* SUGGESTION PHRASE (after "Did you mean:") */

& .gs-spelling {
padding: unset;
}
& .gs-spelling a {
color: var(--global-color-accent--light);

/* to undo core-styles.base */
/* https://github.com/TACC/Core-Styles/blob/8ab89d3/src/lib/_imports/elements/links.css */
&:not([href]) {
opacity: 1;
pointer-events: auto;
}
}



/* SEARCH RESULTS */

/* (search result body text) */
& .gs-snippet {
color: var(--global-color-primary--dark);
}

/* (url under search result title) */
& .gs-webResult div.gs-visibleUrl {
color: var(--global-color-secondary--normal);
}

/* (search result titles) */
& a.gs-title:link {
color: var(--global-color-accent--light);
text-decoration: none;
text-decoration-thickness: var(--global-border-width--normal);
text-underline-offset: 0.2em;
}
& a.gs-title:link:hover {
text-decoration-line: underline;
text-decoration-style: solid;
}
& a.gs-title b {
color: currentColor;
}
& .gs-result .gs-title:not(a):hover {
/* to remove duplicate underline */
/* (fix Google's default_v6+en.css bug `.gs-result .gs-title:hover`) */
text-decoration: auto;
}

/* (push search-result description to right) */
& .gs-image-box {
margin-right: 10px;
}



/* GOOGLE PAGE NAVIGATION (at bottom) */

& .gsc-cursor-box {
display: flex;
justify-content: center;
margin-block: var(--global-space--large);
}

& .gsc-cursor-current-page {
color: var(--global-color-accent--light);
text-decoration: none;
text-decoration-thickness: var(--global-border-width--normal);
text-underline-offset: 0.2em;
}

& .gsc-cursor-current-page:hover {
text-decoration-line: underline;
text-decoration-style: solid;
}



/* GOOGLE BRANDING */

& .gcsc-find-more-on-google {
color: var(--global-color-accent--light);
text-decoration: none;
text-decoration-thickness: var(--global-border-width--normal);
text-underline-offset: 0.2em;
}
svg.gcsc-find-more-on-google-magnifier {
fill: currentColor;
}

& .gcsc-find-more-on-google:hover {
text-decoration-line: underline;
text-decoration-style: solid;
}

& .gcsc-branding-img-noclear {
vertical-align: unset;
top: 1px;
}

}
25 changes: 25 additions & 0 deletions apps/search_page/templates/search_page.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{% extends "base.html" %}
{% load static cms_tags %}

{% block css %}
{{ block.super }}
<link id="css-search" rel="stylesheet" href="{% static 'search_page/css/google-search.css' %}">
{% endblock css %}

{% block app_content %}
<div class="row">
<div class="col col-12 col-sm-12 col-md-6 col-lg-6 col-xl-6">
<h1>{% page_attribute "page_title" %}</h1>
</div>
</div>

{% if settings.GOOGLE_SEARCH_ENGINE_ID %}
<div id="google-search">
<script async src="https://cse.google.com/cse.js?cx={{ settings.GOOGLE_SEARCH_ENGINE_ID }}">
</script>
<div class="gcse-searchresults-only"></div>
</div>
{% else %}
<p class="c-message c-message--scope-section c-message--type-warning">Please inform your website administrator to verify a <code>GOOGLE_SEARCH_ENGINE_ID</code> is set for this website.</p>
{% endif %}
{% endblock app_content %}
8 changes: 8 additions & 0 deletions apps/search_page/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from django.urls import path
from . import views

app_name = 'apps.search_page'

urlpatterns = [
path('', views.SearchPageView, name='search'),
]
64 changes: 64 additions & 0 deletions apps/search_page/utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import logging

from django.conf import settings
from django.urls import reverse, NoReverseMatch

from cms.api import create_page as create_cms_page
from cms.models.pagemodel import Page

from .cms_apps import SearchPageApphook


logger = logging.getLogger(f'portal.{__name__}')

TITLE = 'Search'
REVERSE_ID = 'search_page'
DEFAULT_SLUG = settings.PORTAL_SEARCH_PATH.strip('/')

def get_page():
try:
return Page.objects.filter(reverse_id=REVERSE_ID).first()
except Page.DoesNotExist:
return None

def get_slug(page=None):
if page:
return page.get_slug()
else:
page = get_page()
return get_slug(page) if page else DEFAULT_SLUG

def get_page_url():
page = get_page()
if page:
return page.get_absolute_url()
else:
try:
return reverse('apps.search_page:search')
except NoReverseMatch:
return None

def create_page():
page = get_page()
slug = get_slug(page)

if not page:
page = create_cms_page(
title=f'{TITLE} (Auto-Generated)',
menu_title=TITLE,
page_title=TITLE,
reverse_id=REVERSE_ID,
# Use a template from CMS_TEMPLATES setting
template='standard.html',
language='en',
published=True,
slug=slug,
in_navigation=False,
apphook=SearchPageApphook,
apphook_namespace=SearchPageApphook.name,
)
logger.info(f'Created search page "{TITLE}" at "{slug}"')
else:
logger.info(f'Found existing search page at "{slug}"')

return page
4 changes: 4 additions & 0 deletions apps/search_page/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from django.shortcuts import render

def SearchPageView(request):
return render(request, 'search_page.html')
16 changes: 6 additions & 10 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 1 addition & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,7 @@ djangocms-admin-style = "~3.2.6"
djangocms-apphook-setup = "0.4.1"
djangocms-attributes-field = "2.1.0"
djangocms-blog = "2.0.3"
# TO get a commit in main (since v3.0.1) to fix Container error
# https://github.com/django-cms/djangocms-bootstrap4/pull/164
djangocms-bootstrap4 = {git = "https://github.com/django-cms/djangocms-bootstrap4.git", rev = "49983f4"}
djangocms-bootstrap4 = "^3.0"
djangocms-column = "^2.0"
djangocms-file = "3.0.0"
djangocms-forms-maintained = { git = "https://github.com/TACC/djangocms-forms", rev = "6b59ff366495915f06f4d6fac01a2f0aa9efecaf" }
Expand Down
4 changes: 3 additions & 1 deletion taccsite_cms/_settings/djangocms_plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@
('center', _('Align center')),
]
DJANGOCMS_PICTURE_TEMPLATES = [
('no_link_to_ext_image', _('Do not link to external image')),
('no_link_to_ext_image', _('Do not link to "External image"')),
('zoom_effect', _('Zoom image on hover')),
('zoom_effect_no_link_to_ext_image', _('Zoom image on hover & Do not link to "External image"')),
]

########################
Expand Down
8 changes: 6 additions & 2 deletions taccsite_cms/_settings/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,19 @@
########################

# To support any search
PORTAL_SEARCH_PATH = '/search'
PORTAL_SEARCH_PATH = '/search/'

# To support Google search
# PORTAL_SEARCH_QUERY_PARAM_NAME = 'q'
# PORTAL_SEARCH_INDEX_IS_AUTOMATIC = False
GOOGLE_SEARCH_ENGINE_ID = ''

# (DEPRECATED) To support Elasticsearch
PORTAL_SEARCH_QUERY_PARAM_NAME = 'query_string'
PORTAL_SEARCH_INDEX_IS_AUTOMATIC = True

SEARCH_PAGE_AUTO_SETUP = True

ES_AUTH = 'username:password'
ES_HOSTS = 'http://elasticsearch:9200'
ES_INDEX_PREFIX = 'cms-dev-{}'
Expand All @@ -34,5 +37,6 @@
ALDRYN_SEARCH_REGISTER_APPHOOK = True

_INSTALLED_APPS = [
'haystack', # search index
'haystack', # ElasticSearch
# 'search_page' # Google Search
]
3 changes: 3 additions & 0 deletions taccsite_cms/apps.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import logging

from django.apps import AppConfig
from django.db.models.signals import post_migrate

from .djangocms_picture.extend import extendPicturePlugin
from .djangocms_bootstrap4.contrib.bootstrap4_link.extend import extendBootstrap4LinkPlugin
from .djangocms_blog.extend import extendBlogFeaturedPostsPlugin, extendBlogFeaturedPostsPluginCached
from .djangocms_blog.patch import patchBlog
Expand All @@ -14,6 +16,7 @@ class TaccsiteCmsConfig(AppConfig):

def ready(self):
post_migrate.connect(self.create_groups, sender=self)
extendPicturePlugin()
extendBootstrap4LinkPlugin()
extendBlogFeaturedPostsPlugin()
extendBlogFeaturedPostsPluginCached()
Expand Down
Loading