From dd41406b112c7a6d5d2af74901f6de291b733ade Mon Sep 17 00:00:00 2001 From: Marcus Christie Date: Mon, 25 Sep 2023 13:46:32 -0400 Subject: [PATCH] AIRAVATA-3698 management command to fix up the content type id in page revision json --- .../fix_page_revision_content_type.py | 23 +++++++++++++++++ .../base/management/commands/load_cms_data.py | 5 +++- .../commands/load_cybergateway_data.py | 25 ------------------- .../commands/load_default_gateway.py | 25 ------------------- .../commands/load_hpcgateway_data.py | 25 ------------------- .../commands/load_nanoconfinement_data.py | 25 ------------------- .../base/management/commands/load_osu_data.py | 25 ------------------- .../management/commands/load_phasta_data.py | 25 ------------------- .../management/commands/load_seagrid_data.py | 25 ------------------- .../commands/load_searching_sra_data.py | 25 ------------------- .../management/commands/load_simccs_data.py | 25 ------------------- .../commands/load_simvascular_data.py | 25 ------------------- .../base/management/commands/load_siu_data.py | 25 ------------------- .../commands/load_south_dakota_data.py | 25 ------------------- .../management/commands/set_wagtail_site.py | 6 ++--- 15 files changed, 30 insertions(+), 304 deletions(-) create mode 100644 django_airavata/wagtailapps/base/management/commands/fix_page_revision_content_type.py delete mode 100644 django_airavata/wagtailapps/base/management/commands/load_cybergateway_data.py delete mode 100644 django_airavata/wagtailapps/base/management/commands/load_default_gateway.py delete mode 100644 django_airavata/wagtailapps/base/management/commands/load_hpcgateway_data.py delete mode 100644 django_airavata/wagtailapps/base/management/commands/load_nanoconfinement_data.py delete mode 100644 django_airavata/wagtailapps/base/management/commands/load_osu_data.py delete mode 100644 django_airavata/wagtailapps/base/management/commands/load_phasta_data.py delete mode 100644 django_airavata/wagtailapps/base/management/commands/load_seagrid_data.py delete mode 100644 django_airavata/wagtailapps/base/management/commands/load_searching_sra_data.py delete mode 100644 django_airavata/wagtailapps/base/management/commands/load_simccs_data.py delete mode 100644 django_airavata/wagtailapps/base/management/commands/load_simvascular_data.py delete mode 100644 django_airavata/wagtailapps/base/management/commands/load_siu_data.py delete mode 100644 django_airavata/wagtailapps/base/management/commands/load_south_dakota_data.py diff --git a/django_airavata/wagtailapps/base/management/commands/fix_page_revision_content_type.py b/django_airavata/wagtailapps/base/management/commands/fix_page_revision_content_type.py new file mode 100644 index 000000000..5cd2d9262 --- /dev/null +++ b/django_airavata/wagtailapps/base/management/commands/fix_page_revision_content_type.py @@ -0,0 +1,23 @@ + +import json + +from django.core.management.base import BaseCommand +from wagtail.core.models import PageRevision + + +class Command(BaseCommand): + help = "Fix the content_type id in the page revisions content_type which may be correct due to being imported from a different Django instance" + + def handle(self, **options): + fixed_count = 0 + for pr in PageRevision.objects.all(): + content_json = json.loads(pr.content_json) + if content_json['content_type'] != pr.page.content_type.id: + content_json['content_type'] = pr.page.content_type.id + pr.content_json = json.dumps(content_json) + pr.save() + fixed_count = fixed_count + 1 + if fixed_count > 0: + self.stdout.write( + self.style.SUCCESS(f"Successfully fixed the content type of {fixed_count} page revisions") + ) diff --git a/django_airavata/wagtailapps/base/management/commands/load_cms_data.py b/django_airavata/wagtailapps/base/management/commands/load_cms_data.py index fa8e1171c..57c63fbc8 100644 --- a/django_airavata/wagtailapps/base/management/commands/load_cms_data.py +++ b/django_airavata/wagtailapps/base/management/commands/load_cms_data.py @@ -35,5 +35,8 @@ def handle(self, **options): call_command('loaddata', fixture_file, verbosity=0) call_command('set_wagtail_site') + call_command('fix_page_revision_content_type') - print(f"{options['filename']} is loaded successfully....!") + self.stdout.write( + self.style.SUCCESS(f"{options['filename']} is loaded successfully....!") + ) diff --git a/django_airavata/wagtailapps/base/management/commands/load_cybergateway_data.py b/django_airavata/wagtailapps/base/management/commands/load_cybergateway_data.py deleted file mode 100644 index bab1d3af6..000000000 --- a/django_airavata/wagtailapps/base/management/commands/load_cybergateway_data.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - -from django.conf import settings -from django.core.management import call_command -from django.core.management.base import BaseCommand -from wagtail.core.models import Page, Site - - -class Command(BaseCommand): - def handle(self, **options): - fixtures_dir = os.path.join( - settings.BASE_DIR, 'django_airavata', 'wagtailapps', 'base', 'fixtures') - fixture_file = os.path.join(fixtures_dir, 'cybergateway.json') - - # Wagtail creates default Site and Page instances during install, but we already have - # them in the data load. Remove the auto-generated ones. - if Site.objects.filter(hostname='localhost').exists(): - Site.objects.get(hostname='localhost').delete() - if Page.objects.filter(title='Welcome to your new Wagtail site!').exists(): - Page.objects.get( - title='Welcome to your new Wagtail site!').delete() - - call_command('loaddata', fixture_file, verbosity=0) - - print("IU Cybergateway Gateway data is loaded successfully....!") diff --git a/django_airavata/wagtailapps/base/management/commands/load_default_gateway.py b/django_airavata/wagtailapps/base/management/commands/load_default_gateway.py deleted file mode 100644 index 6640f3c65..000000000 --- a/django_airavata/wagtailapps/base/management/commands/load_default_gateway.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - -from django.conf import settings -from django.core.management import call_command -from django.core.management.base import BaseCommand -from wagtail.core.models import Page, Site - - -class Command(BaseCommand): - def handle(self, **options): - fixtures_dir = os.path.join( - settings.BASE_DIR, 'django_airavata', 'wagtailapps', 'base', 'fixtures') - fixture_file = os.path.join(fixtures_dir, 'default.json') - - # Wagtail creates default Site and Page instances during install, but we already have - # them in the data load. Remove the auto-generated ones. - if Site.objects.filter(hostname='localhost').exists(): - Site.objects.get(hostname='localhost').delete() - if Page.objects.filter(title='Welcome to your new Wagtail site!').exists(): - Page.objects.get( - title='Welcome to your new Wagtail site!').delete() - - call_command('loaddata', fixture_file, verbosity=0) - - print("Default Gateway data is loaded successfully....!") diff --git a/django_airavata/wagtailapps/base/management/commands/load_hpcgateway_data.py b/django_airavata/wagtailapps/base/management/commands/load_hpcgateway_data.py deleted file mode 100644 index d9c815f16..000000000 --- a/django_airavata/wagtailapps/base/management/commands/load_hpcgateway_data.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - -from django.conf import settings -from django.core.management import call_command -from django.core.management.base import BaseCommand -from wagtail.core.models import Page, Site - - -class Command(BaseCommand): - def handle(self, **options): - fixtures_dir = os.path.join( - settings.BASE_DIR, 'django_airavata', 'wagtailapps', 'base', 'fixtures') - fixture_file = os.path.join(fixtures_dir, 'hpcgateway.json') - - # Wagtail creates default Site and Page instances during install, but we already have - # them in the data load. Remove the auto-generated ones. - if Site.objects.filter(hostname='localhost').exists(): - Site.objects.get(hostname='localhost').delete() - if Page.objects.filter(title='Welcome to your new Wagtail site!').exists(): - Page.objects.get( - title='Welcome to your new Wagtail site!').delete() - - call_command('loaddata', fixture_file, verbosity=0) - - print("HPC Gateway data is loaded successfully....!") diff --git a/django_airavata/wagtailapps/base/management/commands/load_nanoconfinement_data.py b/django_airavata/wagtailapps/base/management/commands/load_nanoconfinement_data.py deleted file mode 100644 index ee6679456..000000000 --- a/django_airavata/wagtailapps/base/management/commands/load_nanoconfinement_data.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - -from django.conf import settings -from django.core.management import call_command -from django.core.management.base import BaseCommand -from wagtail.core.models import Page, Site - - -class Command(BaseCommand): - def handle(self, **options): - fixtures_dir = os.path.join( - settings.BASE_DIR, 'django_airavata', 'wagtailapps', 'base', 'fixtures') - fixture_file = os.path.join(fixtures_dir, 'nanoconfinement.json') - - # Wagtail creates default Site and Page instances during install, but we already have - # them in the data load. Remove the auto-generated ones. - if Site.objects.filter(hostname='localhost').exists(): - Site.objects.get(hostname='localhost').delete() - if Page.objects.filter(title='Welcome to your new Wagtail site!').exists(): - Page.objects.get( - title='Welcome to your new Wagtail site!').delete() - - call_command('loaddata', fixture_file, verbosity=0) - - print("Nanoconfinement Gateway data is loaded successfully....!") diff --git a/django_airavata/wagtailapps/base/management/commands/load_osu_data.py b/django_airavata/wagtailapps/base/management/commands/load_osu_data.py deleted file mode 100644 index aaa1e0866..000000000 --- a/django_airavata/wagtailapps/base/management/commands/load_osu_data.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - -from django.conf import settings -from django.core.management import call_command -from django.core.management.base import BaseCommand -from wagtail.core.models import Page, Site - - -class Command(BaseCommand): - def handle(self, **options): - fixtures_dir = os.path.join( - settings.BASE_DIR, 'django_airavata', 'wagtailapps', 'base', 'fixtures') - fixture_file = os.path.join(fixtures_dir, 'osu.json') - - # Wagtail creates default Site and Page instances during install, but we already have - # them in the data load. Remove the auto-generated ones. - if Site.objects.filter(hostname='localhost').exists(): - Site.objects.get(hostname='localhost').delete() - if Page.objects.filter(title='Welcome to your new Wagtail site!').exists(): - Page.objects.get( - title='Welcome to your new Wagtail site!').delete() - - call_command('loaddata', fixture_file, verbosity=0) - - print("OSU(Oklahoma state University) data is loaded successfully....!") diff --git a/django_airavata/wagtailapps/base/management/commands/load_phasta_data.py b/django_airavata/wagtailapps/base/management/commands/load_phasta_data.py deleted file mode 100644 index 814e628ce..000000000 --- a/django_airavata/wagtailapps/base/management/commands/load_phasta_data.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - -from django.conf import settings -from django.core.management import call_command -from django.core.management.base import BaseCommand -from wagtail.core.models import Page, Site - - -class Command(BaseCommand): - def handle(self, **options): - fixtures_dir = os.path.join( - settings.BASE_DIR, 'django_airavata', 'wagtailapps', 'base', 'fixtures') - fixture_file = os.path.join(fixtures_dir, 'phasta.json') - - # Wagtail creates default Site and Page instances during install, but we already have - # them in the data load. Remove the auto-generated ones. - if Site.objects.filter(hostname='localhost').exists(): - Site.objects.get(hostname='localhost').delete() - if Page.objects.filter(title='Welcome to your new Wagtail site!').exists(): - Page.objects.get( - title='Welcome to your new Wagtail site!').delete() - - call_command('loaddata', fixture_file, verbosity=0) - - print("PHASTA data is loaded successfully....!") diff --git a/django_airavata/wagtailapps/base/management/commands/load_seagrid_data.py b/django_airavata/wagtailapps/base/management/commands/load_seagrid_data.py deleted file mode 100644 index 228b99dcb..000000000 --- a/django_airavata/wagtailapps/base/management/commands/load_seagrid_data.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - -from django.conf import settings -from django.core.management import call_command -from django.core.management.base import BaseCommand -from wagtail.core.models import Page, Site - - -class Command(BaseCommand): - def handle(self, **options): - fixtures_dir = os.path.join( - settings.BASE_DIR, 'django_airavata', 'wagtailapps', 'base', 'fixtures') - fixture_file = os.path.join(fixtures_dir, 'seagrid.json') - - # Wagtail creates default Site and Page instances during install, but we already have - # them in the data load. Remove the auto-generated ones. - if Site.objects.filter(hostname='localhost').exists(): - Site.objects.get(hostname='localhost').delete() - if Page.objects.filter(title='Welcome to your new Wagtail site!').exists(): - Page.objects.get( - title='Welcome to your new Wagtail site!').delete() - - call_command('loaddata', fixture_file, verbosity=0) - - print("Seagrid data is loaded successfully....!") diff --git a/django_airavata/wagtailapps/base/management/commands/load_searching_sra_data.py b/django_airavata/wagtailapps/base/management/commands/load_searching_sra_data.py deleted file mode 100644 index 109dc4a3f..000000000 --- a/django_airavata/wagtailapps/base/management/commands/load_searching_sra_data.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - -from django.conf import settings -from django.core.management import call_command -from django.core.management.base import BaseCommand -from wagtail.core.models import Page, Site - - -class Command(BaseCommand): - def handle(self, **options): - fixtures_dir = os.path.join( - settings.BASE_DIR, 'django_airavata', 'wagtailapps', 'base', 'fixtures') - fixture_file = os.path.join(fixtures_dir, 'searchingsra.json') - - # Wagtail creates default Site and Page instances during install, but we already have - # them in the data load. Remove the auto-generated ones. - if Site.objects.filter(hostname='localhost').exists(): - Site.objects.get(hostname='localhost').delete() - if Page.objects.filter(title='Welcome to your new Wagtail site!').exists(): - Page.objects.get( - title='Welcome to your new Wagtail site!').delete() - - call_command('loaddata', fixture_file, verbosity=0) - - print("Searching SRA data is loaded successfully....!") diff --git a/django_airavata/wagtailapps/base/management/commands/load_simccs_data.py b/django_airavata/wagtailapps/base/management/commands/load_simccs_data.py deleted file mode 100644 index 3973e578f..000000000 --- a/django_airavata/wagtailapps/base/management/commands/load_simccs_data.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - -from django.conf import settings -from django.core.management import call_command -from django.core.management.base import BaseCommand -from wagtail.core.models import Page, Site - - -class Command(BaseCommand): - def handle(self, **options): - fixtures_dir = os.path.join( - settings.BASE_DIR, 'django_airavata', 'wagtailapps', 'base', 'fixtures') - fixture_file = os.path.join(fixtures_dir, 'simccs.json') - - # Wagtail creates default Site and Page instances during install, but we already have - # them in the data load. Remove the auto-generated ones. - if Site.objects.filter(hostname='localhost').exists(): - Site.objects.get(hostname='localhost').delete() - if Page.objects.filter(title='Welcome to your new Wagtail site!').exists(): - Page.objects.get( - title='Welcome to your new Wagtail site!').delete() - - call_command('loaddata', fixture_file, verbosity=0) - - print("SimCCS data is loaded successfully....!") diff --git a/django_airavata/wagtailapps/base/management/commands/load_simvascular_data.py b/django_airavata/wagtailapps/base/management/commands/load_simvascular_data.py deleted file mode 100644 index 3a8bd9706..000000000 --- a/django_airavata/wagtailapps/base/management/commands/load_simvascular_data.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - -from django.conf import settings -from django.core.management import call_command -from django.core.management.base import BaseCommand -from wagtail.core.models import Page, Site - - -class Command(BaseCommand): - def handle(self, **options): - fixtures_dir = os.path.join( - settings.BASE_DIR, 'django_airavata', 'wagtailapps', 'base', 'fixtures') - fixture_file = os.path.join(fixtures_dir, 'simvascular.json') - - # Wagtail creates default Site and Page instances during install, but we already have - # them in the data load. Remove the auto-generated ones. - if Site.objects.filter(hostname='localhost').exists(): - Site.objects.get(hostname='localhost').delete() - if Page.objects.filter(title='Welcome to your new Wagtail site!').exists(): - Page.objects.get( - title='Welcome to your new Wagtail site!').delete() - - call_command('loaddata', fixture_file, verbosity=0) - - print("Simvascular data is loaded successfully....!") diff --git a/django_airavata/wagtailapps/base/management/commands/load_siu_data.py b/django_airavata/wagtailapps/base/management/commands/load_siu_data.py deleted file mode 100644 index 3a746a88f..000000000 --- a/django_airavata/wagtailapps/base/management/commands/load_siu_data.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - -from django.conf import settings -from django.core.management import call_command -from django.core.management.base import BaseCommand -from wagtail.core.models import Page, Site - - -class Command(BaseCommand): - def handle(self, **options): - fixtures_dir = os.path.join( - settings.BASE_DIR, 'django_airavata', 'wagtailapps', 'base', 'fixtures') - fixture_file = os.path.join(fixtures_dir, 'siu.json') - - # Wagtail creates default Site and Page instances during install, but we already have - # them in the data load. Remove the auto-generated ones. - if Site.objects.filter(hostname='localhost').exists(): - Site.objects.get(hostname='localhost').delete() - if Page.objects.filter(title='Welcome to your new Wagtail site!').exists(): - Page.objects.get( - title='Welcome to your new Wagtail site!').delete() - - call_command('loaddata', fixture_file, verbosity=0) - - print("SIU (Southern Illinois University) data is loaded successfully....!") diff --git a/django_airavata/wagtailapps/base/management/commands/load_south_dakota_data.py b/django_airavata/wagtailapps/base/management/commands/load_south_dakota_data.py deleted file mode 100644 index 2d4a76040..000000000 --- a/django_airavata/wagtailapps/base/management/commands/load_south_dakota_data.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - -from django.conf import settings -from django.core.management import call_command -from django.core.management.base import BaseCommand -from wagtail.core.models import Page, Site - - -class Command(BaseCommand): - def handle(self, **options): - fixtures_dir = os.path.join( - settings.BASE_DIR, 'django_airavata', 'wagtailapps', 'base', 'fixtures') - fixture_file = os.path.join(fixtures_dir, 'southdakota.json') - - # Wagtail creates default Site and Page instances during install, but we already have - # them in the data load. Remove the auto-generated ones. - if Site.objects.filter(hostname='localhost').exists(): - Site.objects.get(hostname='localhost').delete() - if Page.objects.filter(title='Welcome to your new Wagtail site!').exists(): - Page.objects.get( - title='Welcome to your new Wagtail site!').delete() - - call_command('loaddata', fixture_file, verbosity=0) - - print("South Dakota data is loaded successfully....!") diff --git a/django_airavata/wagtailapps/base/management/commands/set_wagtail_site.py b/django_airavata/wagtailapps/base/management/commands/set_wagtail_site.py index 914858b1c..079d13a3a 100644 --- a/django_airavata/wagtailapps/base/management/commands/set_wagtail_site.py +++ b/django_airavata/wagtailapps/base/management/commands/set_wagtail_site.py @@ -25,16 +25,16 @@ def handle(self, **options): if site_root is None: raise Exception("Could not find site root page!") else: - print(f"Setting root page to {site_root.title}") + self.stdout.write(f"Setting root page to {site_root.title}") Site.objects.create( hostname=hostname, is_default_site=True, site_name=settings.PORTAL_TITLE, root_page=site_root ) - print(f"Created Site object for domain {hostname}") + self.stdout.write(f"Created Site object for domain {hostname}") else: - print(f"Site object for domain {hostname} already exists") + self.stdout.write(f"Site object for domain {hostname} already exists") def find_root_airavata_page(self, pages): for page in pages: