mirror of
https://github.com/apache/superset.git
synced 2026-04-20 00:24:38 +00:00
fix: add fallback and validation for report and cron timezones (#17338)
* add fallback and validation for report and cron timezones * add logging to exception catch * Run black Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
This commit is contained in:
committed by
GitHub
parent
bfc813dea2
commit
f10bc6d8fe
@@ -15,21 +15,29 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import logging
|
||||
from datetime import datetime, timedelta, timezone as dt_timezone
|
||||
from typing import Iterator
|
||||
|
||||
import pytz
|
||||
from croniter import croniter
|
||||
from pytz import timezone as pytz_timezone, UnknownTimeZoneError
|
||||
|
||||
from superset import app
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def cron_schedule_window(cron: str, timezone: str) -> Iterator[datetime]:
|
||||
window_size = app.config["ALERT_REPORTS_CRON_WINDOW_SIZE"]
|
||||
# create a time-aware datetime in utc
|
||||
time_now = datetime.now(tz=dt_timezone.utc)
|
||||
tz = pytz.timezone(timezone)
|
||||
utc = pytz.timezone("UTC")
|
||||
try:
|
||||
tz = pytz_timezone(timezone)
|
||||
except UnknownTimeZoneError:
|
||||
# fallback to default timezone
|
||||
tz = pytz_timezone("UTC")
|
||||
logger.warning("Timezone %s was invalid. Falling back to 'UTC'", timezone)
|
||||
utc = pytz_timezone("UTC")
|
||||
# convert the current time to the user's local time for comparison
|
||||
time_now = time_now.astimezone(tz)
|
||||
start_at = time_now - timedelta(seconds=1)
|
||||
|
||||
Reference in New Issue
Block a user