murattkoc commented on issue #43713:
URL: https://github.com/apache/superset/issues/43713#issuecomment-5477038634

   `import os
   
   # --- Branding ---
   APP_NAME = "Türksat Atlas"
   
   FAVICONS = [
       {
           "href": "/static/assets/images/icon.png",
       }
   ]
   
   THEME_DEFAULT = {
       "token": {
           "brandLogoUrl": "/static/assets/images/turksat.png",
           "brandLogoAlt": "Your Company",
           "brandLogoHeight": "24px",
           "brandSpinnerUrl": "/static/assets/images/my-spinner.svg",
       }
   }
   
   
   BABEL_DEFAULT_LOCALE = 'tr'
   LANGUAGES = {
       'en': {'flag': 'us', 'name': 'English'},
       'tr': {'flag': 'tr', 'name': 'Turkish'},
   }
   
   BABEL_TRANSLATION_DIRECTORIES = "/app/superset/translations"
   
   FEATURE_FLAGS = {
       "ALERT_REPORTS": True,
       "ENABLE_TEMPLATE_PROCESSING": True,
       "DASHBOARD_RBAC": True
   
   }
   
   SQLALCHEMY_DATABASE_URI = 
'postgresql+psycopg2://superset:superset@postgres:5432/superset'
   SECRET_KEY = "NoIkYT9QUXBmNSwslPiSkkH+gtqaLJuos3SVF1u3xP3mQwVCSSEp0rQq"
   
   REDIS_HOST = "redis"
   REDIS_PORT = "6379"
   
   class CeleryConfig:
       broker_url = f"redis://{REDIS_HOST}:{REDIS_PORT}/0"
       imports = ("superset.tasks.celery_app",)
       result_backend = f"redis://{REDIS_HOST}:{REDIS_PORT}/0"
       worker_log_level = "info"
       worker_prefetch_multiplier = 1
       task_acks_late = True
       task_annotations = {
           "sql_json": {"rate_limit": "100/s"},
           "email_reports.send": {"rate_limit": "1/s"},
       }
       beat_schedule = {
           "reports.scheduler": {
               "task": "reports.scheduler",
               "schedule": 60.0,
           },
           "reports.prune_log": {
               "task": "reports.prune_log",
               "schedule": 3600.0,
           },
       }
   
   CELERY_CONFIG = CeleryConfig
   CELERY_TIMEZONE = "Europe/Istanbul"
   TIMEZONE = "Europe/Istanbul"
   
   EMAIL_REPORTS = True
   ENABLE_SCHEDULED_EMAIL_REPORTS = True
   EMAIL_NOTIFICATIONS = True
   
   CELERY_ENABLE_UTC = False
   
   SMTP_HOST = "posta.turksat.com.tr"
   SMTP_PORT = 587
   SMTP_USER = "[email protected]"
   SMTP_PASSWORD = "dCsa8El2trieGMHCttYk"
   SMTP_MAIL_FROM = "[email protected]"
   SMTP_STARTTLS = True
   SMTP_SSL_SERVER_AUTH = False 
   SMTP_SSL = False
   
   ALERT_REPORTS_NOTIFICATION_DRY_RUN = False
   
   # Raporların içindeki linklerin doğru çalışması için
   WEBDRIVER_BASEURL = "http://superset:8088/";
   
   WEBDRIVER_TYPE = "chrome"
   WEBDRIVER_OPTION_ARGS = [
       "--headless",
       "--no-sandbox",
       "--disable-dev-shm-usage",
       "--disable-gpu",
       "--window-size=1200,800"
   ]
   THUMBNAIL_SELENIUM_USER = "admin"
   
   from superset.translations.utils import get_language_pack
   
   def bootstrap_overrides(bootstrap_data):
       bootstrap_data["locale"] = "tr"
       bootstrap_data["language_pack"] = get_language_pack("tr")
       return bootstrap_data
   
   COMMON_BOOTSTRAP_OVERRIDES_FUNC = bootstrap_overrides
   
   from flask_appbuilder.models.sqla.filters import FilterContains
   from flask_appbuilder.security.sqla.apis import PermissionViewMenuApi
   from superset.security import SupersetSecurityManager
   
   class SupersetPermissionViewMenuApi(PermissionViewMenuApi):
       search_columns = ["id", "permission.name", "view_menu.name"]
   
       def _init_properties(self) -> None:
           super()._init_properties()
           for col in ["permission.name", "view_menu.name"]:
               self._filters._search_filters[col] = [
                   FilterContains(col, self.datamodel)
               ]
   
   class CustomSecurityManager(SupersetSecurityManager):
       permission_view_menu_api = SupersetPermissionViewMenuApi
   
   CUSTOM_SECURITY_MANAGER = CustomSecurityManager
   
   from flask import g
   from flask_appbuilder.security.sqla.models import User
   
   # ------------------------------------------------------------------
   # GEÇİCİ: OAuth2 credential'ları gelene kadar RLS için statik
   # değerler kullanılır. OAuth2 devreye girdiğinde tek yapılacak:
   # get_user_claim() fonksiyonunun gövdesini token/claim okuyacak
   # şekilde güncellemek. RLS tanımları (Jinja şablonları) hiç
   # değişmeyecek.
   # ------------------------------------------------------------------
   STATIC_CLAIMS = {
       "personel_id": "8949",
       # "birim_id": "12",
   }
   
   def get_user_claim(claim_name: str, default: str = "-1") -> str:
       """RLS'de: {{ get_user_claim('personel_id') }}, {{ 
get_user_claim('birim_id') }} ..."""
       if not (g.user and g.user.is_authenticated):
           return "-1"
       return str(STATIC_CLAIMS.get(claim_name, default))
   
   JINJA_CONTEXT_ADDONS = {
       "get_user_claim": get_user_claim,
       "get_personel_id": lambda: get_user_claim("personel_id"),
   }`
   
   my all superset_config.py file. @dosu


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to