You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2023/09/25 17:47:45 UTC

[airavata-django-portal] 01/01: AIRAVATA-3698 management command to fix up the content type id in page revision json

This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch AIRAVATA-3698-fix-page-revision-content-type
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git

commit dd41406b112c7a6d5d2af74901f6de291b733ade
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Mon Sep 25 13:46:32 2023 -0400

    AIRAVATA-3698 management command to fix up the content type id in page revision json
---
 .../commands/fix_page_revision_content_type.py     | 23 ++++++++++++++++++++
 .../base/management/commands/load_cms_data.py      |  5 ++++-
 .../management/commands/load_cybergateway_data.py  | 25 ----------------------
 .../management/commands/load_default_gateway.py    | 25 ----------------------
 .../management/commands/load_hpcgateway_data.py    | 25 ----------------------
 .../commands/load_nanoconfinement_data.py          | 25 ----------------------
 .../base/management/commands/load_osu_data.py      | 25 ----------------------
 .../base/management/commands/load_phasta_data.py   | 25 ----------------------
 .../base/management/commands/load_seagrid_data.py  | 25 ----------------------
 .../management/commands/load_searching_sra_data.py | 25 ----------------------
 .../base/management/commands/load_simccs_data.py   | 25 ----------------------
 .../management/commands/load_simvascular_data.py   | 25 ----------------------
 .../base/management/commands/load_siu_data.py      | 25 ----------------------
 .../management/commands/load_south_dakota_data.py  | 25 ----------------------
 .../base/management/commands/set_wagtail_site.py   |  6 +++---
 15 files changed, 30 insertions(+), 304 deletions(-)

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 00000000..5cd2d926
--- /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 fa8e1171..57c63fbc 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 @@ class Command(BaseCommand):
 
         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 bab1d3af..00000000
--- 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 6640f3c6..00000000
--- 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 d9c815f1..00000000
--- 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 ee667945..00000000
--- 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 aaa1e086..00000000
--- 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 814e628c..00000000
--- 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 228b99dc..00000000
--- 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 109dc4a3..00000000
--- 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 3973e578..00000000
--- 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 3a8bd970..00000000
--- 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 3a746a88..00000000
--- 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 2d4a7604..00000000
--- 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 914858b1..079d13a3 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 @@ class Command(BaseCommand):
                 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: