c2c-oerpscenario team mailing list archive
-
c2c-oerpscenario team
-
Mailing list archive
-
Message #19527
[Bug 711084] Re: [6.0, trunk] pytz zoneinfo missing from windows packaging - timezone conversion not working
Hi,
Warning, same missing folder zoneinfo with server in server\library.zip, but I don't know if zoneinfo is necessary for the server. But more than missing folder zoneinfo, the file reference.py is missing also.
If necessary, to add reference.py, add pytz in the list of required package in server\setup.py line 196 :
- "uuid",
+ "uuid", "pytz"
If necessary zoneinfo in server, add the code after in server\setup.py as in client
to add complete pytz library (with folder zoneinfo), like in client\setup.nsi in branch 5.0, add at the end of the script client\setup.py :
if has_py2exe:
# Sometime between pytz-2008a and pytz-2008i common_timezones started to
# include only names of zones with a corresponding data file in zoneinfo.
# pytz installs the zoneinfo directory tree in the same directory
# as the pytz/__init__.py file. These data files are loaded using
# pkg_resources.resource_stream. py2exe does not copy this to library.zip so
# resource_stream can't find the files and common_timezones is empty when
# read in the py2exe executable.
# This manually copies zoneinfo into the zip. See also
# http://code.google.com/p/googletransitdatafeed/issues/detail?id=121
import pytz
import zipfile
import tempfile
import shutil
# Make sure the layout of pytz hasn't changed
assert (pytz.__file__.endswith('__init__.pyc') or
pytz.__file__.endswith('__init__.py')), pytz.__file__
temp_dir = None
pytz_dir = os.path.dirname(pytz.__file__)
zoneinfo_dir = os.path.join(pytz_dir, 'zoneinfo')
if not os.path.exists(zoneinfo_dir):
egg = os.path.dirname(pytz_dir)
if zipfile.is_zipfile(egg):
temp_dir = tempfile.mkdtemp()
zoneinfo_dir = os.path.join(temp_dir, 'pytz', 'zoneinfo')
os.makedirs(zoneinfo_dir)
archive = zipfile.ZipFile(egg)
for filename in archive.namelist():
if filename.startswith('pytz/zoneinfo/'):
file_path = os.path.join(temp_dir, filename)
destination = file_path.replace('/', os.sep)
if not file_path.endswith('/'):
try:
os.makedirs(os.path.dirname(destination))
except os.error:
pass
fp = file(destination, 'w')
fp.write(archive.read(filename))
fp.close()
archive.close()
# '..\\Lib\\pytz\\__init__.py' -> '..\\Lib'
disk_basedir = os.path.dirname(os.path.dirname(zoneinfo_dir))
zipfile_path = os.path.join(options['py2exe']['dist_dir'], 'library.zip')
z = zipfile.ZipFile(zipfile_path, 'a')
for absdir, directories, filenames in os.walk(zoneinfo_dir):
zip_dir = absdir[len(disk_basedir):]
for f in filenames:
z.write(os.path.join(absdir, f), os.path.join(zip_dir, f))
z.close()
if temp_dir is not None:
shutil.rmtree(temp_dir)
Bye
** Bug watch added: code.google.com/p/googletransitdatafeed/issues #121
http://code.google.com/p/googletransitdatafeed/issues/detail?id=121
--
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/711084
Title:
[6.0,trunk] pytz zoneinfo missing from windows packaging - timezone
conversion not working
Status in OpenERP GTK Client:
Confirmed
Status in OpenERP Web Client:
Confirmed
Bug description:
OpenERP server and web client 6.0.1 running on Ubuntu server (32-bit) 10.10
Postgres 8.4
Windows GTK client and web browser (Google Chrome) on WIndows 7 (64-bit)
(Server and web client were set up as per
http://powerphil.wordpress.com/2011/01/28/how-to-install-and-
configure-an-openerp-6-0-1-server-and-web-server-on-an-
ubuntu-10-10-server/).
Problem is that the times shown in the GTK client are shown at GMT (unless the server's TZ environment variable is set), i.e. they ignore the user's Timezone preference.
However, the web client works correctly.
More details:
Ubuntu server's time is correctly set to GMT. For example, if the time in London is 1am, the server's time also shows 1am (by doing a "date" on the command line, and the TZ environment variable is not set to anything).
Both openerp-server and openerp-web processes are running without any
TZ setting.
Then log into OpenERP using a web browser; set the User's preference
to Australia/Sydney; create a new Phone Call, Outbound; the time
correctly shows 12 noon (GMT + 11 hours, Sydney currently being on
summer time).
Do the same in the GTK client; the time shows 1am - wrong; it should
be 12 noon.
---------
More information:
So try to work around the problem: in the .bashrc file of the openerp user that runs the openerp-server process, set the TZ, viz:
TZ='AEST-10AEDT-11,M10.5.0,M3.5.0'
export TZ
Restart the service; log into the GTK client; create a new phone call; the time now shows correctly (for the wrong reasons, admittedly).
Go to the web browser and do the same thing; the time now shows 19 hours ahead of what it should be (on the next day!). Wrong.
So it looks like the web client is taking timezone time into account,
in addition to whatever the openerp-server is doing, and it should be
the other way around: the openerp-server should be calculating the
correct time, and the web server should just be presenting it.
References