код написан
This commit is contained in:
@@ -173,12 +173,29 @@ class ProfileService:
|
||||
payload.dashboards_table_density
|
||||
)
|
||||
|
||||
effective_telegram_id = self._sanitize_text(preference.telegram_id)
|
||||
if "telegram_id" in provided_fields:
|
||||
effective_telegram_id = self._sanitize_text(payload.telegram_id)
|
||||
|
||||
effective_email_address = self._sanitize_text(preference.email_address)
|
||||
if "email_address" in provided_fields:
|
||||
effective_email_address = self._sanitize_text(payload.email_address)
|
||||
|
||||
effective_notify_on_fail = (
|
||||
bool(preference.notify_on_fail)
|
||||
if preference.notify_on_fail is not None
|
||||
else True
|
||||
)
|
||||
if "notify_on_fail" in provided_fields:
|
||||
effective_notify_on_fail = bool(payload.notify_on_fail)
|
||||
|
||||
validation_errors = self._validate_update_payload(
|
||||
superset_username=effective_superset_username,
|
||||
show_only_my_dashboards=effective_show_only,
|
||||
git_email=effective_git_email,
|
||||
start_page=effective_start_page,
|
||||
dashboards_table_density=effective_dashboards_table_density,
|
||||
email_address=effective_email_address,
|
||||
)
|
||||
if validation_errors:
|
||||
logger.reflect("[REFLECT] Validation failed; mutation is denied")
|
||||
@@ -205,6 +222,9 @@ class ProfileService:
|
||||
preference.start_page = effective_start_page
|
||||
preference.auto_open_task_drawer = effective_auto_open_task_drawer
|
||||
preference.dashboards_table_density = effective_dashboards_table_density
|
||||
preference.telegram_id = effective_telegram_id
|
||||
preference.email_address = effective_email_address
|
||||
preference.notify_on_fail = effective_notify_on_fail
|
||||
preference.updated_at = datetime.utcnow()
|
||||
|
||||
persisted_preference = self.auth_repository.save_user_dashboard_preference(preference)
|
||||
@@ -453,6 +473,9 @@ class ProfileService:
|
||||
dashboards_table_density=self._normalize_density(
|
||||
preference.dashboards_table_density
|
||||
),
|
||||
telegram_id=self._sanitize_text(preference.telegram_id),
|
||||
email_address=self._sanitize_text(preference.email_address),
|
||||
notify_on_fail=bool(preference.notify_on_fail) if preference.notify_on_fail is not None else True,
|
||||
created_at=created_at,
|
||||
updated_at=updated_at,
|
||||
)
|
||||
@@ -570,6 +593,9 @@ class ProfileService:
|
||||
start_page="dashboards",
|
||||
auto_open_task_drawer=True,
|
||||
dashboards_table_density="comfortable",
|
||||
telegram_id=None,
|
||||
email_address=None,
|
||||
notify_on_fail=True,
|
||||
created_at=now,
|
||||
updated_at=now,
|
||||
)
|
||||
@@ -586,6 +612,7 @@ class ProfileService:
|
||||
git_email: Optional[str],
|
||||
start_page: str,
|
||||
dashboards_table_density: str,
|
||||
email_address: Optional[str] = None,
|
||||
) -> List[str]:
|
||||
errors: List[str] = []
|
||||
sanitized_username = self._sanitize_username(superset_username)
|
||||
@@ -613,6 +640,16 @@ class ProfileService:
|
||||
if dashboards_table_density not in SUPPORTED_DENSITIES:
|
||||
errors.append("Dashboards table density value is not supported.")
|
||||
|
||||
sanitized_email = self._sanitize_text(email_address)
|
||||
if sanitized_email:
|
||||
if (
|
||||
" " in sanitized_email
|
||||
or "@" not in sanitized_email
|
||||
or sanitized_email.startswith("@")
|
||||
or sanitized_email.endswith("@")
|
||||
):
|
||||
errors.append("Notification email should be a valid email address.")
|
||||
|
||||
return errors
|
||||
# [/DEF:_validate_update_payload:Function]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user