[Moin-user] Proper timezone support using pytz

Max Bowsher maxb at f2s.com
Tue Nov 3 05:53:35 EST 2009

Thomas Waldmann wrote:
> Hi Max,
>> I have just finished an initial draft of a patch to give MoinMoin proper
>> timezone support using pytz. (http://paste.ubuntu.com/306824/)
> Ah, nice. :)
> I didn't try the patch (and I don't have an openid test environment
> anyway), but it looks good.

Neither do I, actually, which is one of the reasons I'm calling it a
"draft". I'll need to figure this out at some point (or co-opt someone
else to test that bit.)

> Maybe some small change request:
> try:
>     import pytz
> except ImportError:
>     pytz = None
> if pytz:
>     # pytz is there
> else:
>     # no pytz

Heh. I actually pondered doing it that way, but concluded "if
pytz_available:" was more readable / less cryptic. I don't really mind
which way we go on this.

>> One option would be for MoinMoin to require pytz - this has the
>> advantage of making the code simpler, as it is not necessary to maintain
>> parallel codepaths. Alternatively, I've currently got the patch set up
>> to conditionally import pytz - but the migration corner cases, which
>> I've yet to consider carefully, are more difficult this way, and I'm
>> sceptical that the extra complexity is worth it.
> Well, this all depends on the user profiles: if they contain settings
> for the non-pytz / pytz way of doing things, moin needs to be able to
> deal with them.
>> Another issue is user profile migration: I'm currently assuming that
>> user profiles will be left containing and using their tz_offset
>> immediately after an upgrade, and when users edit their profiles, they
>> will get migrated to a named timezone. but:
> One of the general problems with that is: you never know when all
> userprofiles will be migrated. For bigger wikis with some stale user
> profiles this likely will never happen.
>> 1) Do I bother writing code specifically to allow people to enter and
>> save the user prefs page (to change other prefs) without setting a
>> timezone? (Or just default it to UTC and hope they set it properly
>> whilst they're there)
> Maybe default to "not set" (None), so it will continue using tz_offset
> for that case.
>> 2) Do I bother considering the potential for reverse-migration (e.g. 1.9
>> -> 1.8 rollback, or 1.9-with-pytz -> 1.9-without-pytz if we go the pytz
>> as optional dependency route) ?
> We usually do not support downgrades from a later to an earlier moin
> version.
>> Options would be:
>> * Delete the tz_offset from user profiles when edited after upgrade. If
>> you migrate back, users end up with a defaulted tz_offset.
> I almost would've preferred that way, but: there will likely be
> untouched userprofiles with just tz_offset (and no tz_name).

How about deleting tz_offset from profiles only when they are saved with
a user-provided tz_name ?

>> * Keep the old tz_offset lying around unused just in case.
> If pytz is present, moin should ask for tz_name and store this into user
> profile.
> If pytz is present and tz_name is set, moin should use this to do time
> calculations, otherwise it should use tz_offset.
>> * Actually make an effort to update the tz_offset using the base offset
>> of the timezone when the user reconfigures their timezone. I'm not a fan
>> of this, as due to DST, it'll be a lie for half of the year anyway.
> Yeah, maybe not worth the effort.

This all makes sense, but there is one remaining issue:

If we make Moin only optionally use pytz, what should it do when
encountering a pytz-enabled user profile when the pytz module is not

(e.g., if pytz was previously installed, but is no longer installed.)

I vote that this is a corner case that is not worth putting too much
thought into, and that Moin should just revert to letting the affected
users configure their tz_offset, and using its configured default
tz_offset until they do.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/moin-user/attachments/20091103/b0cb928f/attachment.sig>

More information about the Moin-user mailing list