[Erp5-report] r12793 - in /spec/debian/unstable/erp5-zmysqlda: ./ ZMySQLDA/ ZMySQLDA/debian...

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Feb 15 18:29:15 CET 2007


Author: yusei
Date: Thu Feb 15 18:29:09 2007
New Revision: 12793

URL: http://svn.erp5.org?rev=12793&view=rev
Log:
added debian package and workspace.

Added:
    spec/debian/unstable/erp5-zmysqlda/
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA-2.0.9b2_release-unlocked-lock.patch
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.patch
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/CHANGES.txt
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DA.py
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DABase.py   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DEPENDENCIES.txt
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/Pool.py
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/README.txt
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/VERSION.txt
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/__init__.py
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/browse.dtml
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/build-stamp
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/connectionAdd.dtml
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/connectionEdit.dtml
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/db.py
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/changelog
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/compat
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/control
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/copyright
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/dzproduct
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patched/
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patched/01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patched/02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/00list
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/postinst
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/rules   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/DA.py
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/DABase.py
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/db.py
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/bin.gif   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/date.gif   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/datetime.gif   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/field.gif   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/float.gif   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/int.gif   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/stable.gif   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/table.gif   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/text.gif   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/time.gif   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/view.gif   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/what.gif   (with props)
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/patch-stamp
    spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/table_info.dtml
    spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1.diff.gz   (with props)
    spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1.dsc
    spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_all.deb   (with props)
    spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_i386.build
    spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_i386.changes
    spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2.orig.tar.gz   (with props)

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA-2.0.9b2_release-unlocked-lock.patch
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA-2.0.9b2_release-unlocked-lock.patch?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA-2.0.9b2_release-unlocked-lock.patch (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA-2.0.9b2_release-unlocked-lock.patch Thu Feb 15 18:29:09 2007
@@ -1,0 +1,43 @@
+diff -ru ZMySQLDA-2.0.9b2/ZMySQLDA/db.py ZMySQLDA/ZMySQLDA/db.py
+--- ZMySQLDA-2.0.9b2/ZMySQLDA/db.py 2002-03-14 21:24:54.000000000 +0100
++++ ZMySQLDA/ZMySQLDA/db.py  2003-04-28 10:29:38.000000000 +0200
+@@ -204,6 +204,7 @@
+             self._use_TM = 1
+         if self._use_TM:
+             self._tlock = allocate_lock()
++            self._tthread = None
+         self._lock = allocate_lock()
+ 
+     def __del__(self):
+@@ -365,7 +366,9 @@
+     def string_literal(self, s): return self.db.string_literal(s)
+ 
+     def _begin(self, *ignored):
++        from thread import get_ident
+         self._tlock.acquire()
++        self._tthread = get_ident()
+         try:
+             if self._transactions:
+                 self.db.query("BEGIN")
+@@ -380,6 +383,10 @@
+             raise
+         
+     def _finish(self, *ignored):
++        from thread import get_ident
++        if not self._tlock.locked() or self._tthread != get_ident():
++            LOG('ZMySQLDA', INFO, "ignoring _finish")
++            return
+         try:
+             try:
+                 if self._mysql_lock:
+@@ -396,6 +403,10 @@
+             self._tlock.release()
+ 
+     def _abort(self, *ignored):
++        from thread import get_ident
++        if not self._tlock.locked() or self._tthread != get_ident():
++            LOG('ZMySQLDA', INFO, "ignoring _abort")
++            return
+         try:
+             if self._mysql_lock:
+                 self.db.query("SELECT RELEASE_LOCK('%s')" % self._mysql_lock)

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.patch
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.patch?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.patch (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.patch Thu Feb 15 18:29:09 2007
@@ -1,0 +1,21 @@
+diff -ru ZMySQLDA-2.0.9b2/ZMySQLDA/db.py ZMySQLDA/ZMySQLDA/db.py
+--- ZMySQLDA-2.0.9b2/ZMySQLDA/db.py	2002-03-14 21:24:54.000000000 +0100
++++ ZMySQLDA/ZMySQLDA/db.py	2003-04-28 10:29:38.000000000 +0200
+@@ -87,6 +87,7 @@
+ __version__='$Revision: 1.20 $'[11:-2]
+ 
+ import _mysql
++import MySQLdb
+ from _mysql_exceptions import OperationalError, NotSupportedError
+ MySQLdb_version_required = (0,9,2)
+ 
+@@ -165,6 +166,9 @@
+     Database_Connection=_mysql.connect
+     Database_Error=_mysql.Error
+ 
++    def Database_Connection(self, *args, **kwargs):
++      return MySQLdb.connect(*args, **kwargs)
++
+     defs={
+         FIELD_TYPE.CHAR: "i", FIELD_TYPE.DATE: "d",
+         FIELD_TYPE.DATETIME: "d", FIELD_TYPE.DECIMAL: "n",

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/CHANGES.txt
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/CHANGES.txt?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/CHANGES.txt (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/CHANGES.txt Thu Feb 15 18:29:09 2007
@@ -1,0 +1,66 @@
+Z MySQL DA Releases
+
+  2.0.9
+
+    Allow the connection string to work without a specified database.
+
+    Wrap queries with a lock to prevent multiple threads from using
+    the connection simultaneously (this may or may not be happening).
+    If transactional, then there is an additional transaction lock,
+    acquired at the beginning of the transaction and released when
+    either finished or aborted.
+
+    A named lock can be specified by inserting *LOCKNAME at the start
+    of the connection string. This is probably best used only if you
+    must use non-transactional tables.
+
+    Some stuff will be logged as an error when bad things happen
+    during the transaction manager hooks.
+
+  2.0.8
+
+    More information about columns is available from the table
+    browser. This is primarily to support SQL Blender.
+
+    DECIMAL and NUMERIC columns now returned as floating-point numbers
+    (was string). This has also been fixed in MySQLdb-0.9.1, but the
+    fix is included here just in case you don't upgrade. Upgrading is
+    a good idea anyway, because some memory-related bugs are fixed,
+    particularly if using Zope 2.4 and Python 2.1.
+
+  2.0.7
+
+    Transaction support tweaked some more. A plus (+) or minus (-)
+    at the beginning of the connection string will force transactions
+    on or off respectively. By default, transactions are enabled if
+    the server supports them. Beware: If you are using non-TST tables
+    on a server that supports transactions, you should probably force
+    transactions off.
+
+  2.0.6
+
+    This version finally should have all the transaction support
+    working correctly. If your MySQL server supports transactions,
+    i.e. it has at least one transaction-safe table (TST) handler,
+    transactions are enabled automatically. If transactions are
+    enabled, rollbacks (aborts) fail if any non-TST tables were
+    modified.
+
+  2.0.5
+
+    Transactions don't really work right in this and prior versions.
+
+  2.0.4
+
+    INT columns, whether UNSIGNED or not, are returned as Python
+    long integers to avoid overflows. Python-1.5.2 adds an 'L' to
+    the end of long integers when printing. Later versions do not.
+    As a workaround, use affected columns with a format string,
+    i.e. '<dtml-var x fmt="%d">'.
+
+  2.0.0
+
+    This is the first version of the database adapter using MySQLdb
+    for Zope.  This database adapter is based on the Z DCOracle DA
+    version 2.2.0.
+

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DA.py
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DA.py?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DA.py (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DA.py Thu Feb 15 18:29:09 2007
@@ -1,0 +1,161 @@
+##############################################################################
+# 
+# Zope Public License (ZPL) Version 1.0
+# -------------------------------------
+# 
+# Copyright (c) Digital Creations.  All rights reserved.
+# 
+# This license has been certified as Open Source(tm).
+# 
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+# 
+# 1. Redistributions in source code must retain the above copyright
+#    notice, this list of conditions, and the following disclaimer.
+# 
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions, and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+# 
+# 3. Digital Creations requests that attribution be given to Zope
+#    in any manner possible. Zope includes a "Powered by Zope"
+#    button that is installed by default. While it is not a license
+#    violation to remove this button, it is requested that the
+#    attribution remain. A significant investment has been put
+#    into Zope, and this effort will continue if the Zope community
+#    continues to grow. This is one way to assure that growth.
+# 
+# 4. All advertising materials and documentation mentioning
+#    features derived from or use of this software must display
+#    the following acknowledgement:
+# 
+#      "This product includes software developed by Digital Creations
+#      for use in the Z Object Publishing Environment
+#      (http://www.zope.org/)."
+# 
+#    In the event that the product being advertised includes an
+#    intact Zope distribution (with copyright and license included)
+#    then this clause is waived.
+# 
+# 5. Names associated with Zope or Digital Creations must not be used to
+#    endorse or promote products derived from this software without
+#    prior written permission from Digital Creations.
+# 
+# 6. Modified redistributions of any form whatsoever must retain
+#    the following acknowledgment:
+# 
+#      "This product includes software developed by Digital Creations
+#      for use in the Z Object Publishing Environment
+#      (http://www.zope.org/)."
+# 
+#    Intact (re-)distributions of any official Zope release do not
+#    require an external acknowledgement.
+# 
+# 7. Modifications are encouraged but must be packaged separately as
+#    patches to official Zope releases.  Distributions that do not
+#    clearly separate the patches from the original work must be clearly
+#    labeled as unofficial distributions.  Modifications which do not
+#    carry the name Zope may be packaged in any form, as long as they
+#    conform to all of the clauses above.
+# 
+# 
+# Disclaimer
+# 
+#   THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
+#   EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+#   PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
+#   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+#   USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+#   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+#   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+#   OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+#   SUCH DAMAGE.
+# 
+# 
+# This software consists of contributions made by Digital Creations and
+# many individuals on behalf of Digital Creations.  Specific
+# attributions are listed in the accompanying credits file.
+# 
+##############################################################################
+database_type='MySQL'
+__doc__='''%s Database Connection
+
+$Id: DA.py,v 1.4 2001/08/09 20:16:36 adustman Exp $''' % database_type
+__version__='$Revision: 1.4 $'[11:-2]
+
+import os
+from db import DB
+import Shared.DC.ZRDB.Connection, sys, DABase
+from App.Dialogs import MessageDialog
+from Globals import HTMLFile
+from ImageFile import ImageFile
+from ExtensionClass import Base
+from DateTime import DateTime
+
+manage_addZMySQLConnectionForm=HTMLFile('connectionAdd',globals())
+
+def manage_addZMySQLConnection(self, id, title,
+                                connection_string,
+                                check=None, REQUEST=None):
+    """Add a DB connection to a folder"""
+    self._setObject(id, Connection(id, title, connection_string, check))
+    if REQUEST is not None: return self.manage_main(self,REQUEST)
+
+class Connection(DABase.Connection):
+    " "
+    database_type=database_type
+    id='%s_database_connection' % database_type
+    meta_type=title='Z %s Database Connection' % database_type
+    icon='misc_/Z%sDA/conn' % database_type
+
+    manage_properties=HTMLFile('connectionEdit', globals())
+
+    def factory(self): return DB
+
+    def connect(self,s):
+        try: self._v_database_connection.close()
+        except: pass
+        self._v_connected=''
+        DB=self.factory()
+	## No try. DO.
+	self._v_database_connection=DB(s)
+        self._v_connected=DateTime()
+        return self
+
+    def sql_quote__(self, v, escapes={}):
+        return self._v_database_connection.string_literal(v)
+
+
+classes=('DA.Connection',)
+
+meta_types=(
+    {'name':'Z %s Database Connection' % database_type,
+     'action':'manage_addZ%sConnectionForm' % database_type,
+     },
+    )
+
+folder_methods={
+    'manage_addZMySQLConnection':
+    manage_addZMySQLConnection,
+    'manage_addZMySQLConnectionForm':
+    manage_addZMySQLConnectionForm,
+    }
+
+__ac_permissions__=(
+    ('Add Z MySQL Database Connections',
+     ('manage_addZMySQLConnectionForm',
+      'manage_addZMySQLConnection')),
+    )
+
+misc_={'conn': ImageFile(
+    os.path.join('Shared','DC','ZRDB','www','DBAdapterFolder_icon.gif'))}
+
+for icon in ('table', 'view', 'stable', 'what',
+	     'field', 'text','bin','int','float',
+	     'date','time','datetime'):
+    misc_[icon]=ImageFile(os.path.join('icons','%s.gif') % icon, globals())

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DABase.py
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DABase.py?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DABase.py (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DABase.py Thu Feb 15 18:29:09 2007
@@ -1,0 +1,250 @@
+##############################################################################
+# 
+# Zope Public License (ZPL) Version 1.0
+# -------------------------------------
+# 
+# Copyright (c) Digital Creations.  All rights reserved.
+# 
+# This license has been certified as Open Source(tm).
+# 
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+# 
+# 1. Redistributions in source code must retain the above copyright
+#    notice, this list of conditions, and the following disclaimer.
+# 
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions, and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+# 
+# 3. Digital Creations requests that attribution be given to Zope
+#    in any manner possible. Zope includes a "Powered by Zope"
+#    button that is installed by default. While it is not a license
+#    violation to remove this button, it is requested that the
+#    attribution remain. A significant investment has been put
+#    into Zope, and this effort will continue if the Zope community
+#    continues to grow. This is one way to assure that growth.
+# 
+# 4. All advertising materials and documentation mentioning
+#    features derived from or use of this software must display
+#    the following acknowledgement:
+# 
+#      "This product includes software developed by Digital Creations
+#      for use in the Z Object Publishing Environment
+#      (http://www.zope.org/)."
+# 
+#    In the event that the product being advertised includes an
+#    intact Zope distribution (with copyright and license included)
+#    then this clause is waived.
+# 
+# 5. Names associated with Zope or Digital Creations must not be used to
+#    endorse or promote products derived from this software without
+#    prior written permission from Digital Creations.
+# 
+# 6. Modified redistributions of any form whatsoever must retain
+#    the following acknowledgment:
+# 
+#      "This product includes software developed by Digital Creations
+#      for use in the Z Object Publishing Environment
+#      (http://www.zope.org/)."
+# 
+#    Intact (re-)distributions of any official Zope release do not
+#    require an external acknowledgement.
+# 
+# 7. Modifications are encouraged but must be packaged separately as
+#    patches to official Zope releases.  Distributions that do not
+#    clearly separate the patches from the original work must be clearly
+#    labeled as unofficial distributions.  Modifications which do not
+#    carry the name Zope may be packaged in any form, as long as they
+#    conform to all of the clauses above.
+# 
+# 
+# Disclaimer
+# 
+#   THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
+#   EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+#   PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
+#   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+#   USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+#   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+#   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+#   OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+#   SUCH DAMAGE.
+# 
+# 
+# This software consists of contributions made by Digital Creations and
+# many individuals on behalf of Digital Creations.  Specific
+# attributions are listed in the accompanying credits file.
+# 
+##############################################################################
+__doc__='''Database Connection
+
+$Id: DABase.py,v 1.5 2001/08/17 02:17:38 adustman Exp $'''
+__version__='$Revision: 1.5 $'[11:-2]
+
+import Shared.DC.ZRDB.Connection, sys
+from Globals import HTMLFile
+from ImageFile import ImageFile
+from ExtensionClass import Base
+import Acquisition
+
+class Connection(Shared.DC.ZRDB.Connection.Connection):
+    _isAnSQLConnection=1
+
+    manage_options=Shared.DC.ZRDB.Connection.Connection.manage_options+(
+        {'label': 'Browse', 'action':'manage_browse'},
+        # {'label': 'Design', 'action':'manage_tables'},
+        )
+
+    manage_tables=HTMLFile('tables',globals())
+    manage_browse=HTMLFile('browse',globals())
+
+    info=None
+        
+    def tpValues(self):
+        #if hasattr(self, '_v_tpValues'): return self._v_tpValues
+        r=[]
+        # self._v_tables=tables=TableBrowserCollection()
+        #tables=tables.__dict__
+        c=self._v_database_connection
+        try:
+            for d in c.tables(rdb=0):
+                try:
+                    name=d['TABLE_NAME']
+                    b=TableBrowser()
+                    b.__name__=name
+                    b._d=d
+                    b._c=c
+                    #b._columns=c.columns(name)
+                    b.icon=table_icons.get(d['TABLE_TYPE'],'text')
+                    r.append(b)
+                    # tables[name]=b
+                except:
+                    # print d['TABLE_NAME'], sys.exc_type, sys.exc_value
+                    pass
+
+        finally: pass #print sys.exc_type, sys.exc_value
+        #self._v_tpValues=r
+        return r
+
+    def __getitem__(self, name):
+        if name=='tableNamed':
+            if not hasattr(self, '_v_tables'): self.tpValues()
+            return self._v_tables.__of__(self)
+        raise KeyError, name
+
+    def manage_wizard(self, tables):
+        " "
+
+    def manage_join(self, tables, select_cols, join_cols, REQUEST=None):
+        """Create an SQL join"""
+
+    def manage_insert(self, table, cols, REQUEST=None):
+        """Create an SQL insert"""
+
+    def manage_update(self, table, keys, cols, REQUEST=None):
+        """Create an SQL update"""
+
+class TableBrowserCollection(Acquisition.Implicit):
+    "Helper class for accessing tables via URLs"
+
+class Browser(Base):
+    def __getattr__(self, name):
+        try: return self._d[name]
+        except KeyError: raise AttributeError, name
+
+class values:
+
+    def len(self): return 1
+
+    def __getitem__(self, i):
+        try: return self._d[i]
+        except AttributeError: pass
+        self._d=self._f()
+        return self._d[i]
+
+class TableBrowser(Browser, Acquisition.Implicit):
+    icon='what'
+    Description=check=''
+    info=HTMLFile('table_info',globals())
+    menu=HTMLFile('table_menu',globals())
+
+    def tpValues(self):
+        v=values()
+        v._f=self.tpValues_
+        return v
+
+    def tpValues_(self):
+        r=[]
+        tname=self.__name__
+        for d in self._c.columns(tname):
+            b=ColumnBrowser()
+            b._d=d
+            b.icon=d['Icon']
+            b.TABLE_NAME=tname
+            r.append(b)
+        return r
+            
+    def tpId(self): return self._d['TABLE_NAME']
+    def tpURL(self): return "Table/%s" % self._d['TABLE_NAME']
+    def Name(self): return self._d['TABLE_NAME']
+    def Type(self): return self._d['TABLE_TYPE']
+
+    manage_designInput=HTMLFile('designInput',globals())
+    def manage_buildInput(self, id, source, default, REQUEST=None):
+        "Create a database method for an input form"
+        args=[]
+        values=[]
+        names=[]
+        columns=self._columns
+        for i in range(len(source)):
+            s=source[i]
+            if s=='Null': continue
+            c=columns[i]
+            d=default[i]
+            t=c['Type']
+            n=c['Name']
+            names.append(n)
+            if s=='Argument':
+                values.append("<!--#sql-value %s type=%s-->'" %
+                              (n, vartype(t)))
+                a='%s%s' % (n, boboType(t))
+                if d: a="%s=%s" % (a,d)
+                args.append(a)
+            elif s=='Property':
+                values.append("<!--#sql-value %s type=%s-->'" %
+                              (n, vartype(t)))
+            else:
+                if isStringType(t):
+                    if find(d,"\'") >= 0: d=join(split(d,"\'"),"''")
+                    values.append("'%s'" % d)
+                elif d:
+                    values.append(str(d))
+                else:
+                    raise ValueError, (
+                        'no default was given for <em>%s</em>' % n)
+
+            
+            
+
+class ColumnBrowser(Browser):
+    icon='field'
+
+    def check(self):
+        return ('\t<input type=checkbox name="%s.%s">' %
+                (self.TABLE_NAME, self._d['Name']))
+    def tpId(self): return self._d['Name']
+    def tpURL(self): return "Column/%s" % self._d['Name']
+    def Description(self): return " %s" % self._d['Description']
+
+table_icons={
+    'TABLE': 'table',
+    'VIEW':'view',
+    'SYSTEM_TABLE': 'stable',
+    }
+

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DABase.py
------------------------------------------------------------------------------
    svn:executable = 

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DEPENDENCIES.txt
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DEPENDENCIES.txt?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DEPENDENCIES.txt (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/DEPENDENCIES.txt Thu Feb 15 18:29:09 2007
@@ -1,0 +1,4 @@
+* MySQL-python-0.9.2 or newer
+
+* Zope-2.3.0 or newer
+

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/Pool.py
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/Pool.py?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/Pool.py (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/Pool.py Thu Feb 15 18:29:09 2007
@@ -1,0 +1,39 @@
+from Queue import Queue, Full, Empty
+
+class Pool(Queue):
+
+    """Manage a fixed-size pool of reusable, identical objects."""
+    
+    def __init__(self, constructor, poolsize=5):
+        Queue.__init__(self, poolsize)
+        self.constructor = constructor
+
+    def get(self, block=1):
+        """Get an object from the pool or a new one if empty."""
+        try:
+            return self.empty() and self.constructor() or Queue.get(self, block)
+        except Empty:
+            return self.constructor()
+        
+    def put(self, obj, block=1):
+        """Put an object into the pool if it is not full. The caller must
+        not use the object after this."""
+        try:
+            return self.full() and None or Queue.put(self, obj, block)
+        except Full:
+            pass
+
+
+class Constructor:
+
+    """Returns a constructor that returns apply(function, args, kwargs)
+    when called."""
+
+    def __init__(self, function, *args, **kwargs):
+        self.f = function
+        self.args = args
+        self.kwargs = kwargs
+
+    def __call__(self):
+        return apply(self.f, self.args, self.kwargs)
+

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/README.txt
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/README.txt?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/README.txt (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/README.txt Thu Feb 15 18:29:09 2007
@@ -1,0 +1,43 @@
+Z MySQL DA
+
+  This is the Z MySQL database adapter product for the 
+  Z Object Publishing Environment.
+  
+  ** NOTE **
+
+  Note that the Z MySQL database adapter is compatible with MySQL
+  versions 3.22 and later (including MySQL 3.23).
+  
+  ** IMPORTANT **
+  
+  This product is distributed as a NON-BINARY release!
+  
+  This product requires compiled Python extensions that are
+  NOT included as a binary with this release. You must build
+  or install the required extensions using the instructions 
+  below before the product will work properly!
+    
+  Installation
+
+    The Z MySQL database adapter uses the MySQLdb package.  
+    This must be installed before you can use the Z MySQL DA.
+    You can find this at::
+
+        http://sourceforge.net/projects/mysql-python
+
+    You need at least version 0.9.0. If you are compiling this
+    yourself, you must use the same python executable as your
+    Zope installation uses, otherwise Zope will not find it.
+
+  Connection Strings
+  
+    The connection string used for Z MySQL Database Connection
+    are of the form::
+
+       database[@host[:port]] [user [password [unix_socket]]]
+
+    or typically just::
+
+       database user password
+
+    to use the default server.

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/VERSION.txt
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/VERSION.txt?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/VERSION.txt (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/VERSION.txt Thu Feb 15 18:29:09 2007
@@ -1,0 +1,1 @@
+ZMySQLDA 2.0.9

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/__init__.py
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/__init__.py?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/__init__.py (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/__init__.py Thu Feb 15 18:29:09 2007
@@ -1,0 +1,107 @@
+##############################################################################
+# 
+# Zope Public License (ZPL) Version 1.0
+# -------------------------------------
+# 
+# Copyright (c) Digital Creations.  All rights reserved.
+# 
+# This license has been certified as Open Source(tm).
+# 
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+# 
+# 1. Redistributions in source code must retain the above copyright
+#    notice, this list of conditions, and the following disclaimer.
+# 
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions, and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+# 
+# 3. Digital Creations requests that attribution be given to Zope
+#    in any manner possible. Zope includes a "Powered by Zope"
+#    button that is installed by default. While it is not a license
+#    violation to remove this button, it is requested that the
+#    attribution remain. A significant investment has been put
+#    into Zope, and this effort will continue if the Zope community
+#    continues to grow. This is one way to assure that growth.
+# 
+# 4. All advertising materials and documentation mentioning
+#    features derived from or use of this software must display
+#    the following acknowledgement:
+# 
+#      "This product includes software developed by Digital Creations
+#      for use in the Z Object Publishing Environment
+#      (http://www.zope.org/)."
+# 
+#    In the event that the product being advertised includes an
+#    intact Zope distribution (with copyright and license included)
+#    then this clause is waived.
+# 
+# 5. Names associated with Zope or Digital Creations must not be used to
+#    endorse or promote products derived from this software without
+#    prior written permission from Digital Creations.
+# 
+# 6. Modified redistributions of any form whatsoever must retain
+#    the following acknowledgment:
+# 
+#      "This product includes software developed by Digital Creations
+#      for use in the Z Object Publishing Environment
+#      (http://www.zope.org/)."
+# 
+#    Intact (re-)distributions of any official Zope release do not
+#    require an external acknowledgement.
+# 
+# 7. Modifications are encouraged but must be packaged separately as
+#    patches to official Zope releases.  Distributions that do not
+#    clearly separate the patches from the original work must be clearly
+#    labeled as unofficial distributions.  Modifications which do not
+#    carry the name Zope may be packaged in any form, as long as they
+#    conform to all of the clauses above.
+# 
+# 
+# Disclaimer
+# 
+#   THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
+#   EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+#   PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
+#   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+#   USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+#   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+#   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+#   OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+#   SUCH DAMAGE.
+# 
+# 
+# This software consists of contributions made by Digital Creations and
+# many individuals on behalf of Digital Creations.  Specific
+# attributions are listed in the accompanying credits file.
+# 
+##############################################################################
+__doc__='''Generic Database Adapter Package Registration
+
+$Id: __init__.py,v 1.4 2001/08/17 02:17:38 adustman Exp $'''
+__version__='$Revision: 1.4 $'[11:-2]
+
+import sys, string
+import DA
+
+methods=DA.folder_methods
+misc_=DA.misc_
+
+def initialize(context):
+
+    context.registerClass(
+        DA.Connection,
+        permission='Add Z MySQL Database Connections',
+        constructors=(DA.manage_addZMySQLConnectionForm,
+                      DA.manage_addZMySQLConnection),
+    )
+
+    context.registerHelp()
+    context.registerHelpTitle('ZMySQLDA')
+

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/browse.dtml
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/browse.dtml?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/browse.dtml (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/browse.dtml Thu Feb 15 18:29:09 2007
@@ -1,0 +1,12 @@
+<html>
+  <head><title><!--#var title_or_id--> tables</title></head>
+  <body bgcolor="#FFFFFF" link="#000099" vlink="#555555" alink="#77003B">
+    <!--#var manage_tabs-->
+    <!--#tree header=info-->
+      <IMG SRC="<!--#var SCRIPT_NAME-->/misc_/ZMySQLDA/<!--#var icon-->"
+       ALT="<!--#var Type-->" BORDER="0">
+      <!--#var Name--><!--#var Description-->
+    <!--#/tree-->
+
+  </body>
+</html>

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/build-stamp
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/build-stamp?rev=12793&view=auto
==============================================================================
    (empty)

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/connectionAdd.dtml
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/connectionAdd.dtml?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/connectionAdd.dtml (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/connectionAdd.dtml Thu Feb 15 18:29:09 2007
@@ -1,0 +1,92 @@
+<html>
+  <head><title>Add Z MySQL Database Connection</title></head>
+  <body bgcolor="#FFFFFF" link="#000099" vlink="#555555" alink="#77003B">
+  
+    <h2>Add Z MySQL Database Connection</h2>
+    
+    <form action="manage_addZMySQLConnection" method="POST">
+      <table cellspacing="2">
+	<tr>
+	  <th align="LEFT" valign="TOP">Id</th>
+	  <td align="LEFT" valign="TOP">
+            <input type="TEXT" name="id" size="40"
+                value="MySQL_database_connection">
+          </td>
+	</tr>
+	<tr>
+	  <th align="LEFT" valign="TOP"><em>Title</em></th>
+	  <td align="LEFT" valign="TOP">
+            <input type="TEXT" name="title" size="40"
+                value="Z MySQL Database Connection">
+          </td>
+	</tr>
+	<tr>
+	  <th align="LEFT" valign="TOP">
+             Enter a Database Connection String
+	     <a href="#1"><sup>1</sup></a></th>
+	  <td align="LEFT" valign="TOP">
+            <input type="TEXT" name="connection_string" size="40">
+          </td>
+	</tr>
+	<tr>
+	  <th align="LEFT" valign="TOP">Connect immediately</th>
+	  <td align="LEFT" valign="TOP">
+            <input name="check" type="CHECKBOX" value="YES" CHECKED>
+          </td>
+	</tr>
+	<tr>
+	  <td></td>
+	  <td><br><input type="SUBMIT" value="Add"></td>
+	</tr>
+      </table>
+    </form>
+
+
+
+<dt><a hname="1"><sup>1</sup></a> Connection Strings</dt>
+<dd>
+<p>
+    The connection string used for Z MySQL Database Connection
+    is of the form:
+<pre>
+    [*lock] [+/-][database][@host[:port]] [user [password [unix_socket]]]
+</pre>
+    or typically:
+<pre>
+       database user password
+</pre>
+    to use a MySQL server on localhost via the standard UNIX socket.
+    Only specify host if the server is on a remote system. You can
+    use a non-standard port, if necessary. Hint: To use a non-standard
+    port on the local system, use 127.0.0.1 for the host instead of
+    localhost.
+<p>
+    Either a database or a host or both must be specified.
+<p>
+    If the UNIX socket is in a non-standard location, you can specify
+    the full path to it after the password.
+<p>
+    A '-' in front of the database tells ZMySQLDA to not use Zope's
+    Transaction Manager, even if the server supports transactions. A
+    '+' in front of the database tells ZMySQLDA that it must use
+    transactions; an exception will be raised if they are not
+    supported by the server. If neither '-' or '+' are present, then
+    transactions will be enabled if the server supports them.  If you
+    are using non-transaction safe tables (TSTs) on a server that
+    supports TSTs, use '-'. If you require transactions, use '+'. If
+    you aren't sure, don't use either.
+<p>
+    *<em>lock</em> at the begining of the connection string means to
+    psuedo-transactional. When the transaction begins, it will acquire
+    a lock on the server named <em>lock</em> (i.e. MYLOCK). When the
+    transaction commits, the lock will be released. If the transaction
+    is aborted and restarted, which can happen due to a ConflictError,
+    you'll get an error in the logs, and inconsistent data. In this
+    respect, it's equivalent to transactions turned off.
+<p>
+    Transactions are highly recommended. Using a named lock in
+    conjunctions with transactions is probably pointless.  
+</dd></dl>
+
+  </body>
+</html>

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/connectionEdit.dtml
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/connectionEdit.dtml?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/connectionEdit.dtml (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/connectionEdit.dtml Thu Feb 15 18:29:09 2007
@@ -1,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html lang="en">
+  <head><title>Edit <dtml-var title_or_id></title></head>
+  <body bgcolor="#FFFFFF" link="#000099" vlink="#555555" alink="#77003B">
+    <dtml-var manage_tabs>
+    
+    <h2>Edit <dtml-var title_or_id></h2>
+    
+    <form action="manage_edit" method="POST">
+      <table cellspacing="2">
+
+        <tr>
+	  <th align="LEFT" valign="TOP">Id</th>
+	  <td align="LEFT" valign="TOP"><dtml-var id></td>
+	</tr>
+
+	<tr>
+	  <th align="LEFT" valign="TOP"><em>Title</em></th>
+	  <td align="LEFT" valign="TOP">
+	    <input type="TEXT" name="title" size="40"
+                   value="<dtml-var title html_quote>">
+	  </td>
+	</tr>
+
+	<tr>
+	  <th align="LEFT" valign="TOP">Database Connection String</th>
+	  <td align="LEFT" valign="TOP">
+	    <input type="TEXT" name="connection_string" size="40"
+                   value="<dtml-var connection_string html_quote>">
+	  </td>
+	</tr>
+	<tr>
+	  <th align="LEFT" valign="TOP">Connect immediately</th>
+	  <td align="LEFT" valign="TOP">
+            <input name="check" type="CHECKBOX" value="YES" CHECKED>
+          </td>
+	</tr>
+
+        <tr>
+	  <td></td>
+	  <td><br><input type="SUBMIT" value="Change"></td>
+	</tr>
+
+      </table>
+    </form>
+
+  </body>
+</html>

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/db.py
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/db.py?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/db.py (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/db.py Thu Feb 15 18:29:09 2007
@@ -1,0 +1,420 @@
+##############################################################################
+# 
+# Zope Public License (ZPL) Version 1.0
+# -------------------------------------
+# 
+# Copyright (c) Digital Creations.  All rights reserved.
+# 
+# This license has been certified as Open Source(tm).
+# 
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+# 
+# 1. Redistributions in source code must retain the above copyright
+#    notice, this list of conditions, and the following disclaimer.
+# 
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions, and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+# 
+# 3. Digital Creations requests that attribution be given to Zope
+#    in any manner possible. Zope includes a "Powered by Zope"
+#    button that is installed by default. While it is not a license
+#    violation to remove this button, it is requested that the
+#    attribution remain. A significant investment has been put
+#    into Zope, and this effort will continue if the Zope community
+#    continues to grow. This is one way to assure that growth.
+# 
+# 4. All advertising materials and documentation mentioning
+#    features derived from or use of this software must display
+#    the following acknowledgement:
+# 
+#      "This product includes software developed by Digital Creations
+#      for use in the Z Object Publishing Environment
+#      (http://www.zope.org/)."
+# 
+#    In the event that the product being advertised includes an
+#    intact Zope distribution (with copyright and license included)
+#    then this clause is waived.
+# 
+# 5. Names associated with Zope or Digital Creations must not be used to
+#    endorse or promote products derived from this software without
+#    prior written permission from Digital Creations.
+# 
+# 6. Modified redistributions of any form whatsoever must retain
+#    the following acknowledgment:
+# 
+#      "This product includes software developed by Digital Creations
+#      for use in the Z Object Publishing Environment
+#      (http://www.zope.org/)."
+# 
+#    Intact (re-)distributions of any official Zope release do not
+#    require an external acknowledgement.
+# 
+# 7. Modifications are encouraged but must be packaged separately as
+#    patches to official Zope releases.  Distributions that do not
+#    clearly separate the patches from the original work must be clearly
+#    labeled as unofficial distributions.  Modifications which do not
+#    carry the name Zope may be packaged in any form, as long as they
+#    conform to all of the clauses above.
+# 
+# 
+# Disclaimer
+# 
+#   THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
+#   EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+#   PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
+#   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+#   USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+#   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+#   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+#   OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+#   SUCH DAMAGE.
+# 
+# 
+# This software consists of contributions made by Digital Creations and
+# many individuals on behalf of Digital Creations.  Specific
+# attributions are listed in the accompanying credits file.
+# 
+##############################################################################
+
+'''$Id: db.py,v 1.20 2002/03/14 20:24:54 adustman Exp $'''
+__version__='$Revision: 1.20 $'[11:-2]
+
+import _mysql
+import MySQLdb
+from _mysql_exceptions import OperationalError, NotSupportedError
+MySQLdb_version_required = (0,9,2)
+
+_v = getattr(_mysql, 'version_info', (0,0,0))
+if _v < MySQLdb_version_required:
+    raise NotSupportedError, \
+	"ZMySQLDA requires at least MySQLdb %s, %s found" % \
+	(MySQLdb_version_required, _v)
+
+from MySQLdb.converters import conversions
+from MySQLdb.constants import FIELD_TYPE, CR, CLIENT
+from Shared.DC.ZRDB.TM import TM
+from DateTime import DateTime
+from zLOG import LOG, ERROR, INFO
+
+import string, sys
+from string import strip, split, find, upper, rfind
+from time import time
+
+hosed_connection = (
+    CR.SERVER_GONE_ERROR,
+    CR.SERVER_LOST
+    )
+
+key_types = {
+    "PRI": "PRIMARY KEY",
+    "MUL": "INDEX",
+    "UNI": "UNIQUE",
+    }
+
+field_icons = "bin", "date", "datetime", "float", "int", "text", "time"
+
+icon_xlate = {
+    "varchar": "text", "char": "text",
+    "enum": "what", "set": "what",
+    "double": "float", "numeric": "float",
+    "blob": "bin", "mediumblob": "bin", "longblob": "bin",
+    "tinytext": "text", "mediumtext": "text",
+    "longtext": "text", "timestamp": "datetime",
+    "decimal": "float", "smallint": "int",
+    "mediumint": "int", "bigint": "int",
+    }
+
+type_xlate = {
+    "double": "float", "numeric": "float",
+    "decimal": "float", "smallint": "int",
+    "mediumint": "int", "bigint": "int",
+    "int": "int", "float": "float",
+    "timestamp": "datetime", "datetime": "datetime",
+    "time": "datetime",
+    }
+    
+def _mysql_timestamp_converter(s):
+	if len(s) < 14:
+		s = s + "0"*(14-len(s))
+        parts = map(int, (s[:4],s[4:6],s[6:8],
+                          s[8:10],s[10:12],s[12:14]))
+	return DateTime("%04d-%02d-%02d %02d:%02d:%02d" % tuple(parts))
+
+def DateTime_or_None(s):
+    try: return DateTime(s)
+    except: return None
+
+def int_or_long(s):
+    try: return int(s)
+    except: return long(s)
+
+"""Locking strategy:
+
+The minimum that must be done is a mutex around a query, store_result
+sequence. When using transactions, the mutex must go around the
+entire transaction."""
+
+class DB(TM):
+
+    Database_Connection=_mysql.connect
+    Database_Error=_mysql.Error
+
+    def Database_Connection(self, *args, **kwargs):
+      return MySQLdb.connect(*args, **kwargs)
+
+    defs={
+        FIELD_TYPE.CHAR: "i", FIELD_TYPE.DATE: "d",
+        FIELD_TYPE.DATETIME: "d", FIELD_TYPE.DECIMAL: "n",
+        FIELD_TYPE.DOUBLE: "n", FIELD_TYPE.FLOAT: "n", FIELD_TYPE.INT24: "i",
+        FIELD_TYPE.LONG: "i", FIELD_TYPE.LONGLONG: "l",
+        FIELD_TYPE.SHORT: "i", FIELD_TYPE.TIMESTAMP: "d",
+        FIELD_TYPE.TINY: "i", FIELD_TYPE.YEAR: "i",
+        }
+
+    conv=conversions.copy()
+    conv[FIELD_TYPE.LONG] = int_or_long
+    conv[FIELD_TYPE.DATETIME] = DateTime_or_None
+    conv[FIELD_TYPE.DATE] = DateTime_or_None
+    conv[FIELD_TYPE.DECIMAL] = float
+    del conv[FIELD_TYPE.TIME]
+
+    _p_oid=_p_changed=_registered=None
+
+    def __init__(self,connection):
+        from thread import allocate_lock
+        self.connection=connection
+        self.kwargs = kwargs = self._parse_connection_string(connection)
+        self.db=apply(self.Database_Connection, (), kwargs)
+        LOG("ZMySQLDA", INFO, "Opened new connection %s: %s" \
+            % (self.db, connection)) 
+        transactional = self.db.server_capabilities & CLIENT.TRANSACTIONS
+        if self._try_transactions == '-':
+            transactional = 0
+        elif not transactional and self._try_transactions == '+':
+            raise NotSupportedError, "transactions not supported by this server"
+        self._use_TM = self._transactions = transactional
+        if self._mysql_lock:
+            self._use_TM = 1
+        if self._use_TM:
+            self._tlock = allocate_lock()
+            self._tthread = None
+        self._lock = allocate_lock()
+
+    def __del__(self):
+        LOG("ZMySQLDA", INFO, "Closing connection %s: %s" \
+            % (self.db, self.connection))
+        self.db.close()
+        self.db = None
+        
+    def _parse_connection_string(self, connection):
+        kwargs = {'conv': self.conv}
+        items = split(connection)
+        self._use_TM = None
+        if not items: return kwargs
+        lockreq, items = items[0], items[1:]
+        if lockreq[0] == "*":
+            self._mysql_lock = lockreq[1:]
+            db_host, items = items[0], items[1:]
+            self._use_TM = 1
+        else:
+            self._mysql_lock = None
+            db_host = lockreq
+        if '@' in db_host:
+            db, host = split(db_host,'@',1)
+            kwargs['db'] = db
+            if ':' in host:
+                host, port = split(host,':',1)
+                kwargs['port'] = int(port)
+            kwargs['host'] = host
+        else:
+            kwargs['db'] = db_host
+        if kwargs['db'] and kwargs['db'][0] in ('+', '-'):
+            self._try_transactions = kwargs['db'][0]
+            kwargs['db'] = kwargs['db'][1:]
+        else:
+            self._try_transactions = None
+        if not kwargs['db']:
+            del kwargs['db']
+        if not items: return kwargs
+        kwargs['user'], items = items[0], items[1:]
+        if not items: return kwargs
+        kwargs['passwd'], items = items[0], items[1:]
+        if not items: return kwargs
+        kwargs['unix_socket'], items = items[0], items[1:]
+        return kwargs
+        
+    def tables(self, rdb=0,
+               _care=('TABLE', 'VIEW')):
+        r=[]
+        a=r.append
+        self._lock.acquire()
+        try:
+            self.db.query("SHOW TABLES")
+            result = self.db.store_result()
+        finally:
+            self._lock.release()
+        row = result.fetch_row(1)
+	while row:
+            a({'TABLE_NAME': row[0][0], 'TABLE_TYPE': 'TABLE'})
+            row = result.fetch_row(1)
+        return r
+
+    def columns(self, table_name):
+        from string import join
+        try:
+            try:
+                self._lock.acquire()
+                # Field, Type, Null, Key, Default, Extra
+                self.db.query('SHOW COLUMNS FROM %s' % table_name)
+                c=self.db.store_result()
+            finally:
+                self._lock.release()
+        except:
+            return ()
+        r=[]
+        for Field, Type, Null, Key, Default, Extra in c.fetch_row(0):
+            info = {}
+            field_default = Default and "DEFAULT %s"%Default or ''
+            if Default: info['Default'] = Default
+            if '(' in Type:
+                end = rfind(Type,')')
+                short_type, size = split(Type[:end],'(',1)
+                if short_type not in ('set','enum'):
+                    if ',' in size:
+                        info['Scale'], info['Precision'] = \
+                                       map(int, split(size,',',1))
+                    else:
+                        info['Scale'] = int(size)
+            else:
+                short_type = Type
+            if short_type in field_icons:
+                info['Icon'] = short_type
+            else:
+                info['Icon'] = icon_xlate.get(short_type, "what")
+            info['Name'] = Field
+            info['Type'] = type_xlate.get(short_type,'string')
+            info['Extra'] = Extra,
+            info['Description'] = join([Type, field_default, Extra or '',
+                                        key_types.get(Key, Key or ''),
+                                        Null != 'YES' and 'NOT NULL' or '']),
+            info['Nullable'] = (Null == 'YES') and 1 or 0
+            if Key:
+                info['Index'] = 1
+            if Key == 'PRI':
+                info['PrimaryKey'] = 1
+                info['Unique'] = 1
+            elif Key == 'UNI':
+                info['Unique'] = 1
+            r.append(info)
+        return r
+
+    def query(self,query_string, max_rows=1000):
+        self._use_TM and self._register()
+        desc=None
+        result=()
+        db=self.db
+        try:
+            try:
+                self._lock.acquire()
+                for qs in filter(None, map(strip,split(query_string, '\0'))):
+                    qtype = upper(split(qs, None, 1)[0])
+                    if qtype == "SELECT" and max_rows:
+                        qs = "%s LIMIT %d" % (qs,max_rows)
+                        r=0
+                    db.query(qs)
+                    c=db.store_result()
+                    if desc is not None:
+                        if c and (c.describe() != desc):
+                            raise 'Query Error', (
+                                'Multiple select schema are not allowed'
+                                )
+                    if c:
+                        desc=c.describe()
+                        result=c.fetch_row(max_rows)
+                    else:
+                        desc=None
+            finally:
+                self._lock.release()
+                    
+        except OperationalError, m:
+            if m[0] not in hosed_connection: raise
+            # Hm. maybe the db is hosed.  Let's restart it.
+	    db=self.db=apply(self.Database_Connection, (), self.kwargs)
+            return self.query(query_string, max_rows)
+
+        if desc is None: return (),()
+
+        items=[]
+        func=items.append
+        defs=self.defs
+        for d in desc:
+            item={'name': d[0],
+                  'type': defs.get(d[1],"t"),
+                  'width': d[2],
+                  'null': d[6]
+                 }
+            func(item)
+        return items, result
+
+    def string_literal(self, s): return self.db.string_literal(s)
+
+    def _begin(self, *ignored):
+        from thread import get_ident
+        self._tlock.acquire()
+        self._tthread = get_ident()
+        try:
+            if self._transactions:
+                self.db.query("BEGIN")
+                self.db.store_result()
+            if self._mysql_lock:
+                self.db.query("SELECT GET_LOCK('%s',0)" % self._mysql_lock)
+                self.db.store_result()
+        except:
+            LOG('ZMySQLDA', ERROR, "exception during _begin",
+                error=sys.exc_info())
+            self._tlock.release()
+            raise
+        
+    def _finish(self, *ignored):
+        from thread import get_ident
+        if not self._tlock.locked() or self._tthread != get_ident():
+            LOG('ZMySQLDA', INFO, "ignoring _finish")
+            return
+        try:
+            try:
+                if self._mysql_lock:
+                    self.db.query("SELECT RELEASE_LOCK('%s')" % self._mysql_lock)
+                    self.db.store_result()
+                if self._transactions:
+                    self.db.query("COMMIT")
+                self.db.store_result()
+            except:
+                LOG('ZMySQLDA', ERROR, "exception during _finish",
+                    error=sys.exc_info())
+                raise
+        finally:
+            self._tlock.release()
+
+    def _abort(self, *ignored):
+        from thread import get_ident
+        if not self._tlock.locked() or self._tthread != get_ident():
+            LOG('ZMySQLDA', INFO, "ignoring _abort")
+            return
+        try:
+            if self._mysql_lock:
+                self.db.query("SELECT RELEASE_LOCK('%s')" % self._mysql_lock)
+                self.db.store_result()
+            if self._transactions:
+                self.db.query("ROLLBACK")
+                self.db.store_result()
+            else:
+                LOG('ZMySQLDA', ERROR, "aborting when non-transactional")
+        finally:
+            self._tlock.release()

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/changelog
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/changelog?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/changelog (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/changelog Thu Feb 15 18:29:09 2007
@@ -1,0 +1,6 @@
+erp5-zmysqlda (2.0.9b2-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Yusei TAHARA <yusei at domen.cx>  Wed, 14 Feb 2007 03:27:56 +0900
+

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/compat
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/compat?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/compat (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/compat Thu Feb 15 18:29:09 2007
@@ -1,0 +1,1 @@
+5

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/control
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/control?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/control (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/control Thu Feb 15 18:29:09 2007
@@ -1,0 +1,13 @@
+Source: erp5-zmysqlda
+Section: web
+Priority: optional
+Maintainer: Yusei TAHARA
+Build-Depends: debhelper (>= 5.0)
+Build-Depends-Indep: zope-debhelper (>= 0.3.6)
+Standards-Version: 3.7.2
+
+Package: erp5-zmysqlda
+Architecture: all
+Depends: erp5-zope
+Description: A Zope connector to Mysql
+ ZMySQLDA allows to quickly connect to Mysql with Zope.

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/copyright
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/copyright?rev=12793&view=auto
==============================================================================
    (empty)

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/dzproduct
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/dzproduct?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/dzproduct (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/dzproduct Thu Feb 15 18:29:09 2007
@@ -1,0 +1,3 @@
+Name: ZMySQLDA
+Package: erp5-zmysqlda
+ZopeVersions: >= 2.7

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patched/01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patched/01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patched/01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patched/01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch Thu Feb 15 18:29:09 2007
@@ -1,0 +1,5 @@
+patching file db.py
+Hunk #1 succeeded at 200 (offset -4 lines).
+Hunk #2 succeeded at 362 (offset -4 lines).
+Hunk #3 succeeded at 379 (offset -4 lines).
+Hunk #4 succeeded at 399 (offset -4 lines).

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patched/02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patched/02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patched/02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patched/02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch Thu Feb 15 18:29:09 2007
@@ -1,0 +1,1 @@
+patching file db.py

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/00list
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/00list?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/00list (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/00list Thu Feb 15 18:29:09 2007
@@ -1,0 +1,2 @@
+01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch
+02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch Thu Feb 15 18:29:09 2007
@@ -1,0 +1,47 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+
+ at DPATCH@
+
+diff -ru ZMySQLDA-2.0.9b2/ZMySQLDA/db.py ZMySQLDA/ZMySQLDA/db.py
+--- ZMySQLDA-2.0.9b2/db.py 2002-03-14 21:24:54.000000000 +0100
++++ ZMySQLDA/db.py  2003-04-28 10:29:38.000000000 +0200
+@@ -204,6 +204,7 @@
+             self._use_TM = 1
+         if self._use_TM:
+             self._tlock = allocate_lock()
++            self._tthread = None
+         self._lock = allocate_lock()
+ 
+     def __del__(self):
+@@ -365,7 +366,9 @@
+     def string_literal(self, s): return self.db.string_literal(s)
+ 
+     def _begin(self, *ignored):
++        from thread import get_ident
+         self._tlock.acquire()
++        self._tthread = get_ident()
+         try:
+             if self._transactions:
+                 self.db.query("BEGIN")
+@@ -380,6 +383,10 @@
+             raise
+         
+     def _finish(self, *ignored):
++        from thread import get_ident
++        if not self._tlock.locked() or self._tthread != get_ident():
++            LOG('ZMySQLDA', INFO, "ignoring _finish")
++            return
+         try:
+             try:
+                 if self._mysql_lock:
+@@ -396,6 +403,10 @@
+             self._tlock.release()
+ 
+     def _abort(self, *ignored):
++        from thread import get_ident
++        if not self._tlock.locked() or self._tthread != get_ident():
++            LOG('ZMySQLDA', INFO, "ignoring _abort")
++            return
+         try:
+             if self._mysql_lock:
+                 self.db.query("SELECT RELEASE_LOCK('%s')" % self._mysql_lock)

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch
------------------------------------------------------------------------------
    svn:executable = 

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch Thu Feb 15 18:29:09 2007
@@ -1,0 +1,25 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+
+ at DPATCH@
+
+diff -ru ZMySQLDA-2.0.9b2/ZMySQLDA/db.py ZMySQLDA/ZMySQLDA/db.py
+--- ZMySQLDA-2.0.9b2/db.py	2002-03-14 21:24:54.000000000 +0100
++++ ZMySQLDA/db.py	2003-04-28 10:29:38.000000000 +0200
+@@ -87,6 +87,7 @@
+ __version__='$Revision: 1.20 $'[11:-2]
+ 
+ import _mysql
++import MySQLdb
+ from _mysql_exceptions import OperationalError, NotSupportedError
+ MySQLdb_version_required = (0,9,2)
+ 
+@@ -165,6 +166,9 @@
+     Database_Connection=_mysql.connect
+     Database_Error=_mysql.Error
+ 
++    def Database_Connection(self, *args, **kwargs):
++      return MySQLdb.connect(*args, **kwargs)
++
+     defs={
+         FIELD_TYPE.CHAR: "i", FIELD_TYPE.DATE: "d",
+         FIELD_TYPE.DATETIME: "d", FIELD_TYPE.DECIMAL: "n",

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/patches/02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch
------------------------------------------------------------------------------
    svn:executable = 

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/postinst
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/postinst?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/postinst (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/postinst Thu Feb 15 18:29:09 2007
@@ -1,0 +1,7 @@
+#!/bin/sh -e
+
+. /usr/share/debconf/confmodule
+
+#DEBHELPER#
+
+db_stop

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/rules
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/rules?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/rules (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/rules Thu Feb 15 18:29:09 2007
@@ -1,0 +1,46 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+include /usr/share/dpatch/dpatch.make
+
+pwd        := $(shell pwd)
+debian     := $(pwd)/debian/erp5-zmysqlda
+
+build: patch-stamp build-stamp
+build-stamp:
+	touch build-stamp
+
+clean:
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp configure-stamp
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+	dh_installerp5zope .
+
+binary-indep: build install
+	dh_testdir
+	dh_testroot
+	dh_installdocs
+	dh_installexamples
+	dh_installchangelogs
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+binary-arch:
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary install

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/debian/rules
------------------------------------------------------------------------------
    svn:executable = 

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/DA.py
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/DA.py?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/DA.py (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/DA.py Thu Feb 15 18:29:09 2007
@@ -1,0 +1,61 @@
+def manage_addZMySQLConnection(self, id, title,
+                                connection_string,
+                                check=None, REQUEST=None):
+    """Add a MySQL connection to a folder.
+
+    Arguments:
+
+        REQUEST -- The current request
+
+        title -- The title of the ZMySQLDA Connection (string)
+
+        id -- The id of the ZMySQLDA Connection (string)
+
+        connection_string -- The connection string is of the form:
+
+        '[*lock] [+/-][database][@host[:port]] [user [password [unix_socket]]]'
+
+        or typically:
+
+                'database user password'
+
+        to use a MySQL server on localhost via the standard UNIX
+        socket.  Only specify host if the server is on a remote
+        system. You can use a non-standard port, if necessary. If the
+        UNIX socket is in a non-standard location, you can specify the
+        full path to it after the password. Hint: To use a
+        non-standard port on the local system, use 127.0.0.1 for the
+        host instead of localhost.
+        
+        Either a database or a host or both must be specified.     
+
+        A '-' in front of the database tells ZMySQLDA to not use
+        Zope's Transaction Manager, even if the server supports
+        transactions. A '+' in front of the database tells ZMySQLDA
+        that it must use transactions; an exception will be raised if
+        they are not supported by the server. If neither '-' or '+'
+        are present, then transactions will be enabled if the server
+        supports them.  If you are using non-transaction safe tables
+        (TSTs) on a server that supports TSTs, use '-'. If you require
+        transactions, use '+'. If you aren't sure, don't use either.
+
+        *lock at the begining of the connection string means to
+        psuedo-transactional. When the transaction begins, it will
+        acquire a lock on the server named lock (i.e. MYLOCK). When
+        the transaction commits, the lock will be released. If the
+        transaction is aborted and restarted, which can happen due to
+        a ConflictError, you'll get an error in the logs, and
+        inconsistent data. In this respect, it's equivalent to
+        transactions turned off.
+
+        Transactions are highly recommended. Using a named lock in
+        conjunctions with transactions is probably pointless.
+
+        """
+
+class Connection:
+    """MySQL Connection Object"""
+
+    __constructor__ = manage_addZMySQLConnection
+
+

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/DABase.py
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/DABase.py?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/DABase.py (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/DABase.py Thu Feb 15 18:29:09 2007
@@ -1,0 +1,35 @@
+def manage_addZMySQLConnection(self, id, title,
+                                connection_string,
+                                check=None, REQUEST=None):
+    """Add a MySQL connection to a folder.
+
+    Arguments:
+
+        REQUEST -- The current request
+
+        title -- The title of the ZMySQLDA Connection (string)
+
+        id -- The id of the ZMySQLDA Connection (string)
+
+        connection_string -- The connection string is of the form:
+
+                'database[@host[:port]] [user [password [unix_socket]]]'
+
+        or typically:
+
+                'database user password'
+
+        to use a MySQL server on localhost via the standard UNIX socket.
+        Only specify host if the server is on a remote system. You can
+        use a non-standard port, if necessary. If the UNIX socket is in
+        a non-standard location, you can specify the full path to it
+        after the password.
+
+    """
+
+class Connection:
+    """MySQL Connection Object"""
+
+    __constructor__ = manage_addZMySQLConnection
+
+

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/db.py
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/db.py?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/db.py (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/help/db.py Thu Feb 15 18:29:09 2007
@@ -1,0 +1,28 @@
+class DB:
+
+    """This is the ZMySQLDA Database Connection Object."""
+
+    def __init__(self,connection):
+        """
+            connection
+               blah blah
+        """
+        
+    def tables(self, rdb=0,
+               _care=('TABLE', 'VIEW')):
+        """Returns a list of tables in the current database."""
+
+    def columns(self, table_name):
+        """Returns a list of column descriptions for 'table_name'."""
+
+    def query(self,query_string, max_rows=1000):
+        """Execute 'query_string' and return at most 'max_rows'."""
+
+    def _begin(self, *ignored):
+        """Begin a transaction (when TM is enabled)."""
+        
+    def _finish(self, *ignored):
+        """Commit a transaction (when TM is enabled)."""
+
+    def _abort(self, *ignored):
+        """Rollback a transaction (when TM is enabled)."""

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/bin.gif
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/bin.gif?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/bin.gif
------------------------------------------------------------------------------
    svn:executable = 

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/bin.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/date.gif
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/date.gif?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/date.gif
------------------------------------------------------------------------------
    svn:executable = 

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/date.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/datetime.gif
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/datetime.gif?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/datetime.gif
------------------------------------------------------------------------------
    svn:executable = 

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/datetime.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/field.gif
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/field.gif?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/field.gif
------------------------------------------------------------------------------
    svn:executable = 

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/field.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/float.gif
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/float.gif?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/float.gif
------------------------------------------------------------------------------
    svn:executable = 

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/float.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/int.gif
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/int.gif?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/int.gif
------------------------------------------------------------------------------
    svn:executable = 

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/int.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/stable.gif
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/stable.gif?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/stable.gif
------------------------------------------------------------------------------
    svn:executable = 

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/stable.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/table.gif
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/table.gif?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/table.gif
------------------------------------------------------------------------------
    svn:executable = 

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/table.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/text.gif
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/text.gif?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/text.gif
------------------------------------------------------------------------------
    svn:executable = 

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/text.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/time.gif
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/time.gif?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/time.gif
------------------------------------------------------------------------------
    svn:executable = 

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/time.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/view.gif
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/view.gif?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/view.gif
------------------------------------------------------------------------------
    svn:executable = 

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/view.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/what.gif
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/what.gif?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/what.gif
------------------------------------------------------------------------------
    svn:executable = 

Propchange: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/icons/what.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/patch-stamp
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/patch-stamp?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/patch-stamp (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/patch-stamp Thu Feb 15 18:29:09 2007
@@ -1,0 +1,6 @@
+Patches applied in the Debian version of :
+
+debian/patches/01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch ():
+
+debian/patches/02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch ():
+

Added: spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/table_info.dtml
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/table_info.dtml?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/table_info.dtml (added)
+++ spec/debian/unstable/erp5-zmysqlda/ZMySQLDA/table_info.dtml Thu Feb 15 18:29:09 2007
@@ -1,0 +1,7 @@
+<dtml-var standard_html_header>
+
+<dtml-var TABLE_TYPE><dtml-if TABLE_OWNER>
+ owned by <dtml-var TABLE_OWNER></dtml-if>
+<dtml-if REMARKS><br><dtml-var REMARKS></dtml-if>
+
+<dtml-var standard_html_footer>

Added: spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1.diff.gz
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1.diff.gz?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1.diff.gz
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1.dsc
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1.dsc?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1.dsc (added)
+++ spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1.dsc Thu Feb 15 18:29:09 2007
@@ -1,0 +1,12 @@
+Format: 1.0
+Source: erp5-zmysqlda
+Version: 2.0.9b2-1
+Binary: erp5-zmysqlda
+Maintainer: Yusei TAHARA
+Architecture: all
+Standards-Version: 3.7.2
+Build-Depends: debhelper (>= 5.0)
+Build-Depends-Indep: zope-debhelper (>= 0.3.6)
+Files: 
+ 5eaa45164e685ceef3a8c3d9f4ecc076 14040 erp5-zmysqlda_2.0.9b2.orig.tar.gz
+ 67218c543edd517eb8cf5492237bd186 1681 erp5-zmysqlda_2.0.9b2-1.diff.gz

Added: spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_all.deb
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_all.deb?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_all.deb
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_i386.build
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_i386.build?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_i386.build (added)
+++ spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_i386.build Thu Feb 15 18:29:09 2007
@@ -1,0 +1,42 @@
+ fakeroot debian/rules clean
+dh_testdir
+dh_testroot
+rm -f build-stamp configure-stamp
+dh_clean
+ dpkg-source -b ZMySQLDA
+dpkg-source: warning: source directory `./ZMySQLDA' is not <sourcepackage>-<upstreamversion> `erp5-zmysqlda-2.0.9b2'
+dpkg-source: warning: .orig directory name ZMySQLDA.orig is not <package>-<upstreamversion> (wanted erp5-zmysqlda-2.0.9b2.orig)
+dpkg-source: building erp5-zmysqlda using existing erp5-zmysqlda_2.0.9b2.orig.tar.gz
+dpkg-source: building erp5-zmysqlda in erp5-zmysqlda_2.0.9b2-1.diff.gz
+dpkg-source: warning: executable mode 0755 of `debian/patches/01_ZMySQLDA-2.0.9b2_release-unlocked-lock.dpatch' will not be represented in diff
+dpkg-source: warning: executable mode 0755 of `debian/patches/02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0.dpatch' will not be represented in diff
+dpkg-source: building erp5-zmysqlda in erp5-zmysqlda_2.0.9b2-1.dsc
+ debian/rules build
+test -d debian/patched || install -d debian/patched
+dpatch  apply-all  
+applying patch 01_ZMySQLDA-2.0.9b2_release-unlocked-lock to ./ ... ok.
+applying patch 02_ZMySQLDA-2.0.9b2_with_MySQL-python-0.9.0 to ./ ... ok.
+dpatch  cat-all  >>patch-stampT
+mv -f patch-stampT patch-stamp
+touch build-stamp
+ fakeroot debian/rules binary
+dh_testdir
+dh_testroot
+dh_clean -k
+dh_installdirs
+dh_installerp5zope .
+dh_testdir
+dh_testroot
+dh_installdocs
+dh_installexamples
+dh_installchangelogs
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dpkg-deb: `../erp5-zmysqlda_2.0.9b2-1_all.deb' ¤Ë¥Ñ¥Ã¥±¡¼¥¸ `erp5-zmysqlda' ¤ò¹½ÃÛ¤·¤Æ¤¤¤Þ¤¹¡£
+ dpkg-genchanges
+dpkg-genchanges: including full source code in upload
+dpkg-buildpackage (debuild emulation): full upload (original source is included)

Added: spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_i386.changes
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_i386.changes?rev=12793&view=auto
==============================================================================
--- spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_i386.changes (added)
+++ spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2-1_i386.changes Thu Feb 15 18:29:09 2007
@@ -1,0 +1,21 @@
+Format: 1.7
+Date: Wed, 14 Feb 2007 03:27:56 +0900
+Source: erp5-zmysqlda
+Binary: erp5-zmysqlda
+Architecture: source all
+Version: 2.0.9b2-1
+Distribution: unstable
+Urgency: low
+Maintainer: Yusei TAHARA
+Changed-By: Yusei TAHARA <yusei at domen.cx>
+Description: 
+ erp5-zmysqlda - A Zope connector to Mysql
+Changes: 
+ erp5-zmysqlda (2.0.9b2-1) unstable; urgency=low
+ .
+   * Initial Release.
+Files: 
+ f74c282f176597ffc231e68a22c8e82f 377 web optional erp5-zmysqlda_2.0.9b2-1.dsc
+ 5eaa45164e685ceef3a8c3d9f4ecc076 14040 web optional erp5-zmysqlda_2.0.9b2.orig.tar.gz
+ 67218c543edd517eb8cf5492237bd186 1681 web optional erp5-zmysqlda_2.0.9b2-1.diff.gz
+ 2d1965fe0ea2285dbae9f74bc0c13f53 16562 web optional erp5-zmysqlda_2.0.9b2-1_all.deb

Added: spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2.orig.tar.gz
URL: http://svn.erp5.org/spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2.orig.tar.gz?rev=12793&view=auto
==============================================================================
Binary file - no diff available.

Propchange: spec/debian/unstable/erp5-zmysqlda/erp5-zmysqlda_2.0.9b2.orig.tar.gz
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream




More information about the Erp5-report mailing list