166 lines
4.6 KiB
Python
166 lines
4.6 KiB
Python
"""
|
|
Configuração do MetaSet (Superset) para ArcadiaSuite
|
|
"""
|
|
|
|
import os
|
|
from pathlib import Path
|
|
|
|
BASE_DIR = Path(__file__).parent.absolute()
|
|
SUPERSET_HOME = BASE_DIR / 'superset_home'
|
|
|
|
# ==========================================
|
|
# BRANDING - ARCADIASUITE
|
|
# ==========================================
|
|
|
|
APP_NAME = "MetaSet"
|
|
APP_ICON = "/static/assets/images/branding/metaset-logo-horiz.png"
|
|
LOGO_TARGET_PATH = "/"
|
|
LOGO_TOOLTIP = "MetaSet - Business Intelligence by ArcadiaSuite"
|
|
|
|
# Favicons
|
|
FAVICONS = [
|
|
{"href": "/static/assets/images/branding/favicon-16x16.png", "sizes": "16x16"},
|
|
{"href": "/static/assets/images/branding/favicon-32x32.png", "sizes": "32x32"},
|
|
]
|
|
|
|
# Cores ArcadiaSuite (alinhadas ao site principal)
|
|
ARCADIA_PRIMARY = "#0ea5e9" # Azul celeste
|
|
ARCADIA_SECONDARY = "#10b981" # Verde
|
|
ARCADIA_ACCENT = "#f59e0b" # Laranja
|
|
ARCADIA_BG = "#f8fafc" # Background claro
|
|
ARCADIA_TEXT = "#1e293b" # Texto escuro
|
|
|
|
# Desabilitar cache de arquivos estáticos para forçar reload
|
|
SEND_FILE_MAX_AGE_DEFAULT = 0
|
|
|
|
THEME_DEFAULT = {
|
|
"token": {
|
|
"brandAppName": APP_NAME,
|
|
"brandLogoAlt": "MetaSet by ArcadiaSuite",
|
|
"brandLogoUrl": APP_ICON,
|
|
"brandLogoMargin": "16px 0",
|
|
"brandLogoHeight": "28px",
|
|
"colorPrimary": ARCADIA_PRIMARY,
|
|
"colorLink": ARCADIA_PRIMARY,
|
|
"colorSuccess": ARCADIA_SECONDARY,
|
|
"colorWarning": ARCADIA_ACCENT,
|
|
"colorError": "#ef4444",
|
|
"colorInfo": "#3b82f6",
|
|
"colorBgLayout": ARCADIA_BG,
|
|
"colorBgContainer": "#ffffff",
|
|
"colorText": ARCADIA_TEXT,
|
|
"colorTextSecondary": "#64748b",
|
|
"fontFamily": "Inter, -apple-system, BlinkMacSystemFont, sans-serif",
|
|
"fontSize": 14,
|
|
"borderRadius": 8,
|
|
"borderRadiusLG": 12,
|
|
"boxShadow": "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
|
|
"boxShadowSecondary": "0 4px 6px -1px rgba(0, 0, 0, 0.1)",
|
|
},
|
|
"algorithm": "default",
|
|
}
|
|
|
|
THEME_DARK = {
|
|
**THEME_DEFAULT,
|
|
"token": {
|
|
**THEME_DEFAULT["token"],
|
|
"colorBgLayout": "#0f172a",
|
|
"colorBgContainer": "#1e293b",
|
|
"colorText": "#f1f5f9",
|
|
},
|
|
"algorithm": "dark",
|
|
}
|
|
|
|
# ==========================================
|
|
# SEGURANÇA & MULTI-TENANCY
|
|
# ==========================================
|
|
|
|
from security_manager import ArcadiaSecurityManager
|
|
CUSTOM_SECURITY_MANAGER = ArcadiaSecurityManager
|
|
|
|
AUTH_TYPE = 1
|
|
WTF_CSRF_ENABLED = True
|
|
WTF_CSRF_TIME_LIMIT = 3600
|
|
SESSION_COOKIE_HTTPONLY = True
|
|
SESSION_COOKIE_SECURE = False
|
|
SESSION_COOKIE_SAMESITE = "Lax"
|
|
|
|
# ==========================================
|
|
# BANCO DE DADOS
|
|
# ==========================================
|
|
|
|
SQLALCHEMY_DATABASE_URI = os.getenv(
|
|
'DATABASE_URL',
|
|
'postgresql://arcadia:arcadia@localhost:5432/metaset_db'
|
|
)
|
|
|
|
SQLALCHEMY_EXAMPLES_URI = 'postgresql://arcadia:arcadia@localhost:5432/arcadia_db'
|
|
|
|
SQLALCHEMY_ENGINE_OPTIONS = {
|
|
"connect_args": {
|
|
"options": "-c row_security=on"
|
|
},
|
|
"pool_pre_ping": True,
|
|
"pool_recycle": 300,
|
|
}
|
|
|
|
# ==========================================
|
|
# FEATURE FLAGS
|
|
# ==========================================
|
|
|
|
FEATURE_FLAGS = {
|
|
"EMBEDDED_SUPERSET": True,
|
|
"EMBEDDABLE_CHARTS": True,
|
|
"DASHBOARD_RBAC": True,
|
|
"SQLLAB_BACKEND_PERSISTENCE": True,
|
|
"DASHBOARD_VIRTUALIZATION": True,
|
|
"DRILL_BY": True,
|
|
"CSS_TEMPLATES": True,
|
|
"ENABLE_JAVASCRIPT_CONTROLS": False,
|
|
"ALERT_REPORTS": False,
|
|
}
|
|
|
|
# ==========================================
|
|
# CACHE
|
|
# ==========================================
|
|
|
|
CACHE_CONFIG = {
|
|
"CACHE_TYPE": "RedisCache",
|
|
"CACHE_REDIS_HOST": os.getenv("REDIS_HOST", "localhost"),
|
|
"CACHE_REDIS_PORT": int(os.getenv("REDIS_PORT", "6379")),
|
|
"CACHE_REDIS_DB": 1,
|
|
"CACHE_DEFAULT_TIMEOUT": 300,
|
|
}
|
|
|
|
# ==========================================
|
|
# LOGGING
|
|
# ==========================================
|
|
|
|
LOG_FORMAT = "%(asctime)s [MetaSet] %(levelname)s: %(message)s"
|
|
LOG_LEVEL = "INFO" if os.getenv("FLASK_ENV") == "production" else "DEBUG"
|
|
|
|
# ==========================================
|
|
# UPLOADS & EXPORT
|
|
# ==========================================
|
|
|
|
UPLOAD_FOLDER = str(SUPERSET_HOME / "uploads")
|
|
UPLOAD_CHUNK_SIZE = 4096
|
|
|
|
CSV_EXPORT = {"encoding": "utf-8-sig"}
|
|
EXCEL_EXPORT = {}
|
|
|
|
ROW_LIMIT = 100000
|
|
SQL_MAX_ROW = 100000
|
|
DISPLAY_MAX_ROW = 10000
|
|
|
|
SQLLAB_TIMEOUT = 60
|
|
SUPERSET_WEBSERVER_TIMEOUT = 60
|
|
|
|
MAPBOX_API_KEY = os.getenv("MAPBOX_API_KEY", "")
|
|
|
|
FAVICONS = [
|
|
{"href": "/static/assets/images/branding/favicon-16x16.png", "sizes": "16x16"},
|
|
{"href": "/static/assets/images/branding/favicon-32x32.png", "sizes": "32x32"},
|
|
{"href": "/static/assets/images/branding/apple-touch-icon.png", "sizes": "180x180"},
|
|
]
|