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

EnxDev pushed a commit to branch test/chatbot-local
in repository https://gitbox.apache.org/repos/asf/superset.git

commit da4d09a00614eacc9460983351485c1c524a76cb
Author: Enzo Martellucci <[email protected]>
AuthorDate: Wed May 27 23:51:38 2026 +0200

    fix(extensions): complete model move — remove from core.py, fix import, 
ensure ORM registration
    
    - Create superset/extensions/models.py with ExtensionSettings and 
ExtensionEnabled.
    - Remove both classes from superset/models/core.py.
    - Update superset/extensions/settings.py import to the new path.
    - ORM registration is guaranteed by the existing import chain:
      api.py → settings.py → extensions/models.py — no additional import needed.
    
    Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
---
 superset/extensions/models.py   | 37 +++++++++++++++++++++++++++++++++++++
 superset/extensions/settings.py |  2 +-
 superset/models/core.py         | 16 ----------------
 3 files changed, 38 insertions(+), 17 deletions(-)

diff --git a/superset/extensions/models.py b/superset/extensions/models.py
new file mode 100644
index 00000000000..623b839134a
--- /dev/null
+++ b/superset/extensions/models.py
@@ -0,0 +1,37 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+"""SQLAlchemy models for extension settings persistence."""
+
+from flask_appbuilder import Model
+from sqlalchemy import Boolean, Column, Integer, String
+
+
+class ExtensionSettings(Model):  # pylint: disable=too-few-public-methods
+    """Global admin settings for extensions (singleton row, id=1)."""
+
+    __tablename__ = "extension_settings"
+    id = Column(Integer, primary_key=True)
+    active_chatbot_id = Column(String(250), nullable=True)
+
+
+class ExtensionEnabled(Model):  # pylint: disable=too-few-public-methods
+    """Per-extension enable/disable flag."""
+
+    __tablename__ = "extension_enabled"
+    extension_id = Column(String(250), primary_key=True)
+    enabled = Column(Boolean, nullable=False, default=True)
diff --git a/superset/extensions/settings.py b/superset/extensions/settings.py
index 367ab4aef44..ecce0accf19 100644
--- a/superset/extensions/settings.py
+++ b/superset/extensions/settings.py
@@ -23,7 +23,7 @@ from sqlalchemy.dialects.postgresql import insert as pg_insert
 from sqlalchemy.dialects.sqlite import insert as sqlite_insert
 
 from superset import db
-from superset.models.core import ExtensionEnabled, ExtensionSettings
+from superset.extensions.models import ExtensionEnabled, ExtensionSettings
 from superset.utils.decorators import transaction
 
 _SETTINGS_ROW_ID = 1
diff --git a/superset/models/core.py b/superset/models/core.py
index 35a36f588d5..1f99630ab3d 100755
--- a/superset/models/core.py
+++ b/superset/models/core.py
@@ -108,22 +108,6 @@ class KeyValue(Model):  # pylint: 
disable=too-few-public-methods
     value = Column(utils.MediumText(), nullable=False)
 
 
-class ExtensionSettings(Model):  # pylint: disable=too-few-public-methods
-    """Global admin settings for extensions (singleton row, id=1)."""
-
-    __tablename__ = "extension_settings"
-    id = Column(Integer, primary_key=True)
-    active_chatbot_id = Column(String(250), nullable=True)
-
-
-class ExtensionEnabled(Model):  # pylint: disable=too-few-public-methods
-    """Per-extension enable/disable flag."""
-
-    __tablename__ = "extension_enabled"
-    extension_id = Column(String(250), primary_key=True)
-    enabled = Column(Boolean, nullable=False, default=True)
-
-
 class CssTemplate(AuditMixinNullable, UUIDMixin, Model):
     """CSS templates for dashboards"""
 

Reply via email to