diff --git a/taccsite_cms/__init__.py b/taccsite_cms/__init__.py index 4027ed4d2..3d498b5fa 100755 --- a/taccsite_cms/__init__.py +++ b/taccsite_cms/__init__.py @@ -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' diff --git a/taccsite_cms/apps.py b/taccsite_cms/apps.py new file mode 100644 index 000000000..f3bdc022a --- /dev/null +++ b/taccsite_cms/apps.py @@ -0,0 +1,43 @@ +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 + + 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() + logger.info(f'Finished {action.lower()} CMS groups') + except Exception as e: + logger.error(f'Error creating CMS groups: {e}', exc_info=True) diff --git a/taccsite_cms/migrations/0001_add_groups.py b/taccsite_cms/migrations/0001_add_groups.py index 94ef39471..84159279b 100644 --- a/taccsite_cms/migrations/0001_add_groups.py +++ b/taccsite_cms/migrations/0001_add_groups.py @@ -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), ] diff --git a/taccsite_cms/models.py b/taccsite_cms/models.py new file mode 100644 index 000000000..a4ab5bd27 --- /dev/null +++ b/taccsite_cms/models.py @@ -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'