2008-11-11 17:17:41 +03:00
|
|
|
# -*-python-*-
|
|
|
|
#
|
2013-01-04 23:01:54 +04:00
|
|
|
# Copyright (C) 1999-2013 The ViewCVS Group. All Rights Reserved.
|
2008-11-11 17:17:41 +03:00
|
|
|
#
|
|
|
|
# By using this file, you agree to the terms and conditions set forth in
|
|
|
|
# the LICENSE.html file which can be found at the top level of the ViewVC
|
|
|
|
# distribution or at http://viewvc.org/license-1.html.
|
|
|
|
#
|
|
|
|
# For more information, visit http://viewvc.org/
|
|
|
|
#
|
|
|
|
# -----------------------------------------------------------------------
|
|
|
|
|
|
|
|
import sys
|
|
|
|
import time
|
|
|
|
import types
|
|
|
|
import re
|
Wow. Drop a "general code cleanup" kind of bomb on the codebase. All
of this is aimed at not paying the maintenance price of supporting
Python versions prior to 2.4 any longer, plus a little bit of just
getting dead code out of the way.
* lib/compat.py
Remove as unused.
* bin/cvsdbadmin,
* bin/loginfo-handler,
* bin/make-database,
* bin/svndbadmin,
* lib/accept.py,
* lib/blame.py,
* lib/cvsdb.py,
* lib/popen.py,
* lib/query.py,
* lib/sapi.py,
* lib/vcauth/forbidden/__init__.py
* lib/vcauth/forbiddenre/__init__.py,
* lib/vcauth/svnauthz/__init__.py,
* lib/vclib/__init__.py,
* lib/vclib/ccvs/blame.py,
* lib/win32popen.py,
* tests/timelog.py
Replace explicit import and use of the 'string' module with newer constructs.
* bin/standalone.py,
* lib/viewvc.py
No longer use 'compat' module. Replace explicit import and use of
the 'string' module with newer constructs.
* lib/dbi.py
Use calender.timegm() instead of compat.timegm().
* lib/vcauth/__init__.py
Lose unused module imports.
* lib/config.py,
Replace explicit import and use of the 'string' module with newer
constructs where possible. Lose old ConfigParser patch-up code for
Python 1.5.1.
* lib/vclib/ccvs/ccvs.py
Replace explicit import and use of the 'string' module with newer
constructs where possible. Import _path_join() from bincvs, and use
it instead of a bunch of copy-and-pasted string join() statements
throughout.
* lib/vclib/ccvs/__init__.py
(cvs_strptime): Moved here from the 'compat' module.
* lib/vclib/ccvs/bincvs.py
(): No longer use 'compat' module. Replace explicit import and use
of the 'string' module with newer constructs.
(_path_join): New, used now instead of a bunch of copy-and-pasted
string join() statements throughout.
* viewvc-install
Don't use the 'compat' module any more.
Also, so some rearranging of non-critical bits.
* misc/: New directory.
* misc/py2html.py: Moved from 'lib/py2html.py'.
* misc/PyFontify.py: Moved from 'lib/PyFontify.py'.
* misc/elemx/: Moved from 'elemx/'.
* misc/tparse/: Moved from 'tparse/'.
* tools/make-release
Omit 'misc' directory from releases, too.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/trunk@2437 8cb11bc2-c004-0410-86c3-e597b4017df7
2010-09-03 20:49:52 +04:00
|
|
|
import calendar
|
2008-11-11 17:17:41 +03:00
|
|
|
import MySQLdb
|
|
|
|
|
|
|
|
# set to 1 to store commit times in UTC, or 0 to use the ViewVC machine's
|
|
|
|
# local timezone. Using UTC is recommended because it ensures that the
|
|
|
|
# database will remain valid even if it is moved to another machine or the host
|
|
|
|
# computer's time zone is changed. UTC also avoids the ambiguity associated
|
|
|
|
# with daylight saving time (for example if a computer in New York recorded the
|
|
|
|
# local time 2002/10/27 1:30 am, there would be no way to tell whether the
|
|
|
|
# actual time was recorded before or after clocks were rolled back). Use local
|
|
|
|
# times for compatibility with databases used by ViewCVS 0.92 and earlier
|
|
|
|
# versions.
|
|
|
|
utc_time = 1
|
|
|
|
|
|
|
|
def DateTimeFromTicks(ticks):
|
|
|
|
"""Return a MySQL DATETIME value from a unix timestamp"""
|
|
|
|
|
|
|
|
if utc_time:
|
|
|
|
t = time.gmtime(ticks)
|
|
|
|
else:
|
|
|
|
t = time.localtime(ticks)
|
|
|
|
return "%04d-%02d-%02d %02d:%02d:%02d" % t[:6]
|
|
|
|
|
|
|
|
_re_datetime = re.compile('([0-9]{4})-([0-9][0-9])-([0-9][0-9]) '
|
|
|
|
'([0-9][0-9]):([0-9][0-9]):([0-9][0-9])')
|
|
|
|
|
|
|
|
def TicksFromDateTime(datetime):
|
|
|
|
"""Return a unix timestamp from a MySQL DATETIME value"""
|
|
|
|
|
|
|
|
if type(datetime) == types.StringType:
|
|
|
|
# datetime is a MySQL DATETIME string
|
|
|
|
matches = _re_datetime.match(datetime).groups()
|
|
|
|
t = tuple(map(int, matches)) + (0, 0, 0)
|
|
|
|
elif hasattr(datetime, "timetuple"):
|
|
|
|
# datetime is a Python >=2.3 datetime.DateTime object
|
|
|
|
t = datetime.timetuple()
|
|
|
|
else:
|
|
|
|
# datetime is an eGenix mx.DateTime object
|
|
|
|
t = datetime.tuple()
|
|
|
|
|
|
|
|
if utc_time:
|
Wow. Drop a "general code cleanup" kind of bomb on the codebase. All
of this is aimed at not paying the maintenance price of supporting
Python versions prior to 2.4 any longer, plus a little bit of just
getting dead code out of the way.
* lib/compat.py
Remove as unused.
* bin/cvsdbadmin,
* bin/loginfo-handler,
* bin/make-database,
* bin/svndbadmin,
* lib/accept.py,
* lib/blame.py,
* lib/cvsdb.py,
* lib/popen.py,
* lib/query.py,
* lib/sapi.py,
* lib/vcauth/forbidden/__init__.py
* lib/vcauth/forbiddenre/__init__.py,
* lib/vcauth/svnauthz/__init__.py,
* lib/vclib/__init__.py,
* lib/vclib/ccvs/blame.py,
* lib/win32popen.py,
* tests/timelog.py
Replace explicit import and use of the 'string' module with newer constructs.
* bin/standalone.py,
* lib/viewvc.py
No longer use 'compat' module. Replace explicit import and use of
the 'string' module with newer constructs.
* lib/dbi.py
Use calender.timegm() instead of compat.timegm().
* lib/vcauth/__init__.py
Lose unused module imports.
* lib/config.py,
Replace explicit import and use of the 'string' module with newer
constructs where possible. Lose old ConfigParser patch-up code for
Python 1.5.1.
* lib/vclib/ccvs/ccvs.py
Replace explicit import and use of the 'string' module with newer
constructs where possible. Import _path_join() from bincvs, and use
it instead of a bunch of copy-and-pasted string join() statements
throughout.
* lib/vclib/ccvs/__init__.py
(cvs_strptime): Moved here from the 'compat' module.
* lib/vclib/ccvs/bincvs.py
(): No longer use 'compat' module. Replace explicit import and use
of the 'string' module with newer constructs.
(_path_join): New, used now instead of a bunch of copy-and-pasted
string join() statements throughout.
* viewvc-install
Don't use the 'compat' module any more.
Also, so some rearranging of non-critical bits.
* misc/: New directory.
* misc/py2html.py: Moved from 'lib/py2html.py'.
* misc/PyFontify.py: Moved from 'lib/PyFontify.py'.
* misc/elemx/: Moved from 'elemx/'.
* misc/tparse/: Moved from 'tparse/'.
* tools/make-release
Omit 'misc' directory from releases, too.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/trunk@2437 8cb11bc2-c004-0410-86c3-e597b4017df7
2010-09-03 20:49:52 +04:00
|
|
|
return calendar.timegm(t)
|
2008-11-11 17:17:41 +03:00
|
|
|
else:
|
|
|
|
return time.mktime(t[:8] + (-1,))
|
|
|
|
|
2008-11-14 17:53:48 +03:00
|
|
|
def connect(host, port, socket, user, passwd, db, charset = 'utf8'):
|
|
|
|
return MySQLdb.connect(
|
|
|
|
host = host,
|
|
|
|
port = port,
|
|
|
|
unix_socket = socket,
|
|
|
|
user = user,
|
|
|
|
passwd = passwd,
|
|
|
|
db = db,
|
|
|
|
charset = charset,
|
|
|
|
use_unicode = charset == 'utf8')
|