2011/9/6 Paul McMillan <p...@mcmillan.ws>:
>> I'm going to use the same trick used by USE_L10N and explained by Anssi: set 
>> USE_TZ to False in global_settings.py and to True in the template of 
>> settings.py. This preserves backwards compatibility but the new code is the 
>> default for new projects.
>
> This isn't gonna work because your new code will have a hard dependency on 
> pytz.

Django uses PIL for ImageField, but it isn't a hard dependency because
it's only imported within functions that actually use it. We can do
the same for pytz if it's only used in a few places.

If a module uses pytz in many functions, I suggest this pattern:

    from django.conf import settings
    if settings.USE_TZ:
        import pytz

And it's a bug to hit code that depends on pytz when USE_TZ is False.

If we want to make some functions (like timezone conversion helpers)
available to anyone who has pytz, regardless of the value of USE_TZ,
we could use this pattern:

    try:
        import pytz
    except ImportError:
        if settings.USE_TZ:
            raise

-- 
Aymeric Augustin.

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to