Skip to content
7 changes: 2 additions & 5 deletions taccsite_cms/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# from django.conf import settings
#
# if settings.CONSOLE_LOG_ENABLED:
# print("--> Parsing FILE: cms-template-setup01/taccsite_cms/__init__.py")
from .apps import TaccsiteCmsConfig

# print("--> Parsing FILE: cms-template-setup01/taccsite_cms/__init__.py")
default_app_config = f'{TaccsiteCmsConfig.name}.apps.TaccsiteCmsConfig'
52 changes: 52 additions & 0 deletions taccsite_cms/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import logging
from django.apps import AppConfig
from django.db.models.signals import post_migrate

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

class TaccsiteCmsConfig(AppConfig):
name = 'taccsite_cms'
verbose_name = 'TACC CMS'

def ready(self):
post_migrate.connect(self.create_groups, sender=self)

def create_groups(self, sender, **kwargs):
from django.contrib.auth.models import Group

from .management.commands.group_perms.text_editor_basic import \
set_group_perms as add_text_editor_basic, GROUP_NAME
from .management.commands.group_perms.text_editor_advanced import \
set_group_perms as add_text_editor_advanced
from .management.commands.group_perms.media_editor_basic import \
set_group_perms as add_media_editor_basic
from .management.commands.group_perms.media_editor_advanced import \
set_group_perms as add_media_editor_advanced
from .management.commands.group_perms.grid_editor_basic import \
set_group_perms as add_grid_editor_basic
from .management.commands.group_perms.grid_editor_advanced import \
set_group_perms as add_grid_editor_advanced
from .management.commands.group_perms.style_editor_basic import \
set_group_perms as add_style_editor_basic
from .management.commands.group_perms.style_editor_advanced import \
set_group_perms as add_style_editor_advanced
from .management.commands.group_perms.snippet_user import \
set_group_perms as add_snippet_user

groups_exist = Group.objects.filter(name=GROUP_NAME).exists()
action = 'Updating' if groups_exist else 'Creating'

logger.info(f'{action} CMS groups via post_migrate signal')
try:
add_text_editor_basic()
add_text_editor_advanced()
add_media_editor_basic()
add_media_editor_advanced()
add_grid_editor_basic()
add_grid_editor_advanced()
add_style_editor_basic()
add_style_editor_advanced()
add_snippet_user()
logger.info(f'Finished {action.lower()} CMS groups')
except Exception as e:
logger.error(f'Error creating CMS groups: {e}', exc_info=True)
23 changes: 23 additions & 0 deletions taccsite_cms/management/commands/group_perms/snippet_user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
"""
To edit, move, add and delete Snippet plugins
(not snippets themselves, but "Snippet" blocks which point to a snippet)
"""

from django.contrib.auth.models import Group

from ..util import (
let_view_page_and_structure,
let_view_and_change_snippet_plugin,
let_add_and_delete_snippet_plugin,
)

GROUP_NAME = 'Snippet User'

def set_group_perms():
group, was_created = Group.objects.get_or_create(
name=GROUP_NAME
)

let_view_page_and_structure(group)
let_view_and_change_snippet_plugin(group)
let_add_and_delete_snippet_plugin(group)
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
"""
To edit, move, add and delete Style plugins
(not CSS, but "Style" block that lets editors add custom markup e.g. for Cards)
"""

from django.contrib.auth.models import Group

from ..util import (
let_view_page_and_structure,
let_view_and_change_style_plugin,
let_add_and_delete_style_plugin
)

GROUP_NAME = 'Style Editor (Basic)'

def set_group_perms():
group, was_created = Group.objects.get_or_create(
name=GROUP_NAME
)

let_view_page_and_structure(group)
let_view_and_change_style_plugin(group)
let_add_and_delete_style_plugin(group)
21 changes: 21 additions & 0 deletions taccsite_cms/management/commands/group_perms/style_editor_basic.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
"""
To edit and move Style plugins
(not CSS, but "Style" block that lets editors add custom markup e.g. for Cards)
"""

from django.contrib.auth.models import Group

from ..util import (
let_view_page_and_structure,
let_view_and_change_style_plugin
)

GROUP_NAME = 'Style Editor (Basic)'

def set_group_perms():
group, was_created = Group.objects.get_or_create(
name=GROUP_NAME
)

let_view_page_and_structure(group)
let_view_and_change_style_plugin(group)
34 changes: 34 additions & 0 deletions taccsite_cms/management/commands/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,40 @@ def let_view_and_change_plugin(group):



# Style
def let_view_and_change_style_plugin(group):
"""
Add permissions to view & change Style plugins
"""
add_perm(group, 'djangocms_style', 'style', 'Can view style')
add_perm(group, 'djangocms_style', 'style', 'Can change style')

def let_add_and_delete_style_plugin(group):
"""
Add permissions to add & delete Style plugins
"""
add_perm(group, 'djangocms_style', 'style', 'Can add style')
add_perm(group, 'djangocms_style', 'style', 'Can delete style')



# Snippet
def let_view_and_change_snippet_plugin(group):
"""
Add permissions to view & change Snippet plugins (a.k.a "pointers" / "Ptr")
"""
add_perm(group, 'djangocms_snippet', 'Snippet Ptr', 'Can view Snippet Ptr')
add_perm(group, 'djangocms_snippet', 'Snippet Ptr', 'Can change Snippet Ptr')

def let_add_and_delete_snippet_plugin(group):
"""
Add permissions to add & delete Snippet plugins (a.k.a "pointers" / "Ptr")
"""
add_perm(group, 'djangocms_snippet', 'Snippet Ptr', 'Can add Snippet Ptr')
add_perm(group, 'djangocms_snippet', 'Snippet Ptr', 'Can delete Snippet Ptr')



# Grid
def let_view_and_change_grid(group):
"""
Expand Down
39 changes: 5 additions & 34 deletions taccsite_cms/migrations/0001_add_groups.py
Original file line number Diff line number Diff line change
@@ -1,42 +1,13 @@
from django.db import migrations

def add_groups(apps, schema_editor):
from taccsite_cms.management.commands.group_perms.text_editor_basic import set_group_perms as add_text_editor_basic
from taccsite_cms.management.commands.group_perms.text_editor_advanced import set_group_perms as add_text_editor_advanced
from taccsite_cms.management.commands.group_perms.media_editor_basic import set_group_perms as add_media_editor_basic
from taccsite_cms.management.commands.group_perms.media_editor_advanced import set_group_perms as add_media_editor_advanced
from taccsite_cms.management.commands.group_perms.grid_editor_basic import set_group_perms as add_grid_editor_basic
from taccsite_cms.management.commands.group_perms.grid_editor_advanced import set_group_perms as add_grid_editor_advanced
# No-op since group creation became handled by post_migrate signal (see apps.py)

add_text_editor_basic()
add_text_editor_advanced()
add_media_editor_basic()
add_media_editor_advanced()
add_grid_editor_basic()
add_grid_editor_advanced()
# Retained for backwards-compatibility / migration history integrity

def remove_groups(apps, schema_editor):
from taccsite_cms.management.commands.group_perms.text_editor_basic import GROUP_NAME as text_editor_basic_name
from taccsite_cms.management.commands.group_perms.text_editor_advanced import GROUP_NAME as text_editor_advanced_name
from taccsite_cms.management.commands.group_perms.media_editor_basic import GROUP_NAME as media_editor_basic_name
from taccsite_cms.management.commands.group_perms.media_editor_advanced import GROUP_NAME as media_editor_advanced_name
from taccsite_cms.management.commands.group_perms.grid_editor_basic import GROUP_NAME as grid_editor_basic_name
from taccsite_cms.management.commands.group_perms.grid_editor_advanced import GROUP_NAME as grid_editor_advanced_name

Group = apps.get_model('auth', 'Group')

group_names = [
text_editor_basic_name,
text_editor_advanced_name,
media_editor_basic_name,
media_editor_advanced_name,
grid_editor_basic_name,
grid_editor_advanced_name,
]

Group.objects.filter(name__in=group_names).delete()
def noop(apps, schema_editor):
pass

class Migration(migrations.Migration):
operations = [
migrations.RunPython(add_groups, reverse_code=remove_groups),
migrations.RunPython(noop),
]
8 changes: 8 additions & 0 deletions taccsite_cms/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from django.db import models

class DummyModel(models.Model):
"""
Exists solely to trigger Django to send post_migrate signal (see apps.py)
"""
class Meta:
app_label = 'taccsite_cms'