turicas/rows

Handle timezones more efficiently

开放

#345 创建于 2020年3月29日

 (0 条评论) (0 个反应) (0 位负责人)Python (136 个派生)github user discovery
bugenhancementhelp wantedrows.fields

仓库指标

星标
 (886 个星标)
PR 合并指标
 (30 天内没有已合并 PR)

描述

I've run into some problems serializing/deserializing datetime objects with timezones - in the end came up the this DIY solution:

import pytz

TIMEZONE_UTC = pytz.utc
TIMEZONE_BRAZIL = pytz.timezone("America/Sao_Paulo")

class BrazilianDatetimeField(rows.fields.DatetimeField):
    @classmethod
    def deserialize(cls, value):
        value = str(value or "").strip()
        if not value:
            return None
        dt = datetime.datetime.fromisoformat(value)
        if dt.tzinfo is None:  # Force naive to be UTC
            dt = TIMEZONE_UTC.localize(dt)
        dt = dt.astimezone(TIMEZONE_BRAZIL)
        return dt

    @classmethod
    def serialize(cls, value):
        if value is None:
            return ""
        return value.isoformat()

It'd be awesome if rows could handle timezones in more standard way.

贡献者指南