This is an automated email from the ASF dual-hosted git repository. yasith pushed a commit to branch feat/sdk-facade-migration in repository https://gitbox.apache.org/repos/asf/airavata-portals.git
commit ac8c2cd07d91e3181f267b388732574a5e723fd1 Author: yasithdev <[email protected]> AuthorDate: Wed Apr 8 00:32:02 2026 -0500 refactor: Django 3.2 -> 5.1, Wagtail 2.x -> 6.x namespace migration - DEFAULT_AUTO_FIELD: AutoField -> BigAutoField - django.conf.urls.include -> django.urls.include - wagtail.core.* -> wagtail.* (blocks, fields, models, hooks) - wagtail.admin.edit_handlers -> wagtail.admin.panels - StreamFieldPanel/ImageChooserPanel/PageChooserPanel -> FieldPanel - Add use_json_field=True to all StreamField declarations --- .../django_airavata/apps/auth/urls.py | 3 +- .../django_airavata/dynamic_apps/urls.py | 3 +- airavata-django-portal/django_airavata/settings.py | 2 +- airavata-django-portal/django_airavata/urls.py | 21 +----- .../django_airavata/wagtailapps/base/blocks.py | 2 +- .../commands/fix_page_revision_content_type.py | 2 +- .../base/management/commands/load_cms_data.py | 2 +- .../base/management/commands/set_wagtail_site.py | 2 +- .../django_airavata/wagtailapps/base/models.py | 77 ++++++++++++---------- .../base/templatetags/navigation_tags.py | 2 +- .../base/tests/management/test_set_wagtail_site.py | 2 +- .../wagtailapps/base/wagtail_hooks.py | 2 +- 12 files changed, 54 insertions(+), 66 deletions(-) diff --git a/airavata-django-portal/django_airavata/apps/auth/urls.py b/airavata-django-portal/django_airavata/apps/auth/urls.py index a76227189..1e2845e4e 100644 --- a/airavata-django-portal/django_airavata/apps/auth/urls.py +++ b/airavata-django-portal/django_airavata/apps/auth/urls.py @@ -1,6 +1,5 @@ -from django.conf.urls import include -from django.urls import path, re_path +from django.urls import include, path, re_path from rest_framework import routers from . import views diff --git a/airavata-django-portal/django_airavata/dynamic_apps/urls.py b/airavata-django-portal/django_airavata/dynamic_apps/urls.py index 915b1eb4c..03630541e 100644 --- a/airavata-django-portal/django_airavata/dynamic_apps/urls.py +++ b/airavata-django-portal/django_airavata/dynamic_apps/urls.py @@ -1,6 +1,5 @@ from django_airavata.dynamic_apps import CUSTOM_DJANGO_APPS -from django.conf.urls import include -from django.urls import path +from django.urls import include, path urlpatterns = [] for custom_django_app in CUSTOM_DJANGO_APPS: diff --git a/airavata-django-portal/django_airavata/settings.py b/airavata-django-portal/django_airavata/settings.py index 68cc93e8a..b4caa1635 100644 --- a/airavata-django-portal/django_airavata/settings.py +++ b/airavata-django-portal/django_airavata/settings.py @@ -137,7 +137,7 @@ DATABASES = { } } -DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' # Password validation diff --git a/airavata-django-portal/django_airavata/urls.py b/airavata-django-portal/django_airavata/urls.py index 9989e3b33..c13d362b0 100644 --- a/airavata-django-portal/django_airavata/urls.py +++ b/airavata-django-portal/django_airavata/urls.py @@ -1,25 +1,10 @@ -"""django_airavata_gateway URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/1.10/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.conf.urls import url, include - 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) -""" +"""django_airavata_gateway URL Configuration.""" from django.conf import settings -from django.conf.urls import include from django.conf.urls.static import static from django.contrib import admin -from django.urls import path, re_path +from django.urls import include, path, re_path from wagtail.admin import urls as wagtailadmin_urls -from wagtail.core import urls as wagtail_urls +from wagtail import urls as wagtail_urls from wagtail.documents import urls as wagtaildocs_urls from . import views diff --git a/airavata-django-portal/django_airavata/wagtailapps/base/blocks.py b/airavata-django-portal/django_airavata/wagtailapps/base/blocks.py index fe2519654..f3cad89c6 100644 --- a/airavata-django-portal/django_airavata/wagtailapps/base/blocks.py +++ b/airavata-django-portal/django_airavata/wagtailapps/base/blocks.py @@ -1,4 +1,4 @@ -from wagtail.core.blocks import ( +from wagtail.blocks import ( BooleanBlock, CharBlock, ChoiceBlock, diff --git a/airavata-django-portal/django_airavata/wagtailapps/base/management/commands/fix_page_revision_content_type.py b/airavata-django-portal/django_airavata/wagtailapps/base/management/commands/fix_page_revision_content_type.py index 5cd2d9262..3a47aafb3 100644 --- a/airavata-django-portal/django_airavata/wagtailapps/base/management/commands/fix_page_revision_content_type.py +++ b/airavata-django-portal/django_airavata/wagtailapps/base/management/commands/fix_page_revision_content_type.py @@ -2,7 +2,7 @@ import json from django.core.management.base import BaseCommand -from wagtail.core.models import PageRevision +from wagtail.models import PageRevision class Command(BaseCommand): diff --git a/airavata-django-portal/django_airavata/wagtailapps/base/management/commands/load_cms_data.py b/airavata-django-portal/django_airavata/wagtailapps/base/management/commands/load_cms_data.py index 57c63fbc8..d4c84a3e0 100644 --- a/airavata-django-portal/django_airavata/wagtailapps/base/management/commands/load_cms_data.py +++ b/airavata-django-portal/django_airavata/wagtailapps/base/management/commands/load_cms_data.py @@ -3,7 +3,7 @@ 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 +from wagtail.models import Page, Site class Command(BaseCommand): diff --git a/airavata-django-portal/django_airavata/wagtailapps/base/management/commands/set_wagtail_site.py b/airavata-django-portal/django_airavata/wagtailapps/base/management/commands/set_wagtail_site.py index 079d13a3a..fdbebf6a9 100644 --- a/airavata-django-portal/django_airavata/wagtailapps/base/management/commands/set_wagtail_site.py +++ b/airavata-django-portal/django_airavata/wagtailapps/base/management/commands/set_wagtail_site.py @@ -1,7 +1,7 @@ from django.conf import settings from django.core.management.base import BaseCommand from django.db import transaction -from wagtail.core.models import Page, Site +from wagtail.models import Page, Site from django_airavata.wagtailapps.base.models import ( BlankPage, diff --git a/airavata-django-portal/django_airavata/wagtailapps/base/models.py b/airavata-django-portal/django_airavata/wagtailapps/base/models.py index db2360d19..4281efaba 100644 --- a/airavata-django-portal/django_airavata/wagtailapps/base/models.py +++ b/airavata-django-portal/django_airavata/wagtailapps/base/models.py @@ -5,18 +5,15 @@ import os from django.db import models from modelcluster.fields import ParentalKey from modelcluster.models import ClusterableModel -from wagtail.admin.edit_handlers import ( +from wagtail.admin.panels import ( FieldPanel, InlinePanel, MultiFieldPanel, ObjectList, - PageChooserPanel, - StreamFieldPanel, - TabbedInterface + TabbedInterface, ) -from wagtail.core.fields import RichTextField, StreamField -from wagtail.core.models import Orderable, Page -from wagtail.images.edit_handlers import ImageChooserPanel +from wagtail.fields import RichTextField, StreamField +from wagtail.models import Orderable, Page from wagtail.snippets.models import register_snippet from .blocks import BaseStreamBlock, ContainerChoiceBlock, CssStreamBlock, Nav @@ -63,9 +60,9 @@ class NavExtra(models.Model): """ nav = StreamField([ ('nav', Nav(max_num=1)), - ]) + ], use_json_field=True) panels = [ - StreamFieldPanel('nav'), + FieldPanel('nav'), ] def __str__(self): @@ -87,10 +84,11 @@ class CustomCss(models.Model): blank=True, null=True, help_text="Write custom css and give comments as necessary", - default="") + default="", + use_json_field=True) panels = [ - StreamFieldPanel('css'), + FieldPanel('css'), ] def __str__(self): @@ -112,10 +110,11 @@ class FooterText(models.Model): BaseStreamBlock(), verbose_name="Footer content block", blank=True, - null=True) + null=True, + use_json_field=True) panels = [ - StreamFieldPanel('footer'), + FieldPanel('footer'), ] def __str__(self): @@ -196,7 +195,7 @@ class Navbar(models.Model): ) panels = [ - ImageChooserPanel('logo'), + FieldPanel('logo'), FieldPanel('logo_redirect_link'), FieldPanel('logo_width'), FieldPanel('logo_height'), @@ -344,7 +343,7 @@ class GatewayIcon(models.Model): ) panels = [ - ImageChooserPanel('icon'), + FieldPanel('icon'), FieldPanel('background_color'), ] @@ -480,7 +479,8 @@ class HomePage(Page): BaseStreamBlock(), verbose_name="Home content block", blank=True, - null=True) + null=True, + use_json_field=True) # Promo section of the HomePage site_logo = models.ForeignKey( @@ -618,40 +618,40 @@ class HomePage(Page): content_panels = Page.content_panels + [ MultiFieldPanel([ - ImageChooserPanel('image'), + FieldPanel('image'), FieldPanel('hero_text', classname="full"), MultiFieldPanel([ FieldPanel('hero_cta'), - PageChooserPanel('hero_cta_link'), + FieldPanel('hero_cta_link'), ]) ], heading="Hero section"), - StreamFieldPanel('body'), + FieldPanel('body'), MultiFieldPanel([ - ImageChooserPanel('site_logo'), + FieldPanel('site_logo'), FieldPanel('features_text'), MultiFieldPanel([ - ImageChooserPanel('feature_logo_1'), + FieldPanel('feature_logo_1'), FieldPanel('feature_1_title'), FieldPanel('feature_1_text'), ]), MultiFieldPanel([ - ImageChooserPanel('feature_logo_2'), + FieldPanel('feature_logo_2'), FieldPanel('feature_2_title'), FieldPanel('feature_2_text'), ]), MultiFieldPanel([ - ImageChooserPanel('feature_logo_3'), + FieldPanel('feature_logo_3'), FieldPanel('feature_3_title'), FieldPanel('feature_3_text'), ]), MultiFieldPanel([ - ImageChooserPanel('feature_logo_4'), + FieldPanel('feature_logo_4'), FieldPanel('feature_4_title'), FieldPanel('feature_4_text'), ]) ], heading="Feature section", classname="collapsible"), FieldPanel('custom_body_message'), - ImageChooserPanel('banner_image') + FieldPanel('banner_image') ] customization_panels = [ @@ -674,11 +674,12 @@ class HomePage(Page): class Row(models.Model): body = StreamField( - BaseStreamBlock(), verbose_name="Row Content", blank=True, null=True + BaseStreamBlock(), verbose_name="Row Content", blank=True, null=True, + use_json_field=True, ) panels = [ - StreamFieldPanel('body'), + FieldPanel('body'), ] class Meta: @@ -691,14 +692,16 @@ class BootstrapRow(Row): null=True, blank=True, help_text="(Optional) Create a new Bootstrap container for this " - "and following rows.") + "and following rows.", + use_json_field=True) body = StreamField( - BaseStreamBlock(), verbose_name="Row Content", blank=True, null=True + BaseStreamBlock(), verbose_name="Row Content", blank=True, null=True, + use_json_field=True, ) panels = [ - StreamFieldPanel('container'), - StreamFieldPanel('body'), + FieldPanel('container'), + FieldPanel('body'), ] class Meta: @@ -842,13 +845,15 @@ class CybergatewayHomePage(Page): BaseStreamBlock(), verbose_name="Contact Info Block", blank=True, - null=True) + null=True, + use_json_field=True) footer = StreamField( BaseStreamBlock(), verbose_name="Footer Content Block", blank=True, - null=True) + null=True, + use_json_field=True) boolean_choices = ( ("yes", "Yes"), @@ -875,7 +880,7 @@ class CybergatewayHomePage(Page): content_panels = Page.content_panels + [ MultiFieldPanel([ - ImageChooserPanel('site_logo'), + FieldPanel('site_logo'), FieldPanel('site_link'), FieldPanel('site_text'), FieldPanel('site_header'), @@ -887,8 +892,8 @@ class CybergatewayHomePage(Page): FieldPanel('site_link_text3'), ], heading="Navbar Section"), InlinePanel("row", label="row"), - StreamFieldPanel('contact'), - StreamFieldPanel('footer'), + FieldPanel('contact'), + FieldPanel('footer'), ] customization_panels = [ diff --git a/airavata-django-portal/django_airavata/wagtailapps/base/templatetags/navigation_tags.py b/airavata-django-portal/django_airavata/wagtailapps/base/templatetags/navigation_tags.py index aa4c38b1b..7b84f1255 100644 --- a/airavata-django-portal/django_airavata/wagtailapps/base/templatetags/navigation_tags.py +++ b/airavata-django-portal/django_airavata/wagtailapps/base/templatetags/navigation_tags.py @@ -1,6 +1,6 @@ from django import template from django.conf import settings -from wagtail.core.models import Page, Site +from wagtail.models import Page, Site from django_airavata.wagtailapps.base.models import ( Announcements, diff --git a/airavata-django-portal/django_airavata/wagtailapps/base/tests/management/test_set_wagtail_site.py b/airavata-django-portal/django_airavata/wagtailapps/base/tests/management/test_set_wagtail_site.py index ebaffccab..c7c0a78dd 100644 --- a/airavata-django-portal/django_airavata/wagtailapps/base/tests/management/test_set_wagtail_site.py +++ b/airavata-django-portal/django_airavata/wagtailapps/base/tests/management/test_set_wagtail_site.py @@ -1,7 +1,7 @@ from django.conf import settings from django.core.management import call_command from django.test import TestCase, override_settings -from wagtail.core.models import Page, Site +from wagtail.models import Page, Site @override_settings(ALLOWED_HOSTS=['example.com'], diff --git a/airavata-django-portal/django_airavata/wagtailapps/base/wagtail_hooks.py b/airavata-django-portal/django_airavata/wagtailapps/base/wagtail_hooks.py index 7ef5d6d7f..22fd076cb 100644 --- a/airavata-django-portal/django_airavata/wagtailapps/base/wagtail_hooks.py +++ b/airavata-django-portal/django_airavata/wagtailapps/base/wagtail_hooks.py @@ -4,7 +4,7 @@ from django.shortcuts import redirect from wagtail.admin.rich_text.converters.html_to_contentstate import ( BlockElementHandler ) -from wagtail.core import hooks +from wagtail import hooks logger = logging.getLogger(__name__)
