sqlobject-cvs Mailing List for SQLObject (Page 73)
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
(9) |
Apr
(74) |
May
(29) |
Jun
(16) |
Jul
(28) |
Aug
(10) |
Sep
(57) |
Oct
(9) |
Nov
(29) |
Dec
(12) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(7) |
Feb
(14) |
Mar
(6) |
Apr
(3) |
May
(12) |
Jun
(34) |
Jul
(9) |
Aug
(29) |
Sep
(22) |
Oct
(2) |
Nov
(15) |
Dec
(52) |
| 2005 |
Jan
(47) |
Feb
(78) |
Mar
(14) |
Apr
(35) |
May
(33) |
Jun
(16) |
Jul
(26) |
Aug
(63) |
Sep
(40) |
Oct
(96) |
Nov
(96) |
Dec
(123) |
| 2006 |
Jan
(159) |
Feb
(144) |
Mar
(64) |
Apr
(31) |
May
(88) |
Jun
(48) |
Jul
(16) |
Aug
(64) |
Sep
(87) |
Oct
(92) |
Nov
(56) |
Dec
(76) |
| 2007 |
Jan
(94) |
Feb
(103) |
Mar
(126) |
Apr
(123) |
May
(85) |
Jun
(11) |
Jul
(130) |
Aug
(47) |
Sep
(65) |
Oct
(70) |
Nov
(12) |
Dec
(11) |
| 2008 |
Jan
(30) |
Feb
(55) |
Mar
(88) |
Apr
(20) |
May
(50) |
Jun
|
Jul
(38) |
Aug
(1) |
Sep
(9) |
Oct
(5) |
Nov
(6) |
Dec
(39) |
| 2009 |
Jan
(8) |
Feb
(16) |
Mar
(3) |
Apr
(33) |
May
(44) |
Jun
(1) |
Jul
(10) |
Aug
(33) |
Sep
(74) |
Oct
(22) |
Nov
|
Dec
(15) |
| 2010 |
Jan
(28) |
Feb
(22) |
Mar
(46) |
Apr
(29) |
May
(1) |
Jun
(1) |
Jul
(27) |
Aug
(8) |
Sep
(5) |
Oct
(33) |
Nov
(24) |
Dec
(41) |
| 2011 |
Jan
(4) |
Feb
(12) |
Mar
(35) |
Apr
(29) |
May
(19) |
Jun
(16) |
Jul
(32) |
Aug
(25) |
Sep
(5) |
Oct
(11) |
Nov
(21) |
Dec
(12) |
| 2012 |
Jan
(3) |
Feb
(4) |
Mar
(20) |
Apr
(4) |
May
(25) |
Jun
(13) |
Jul
|
Aug
|
Sep
(2) |
Oct
(25) |
Nov
(9) |
Dec
(1) |
| 2013 |
Jan
(6) |
Feb
(8) |
Mar
|
Apr
(10) |
May
(31) |
Jun
(7) |
Jul
(18) |
Aug
(33) |
Sep
(4) |
Oct
(16) |
Nov
|
Dec
(27) |
| 2014 |
Jan
(2) |
Feb
|
Mar
|
Apr
(11) |
May
(39) |
Jun
(8) |
Jul
(11) |
Aug
(4) |
Sep
|
Oct
(27) |
Nov
|
Dec
(71) |
| 2015 |
Jan
(17) |
Feb
(47) |
Mar
(33) |
Apr
|
May
|
Jun
(9) |
Jul
(7) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(8) |
| 2016 |
Jan
(4) |
Feb
(4) |
Mar
|
Apr
|
May
(12) |
Jun
(7) |
Jul
(9) |
Aug
(31) |
Sep
(8) |
Oct
(3) |
Nov
(15) |
Dec
(1) |
| 2017 |
Jan
(13) |
Feb
(7) |
Mar
(14) |
Apr
(8) |
May
(10) |
Jun
(4) |
Jul
(2) |
Aug
(1) |
Sep
|
Oct
(8) |
Nov
(4) |
Dec
(5) |
| 2018 |
Jan
(2) |
Feb
(8) |
Mar
|
Apr
(4) |
May
|
Jun
(6) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2019 |
Jan
(1) |
Feb
(16) |
Mar
(1) |
Apr
(3) |
May
(5) |
Jun
(1) |
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
(1) |
Dec
(3) |
| 2020 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(2) |
Nov
|
Dec
(2) |
| 2021 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
| 2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(6) |
Oct
(1) |
Nov
(1) |
Dec
(4) |
| 2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(3) |
Sep
(2) |
Oct
(2) |
Nov
(4) |
Dec
|
| 2024 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
(9) |
| 2025 |
Jan
|
Feb
(4) |
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(2) |
Dec
(2) |
|
From: <sub...@co...> - 2008-02-28 10:53:06
|
Author: phd Date: 2008-02-28 03:52:59 -0700 (Thu, 28 Feb 2008) New Revision: 3273 Modified: SQLObject/branches/0.10/docs/News.txt Log: SQLObject 0.9.0 was released 10 May 2007. Modified: SQLObject/branches/0.10/docs/News.txt =================================================================== --- SQLObject/branches/0.10/docs/News.txt 2008-02-28 09:41:04 UTC (rev 3272) +++ SQLObject/branches/0.10/docs/News.txt 2008-02-28 10:52:59 UTC (rev 3273) @@ -116,6 +116,8 @@ SQLObject 0.9.0 =============== +Released 10 May 2007. + Features & Interface -------------------- |
|
From: <sub...@co...> - 2008-02-28 09:41:13
|
Author: phd Date: 2008-02-28 02:41:04 -0700 (Thu, 28 Feb 2008) New Revision: 3272 Modified: SQLObject/tags/0.10.0b3/setup.cfg SQLObject/tags/0.10.0b3/setup.py SQLObject/tags/0.10.0b3/sqlobject/__init__.py SQLObject/tags/0.10.0b3/sqlobject/main.py Log: Version 0.10.0b3. Modified: SQLObject/tags/0.10.0b3/setup.cfg =================================================================== --- SQLObject/tags/0.10.0b3/setup.cfg 2008-02-28 09:39:35 UTC (rev 3271) +++ SQLObject/tags/0.10.0b3/setup.cfg 2008-02-28 09:41:04 UTC (rev 3272) @@ -5,10 +5,6 @@ [easy_install] #find_links = http://svn.pythonpaste.org/package_index.html -[egg_info] -tag_build = dev -tag_svn_revision = true - [pudge] theme = pythonpaste.org docs = docs/index.txt docs/Authors.txt docs/DeveloperGuide.txt docs/FAQ.txt Modified: SQLObject/tags/0.10.0b3/setup.py =================================================================== --- SQLObject/tags/0.10.0b3/setup.py 2008-02-28 09:39:35 UTC (rev 3271) +++ SQLObject/tags/0.10.0b3/setup.py 2008-02-28 09:41:04 UTC (rev 3272) @@ -28,7 +28,7 @@ """ setup(name="SQLObject", - version="0.10", + version="0.10.0b3", description="Object-Relational Manager, aka database wrapper", long_description="""\ SQLObject is a popular *Object Relational Manager* for providing an @@ -56,7 +56,7 @@ author="Ian Bicking", author_email="ia...@co...", url="http://sqlobject.org/devel/", - download_url="http://cheeseshop.python.org/pypi/SQLObject/0.10", + download_url="http://cheeseshop.python.org/pypi/SQLObject/0.10.0b3", license="LGPL", packages=["sqlobject"] + ['sqlobject.%s' % package for package in subpackages], scripts=["scripts/sqlobject-admin"], Modified: SQLObject/tags/0.10.0b3/sqlobject/__init__.py =================================================================== --- SQLObject/tags/0.10.0b3/sqlobject/__init__.py 2008-02-28 09:39:35 UTC (rev 3271) +++ SQLObject/tags/0.10.0b3/sqlobject/__init__.py 2008-02-28 09:41:04 UTC (rev 3272) @@ -1,5 +1,5 @@ """ -SQLObject 0.10 +SQLObject 0.10.0b3 """ from main import * Modified: SQLObject/tags/0.10.0b3/sqlobject/main.py =================================================================== --- SQLObject/tags/0.10.0b3/sqlobject/main.py 2008-02-28 09:39:35 UTC (rev 3271) +++ SQLObject/tags/0.10.0b3/sqlobject/main.py 2008-02-28 09:41:04 UTC (rev 3272) @@ -1,6 +1,6 @@ """ -SQLObject 0.10 --------------- +SQLObject 0.10.0b3 +------------------ :author: Ian Bicking <ia...@co...> |
|
From: <sub...@co...> - 2008-02-28 09:39:41
|
Author: phd Date: 2008-02-28 02:39:35 -0700 (Thu, 28 Feb 2008) New Revision: 3271 Added: SQLObject/tags/0.10.0b3/ Log: Tagging 0.10.0b3 Copied: SQLObject/tags/0.10.0b3 (from rev 3270, SQLObject/branches/0.10) |
|
From: <sub...@co...> - 2008-02-28 09:35:12
|
Author: phd Date: 2008-02-28 02:35:06 -0700 (Thu, 28 Feb 2008) New Revision: 3270 Modified: SQLObject/tags/0.9.4b1/setup.cfg SQLObject/tags/0.9.4b1/setup.py SQLObject/tags/0.9.4b1/sqlobject/__init__.py SQLObject/tags/0.9.4b1/sqlobject/main.py Log: Version 0.9.4b1. Modified: SQLObject/tags/0.9.4b1/setup.cfg =================================================================== --- SQLObject/tags/0.9.4b1/setup.cfg 2008-02-28 09:31:58 UTC (rev 3269) +++ SQLObject/tags/0.9.4b1/setup.cfg 2008-02-28 09:35:06 UTC (rev 3270) @@ -5,10 +5,6 @@ [easy_install] #find_links = http://svn.pythonpaste.org/package_index.html -[egg_info] -tag_build = dev -tag_svn_revision = true - [pudge] theme = pythonpaste.org docs = docs/index.txt docs/SQLObject.txt docs/TODO.txt Modified: SQLObject/tags/0.9.4b1/setup.py =================================================================== --- SQLObject/tags/0.9.4b1/setup.py 2008-02-28 09:31:58 UTC (rev 3269) +++ SQLObject/tags/0.9.4b1/setup.py 2008-02-28 09:35:06 UTC (rev 3270) @@ -28,7 +28,7 @@ """ setup(name="SQLObject", - version="0.9", + version="0.9.4b1", description="Object-Relational Manager, aka database wrapper", long_description="""\ SQLObject is a popular *Object Relational Manager* for providing an @@ -56,7 +56,7 @@ author="Ian Bicking", author_email="ia...@co...", url="http://sqlobject.org/devel/", - download_url="http://cheeseshop.python.org/pypi/SQLObject/0.9", + download_url="http://cheeseshop.python.org/pypi/SQLObject/0.9.4b1", license="LGPL", packages=["sqlobject"] + ['sqlobject.%s' % package for package in subpackages], scripts=["scripts/sqlobject-admin"], Modified: SQLObject/tags/0.9.4b1/sqlobject/__init__.py =================================================================== --- SQLObject/tags/0.9.4b1/sqlobject/__init__.py 2008-02-28 09:31:58 UTC (rev 3269) +++ SQLObject/tags/0.9.4b1/sqlobject/__init__.py 2008-02-28 09:35:06 UTC (rev 3270) @@ -1,5 +1,5 @@ """ -SQLObject 0.9 +SQLObject 0.9.4b1 """ from main import * Modified: SQLObject/tags/0.9.4b1/sqlobject/main.py =================================================================== --- SQLObject/tags/0.9.4b1/sqlobject/main.py 2008-02-28 09:31:58 UTC (rev 3269) +++ SQLObject/tags/0.9.4b1/sqlobject/main.py 2008-02-28 09:35:06 UTC (rev 3270) @@ -1,6 +1,6 @@ """ -SQLObject 0.9 -------------- +SQLObject 0.9.4b1 +----------------- :author: Ian Bicking <ia...@co...> |
|
From: <sub...@co...> - 2008-02-28 09:32:27
|
Author: phd Date: 2008-02-28 02:31:58 -0700 (Thu, 28 Feb 2008) New Revision: 3269 Added: SQLObject/tags/0.9.4b1/ Log: Tagging 0.9.4b1 Copied: SQLObject/tags/0.9.4b1 (from rev 3268, SQLObject/branches/0.9) |
|
From: <sub...@co...> - 2008-02-28 07:43:33
|
Author: phd Date: 2008-02-28 00:43:28 -0700 (Thu, 28 Feb 2008) New Revision: 3268 Modified: SQLObject/trunk/docs/FAQ.txt SQLObject/trunk/docs/SQLObject.txt Log: Documentation update: MultipleJoin for the intermediate table. Modified: SQLObject/trunk/docs/FAQ.txt =================================================================== --- SQLObject/trunk/docs/FAQ.txt 2008-02-28 07:43:17 UTC (rev 3267) +++ SQLObject/trunk/docs/FAQ.txt 2008-02-28 07:43:28 UTC (rev 3268) @@ -108,8 +108,8 @@ --------------------------------------------------------------------------- .. note:: - In User and Role, SQLRelatedJoin is used with createRelatedTable=False - so the intermediate table is not created automatically. We also set the + In User and Role, SQLRelatedJoin is used with createRelatedTable=False + so the intermediate table is not created automatically. We also set the intermediate table name with intermediateTable='user_roles'. UserRoles is the definition of our intermediate table. UserRoles creates a unique index to make sure we don't have duplicate @@ -117,10 +117,12 @@ We also added an extra field called active which has a boolean value. The active column might be used to activate/deactivate a given role for a user in this example. - Another common field to add in this an intermediate table might be a sort + Another common field to add in this an intermediate table might be a sort field. + If you want to get a list of rows from the intermediate table directly + add a MultipleJoin to User or Role class. -We'll expand on the User and Role example and define our own UserRoles class which +We'll expand on the User and Role example and define our own UserRoles class which will be the intermediate table for the User and Role Many-to-Many relationship. Example:: Modified: SQLObject/trunk/docs/SQLObject.txt =================================================================== --- SQLObject/trunk/docs/SQLObject.txt 2008-02-28 07:43:17 UTC (rev 3267) +++ SQLObject/trunk/docs/SQLObject.txt 2008-02-28 07:43:28 UTC (rev 3268) @@ -507,6 +507,8 @@ containing the foreign keys for the MTM relationship, and an additional DateTimeCol defaulting to datetime.datetime.now : that column will stay empty when adding roles with the addRole method. +If you want to get a list of rows from the intermediate table directly +add a MultipleJoin to User or Role class. You may notice that the columns have the extra keyword argument `alternateID`. If you use ``alternateID=True``, this means that the |
|
From: <sub...@co...> - 2008-02-28 07:43:26
|
Author: phd Date: 2008-02-28 00:43:17 -0700 (Thu, 28 Feb 2008) New Revision: 3267 Modified: SQLObject/branches/0.10/docs/FAQ.txt SQLObject/branches/0.10/docs/SQLObject.txt Log: Documentation update: MultipleJoin for the intermediate table. Modified: SQLObject/branches/0.10/docs/FAQ.txt =================================================================== --- SQLObject/branches/0.10/docs/FAQ.txt 2008-02-28 07:42:59 UTC (rev 3266) +++ SQLObject/branches/0.10/docs/FAQ.txt 2008-02-28 07:43:17 UTC (rev 3267) @@ -108,8 +108,8 @@ --------------------------------------------------------------------------- .. note:: - In User and Role, SQLRelatedJoin is used with createRelatedTable=False - so the intermediate table is not created automatically. We also set the + In User and Role, SQLRelatedJoin is used with createRelatedTable=False + so the intermediate table is not created automatically. We also set the intermediate table name with intermediateTable='user_roles'. UserRoles is the definition of our intermediate table. UserRoles creates a unique index to make sure we don't have duplicate @@ -117,10 +117,12 @@ We also added an extra field called active which has a boolean value. The active column might be used to activate/deactivate a given role for a user in this example. - Another common field to add in this an intermediate table might be a sort + Another common field to add in this an intermediate table might be a sort field. + If you want to get a list of rows from the intermediate table directly + add a MultipleJoin to User or Role class. -We'll expand on the User and Role example and define our own UserRoles class which +We'll expand on the User and Role example and define our own UserRoles class which will be the intermediate table for the User and Role Many-to-Many relationship. Example:: Modified: SQLObject/branches/0.10/docs/SQLObject.txt =================================================================== --- SQLObject/branches/0.10/docs/SQLObject.txt 2008-02-28 07:42:59 UTC (rev 3266) +++ SQLObject/branches/0.10/docs/SQLObject.txt 2008-02-28 07:43:17 UTC (rev 3267) @@ -507,6 +507,8 @@ containing the foreign keys for the MTM relationship, and an additional DateTimeCol defaulting to datetime.datetime.now : that column will stay empty when adding roles with the addRole method. +If you want to get a list of rows from the intermediate table directly +add a MultipleJoin to User or Role class. You may notice that the columns have the extra keyword argument `alternateID`. If you use ``alternateID=True``, this means that the |
|
From: <sub...@co...> - 2008-02-28 07:43:11
|
Author: phd Date: 2008-02-28 00:42:59 -0700 (Thu, 28 Feb 2008) New Revision: 3266 Modified: SQLObject/branches/0.9/docs/FAQ.txt SQLObject/branches/0.9/docs/SQLObject.txt Log: Documentation update: MultipleJoin for the intermediate table. Modified: SQLObject/branches/0.9/docs/FAQ.txt =================================================================== --- SQLObject/branches/0.9/docs/FAQ.txt 2008-02-27 14:23:31 UTC (rev 3265) +++ SQLObject/branches/0.9/docs/FAQ.txt 2008-02-28 07:42:59 UTC (rev 3266) @@ -108,8 +108,8 @@ --------------------------------------------------------------------------- .. note:: - In User and Role, SQLRelatedJoin is used with createRelatedTable=False - so the intermediate table is not created automatically. We also set the + In User and Role, SQLRelatedJoin is used with createRelatedTable=False + so the intermediate table is not created automatically. We also set the intermediate table name with intermediateTable='user_roles'. UserRoles is the definition of our intermediate table. UserRoles creates a unique index to make sure we don't have duplicate @@ -117,10 +117,12 @@ We also added an extra field called active which has a boolean value. The active column might be used to activate/deactivate a given role for a user in this example. - Another common field to add in this an intermediate table might be a sort + Another common field to add in this an intermediate table might be a sort field. + If you want to get a list of rows from the intermediate table directly + add a MultipleJoin to User or Role class. -We'll expand on the User and Role example and define our own UserRoles class which +We'll expand on the User and Role example and define our own UserRoles class which will be the intermediate table for the User and Role Many-to-Many relationship. Example:: Modified: SQLObject/branches/0.9/docs/SQLObject.txt =================================================================== --- SQLObject/branches/0.9/docs/SQLObject.txt 2008-02-27 14:23:31 UTC (rev 3265) +++ SQLObject/branches/0.9/docs/SQLObject.txt 2008-02-28 07:42:59 UTC (rev 3266) @@ -492,6 +492,8 @@ containing the foreign keys for the MTM relationship, and an additional DateTimeCol defaulting to datetime.datetime.now : that column will stay empty when adding roles with the addRole method. +If you want to get a list of rows from the intermediate table directly +add a MultipleJoin to User or Role class. You may notice that the columns have the extra keyword argument `alternateID`. If you use ``alternateID=True``, this means that the |
|
From: <sub...@co...> - 2008-02-27 14:23:41
|
Author: phd
Date: 2008-02-27 07:23:31 -0700 (Wed, 27 Feb 2008)
New Revision: 3265
Modified:
SQLObject/trunk/docs/News.txt
SQLObject/trunk/sqlobject/manager/command.py
Log:
Dropped support for Python 2.3. The minimal version of Python for SQLObject is 2.4 now.
Use reversed() in manager/command.py instead of .__reversed__().
Modified: SQLObject/trunk/docs/News.txt
===================================================================
--- SQLObject/trunk/docs/News.txt 2008-02-27 13:43:58 UTC (rev 3264)
+++ SQLObject/trunk/docs/News.txt 2008-02-27 14:23:31 UTC (rev 3265)
@@ -10,6 +10,14 @@
SQLObject (trunk)
=================
+Features & Interface
+--------------------
+
+* Dropped support for Python 2.3. The minimal version of Python for
+ SQLObject is 2.4 now.
+
+* Use reversed() in manager/command.py instead of .__reversed__().
+
SQLObject 0.10.0
================
Modified: SQLObject/trunk/sqlobject/manager/command.py
===================================================================
--- SQLObject/trunk/sqlobject/manager/command.py 2008-02-27 13:43:58 UTC (rev 3264)
+++ SQLObject/trunk/sqlobject/manager/command.py 2008-02-27 14:23:31 UTC (rev 3265)
@@ -193,7 +193,7 @@
# having to modify any core SQLObject component and namespace
# contamination.
# yemartin - 2006-08-08
-
+
class SQLObjectCircularReferenceError(Exception): pass
def findReverseDependencies(cls):
@@ -209,7 +209,7 @@
if other not in depended:
depended.append(other)
return depended
-
+
# Cache to save already calculated dependency levels.
dependency_levels = {}
def calculateDependencyLevel(cls, dependency_stack=[]):
@@ -237,7 +237,7 @@
level = 0
dependency_levels[cls] = level
return level
-
+
# Now simply calculate and sort by dependency levels:
try:
sorter = []
@@ -689,7 +689,7 @@
v = self.options.verbose
dropped = 0
not_existing = 0
- for soClass in self.classes().__reversed__():
+ for soClass in reversed(self.classes()):
exists = soClass._connection.tableExists(soClass.sqlmeta.table)
if v >= 1:
if exists:
|
|
From: <sub...@co...> - 2008-02-27 13:44:04
|
Author: phd Date: 2008-02-27 06:43:58 -0700 (Wed, 27 Feb 2008) New Revision: 3264 Modified: SQLObject/trunk/docs/Authors.txt SQLObject/trunk/docs/News.txt SQLObject/trunk/sqlobject/main.py Log: Merged revisions 3060:3062 from the 0.9 branch - patches by Diez B. Roggisch <deets at web.de>: Prevent MultipleJoin from removing the intermediate table if it was not created by the Join. Modified: SQLObject/trunk/docs/Authors.txt =================================================================== --- SQLObject/trunk/docs/Authors.txt 2008-02-27 13:43:15 UTC (rev 3263) +++ SQLObject/trunk/docs/Authors.txt 2008-02-27 13:43:58 UTC (rev 3264) @@ -1,8 +1,7 @@ Authors ======= -SQLObject was originally written and continues to be maintained by Ian -Bicking <ia...@co...> +SQLObject was originally written by Ian Bicking <ia...@co...>. Contributions have been made by: @@ -21,6 +20,7 @@ * Shahms King <shahms at shahms.com> * David Turner, The Open Planning Project * Dan Pascu <dan at ag-projects.com> +* Diez B. Roggisch <deets at web.de> * Oleg Broytmann <ph...@ph...> .. image:: http://sourceforge.net/sflogo.php?group_id=74338&type=4 Modified: SQLObject/trunk/docs/News.txt =================================================================== --- SQLObject/trunk/docs/News.txt 2008-02-27 13:43:15 UTC (rev 3263) +++ SQLObject/trunk/docs/News.txt 2008-02-27 13:43:58 UTC (rev 3264) @@ -72,6 +72,12 @@ * MySQLConnection (and DB URI) accept a number of SSL-related parameters: ssl_key, ssl_cert, ssl_ca, ssl_capath. +SQLObject 0.9.4 +=============== + +* Prevent MultipleJoin from removing the intermediate table if it was not + created by the Join. + SQLObject 0.9.3 =============== Modified: SQLObject/trunk/sqlobject/main.py =================================================================== --- SQLObject/trunk/sqlobject/main.py 2008-02-27 13:43:15 UTC (rev 3263) +++ SQLObject/trunk/sqlobject/main.py 2008-02-27 13:43:58 UTC (rev 3264) @@ -1386,9 +1386,6 @@ def createJoinTables(cls, ifNotExists=False, connection=None): conn = connection or cls._connection for join in cls._getJoinsToCreate(): - if not getattr(join, 'createRelatedTable', True): - # This join has requested not to be created - continue if (ifNotExists and conn.tableExists(join.intermediateTable)): continue @@ -1399,9 +1396,6 @@ conn = connection or cls._connection sql = [] for join in cls._getJoinsToCreate(): - if not getattr(join, 'createRelatedTable', True): - # This join has requested not to be created - continue sql.append(conn._SO_createJoinTableSQL(join)) return ';\n'.join(sql) createJoinTablesSQL = classmethod(createJoinTablesSQL) @@ -1429,7 +1423,7 @@ for join in cls.sqlmeta.joins: if not join: continue - if not join.hasIntermediateTable(): + if not join.hasIntermediateTable() or not getattr(join, 'createRelatedTable', True): continue if join.soClass.__name__ > join.otherClass.__name__: continue @@ -1442,7 +1436,7 @@ for join in cls.sqlmeta.joins: if not join: continue - if not join.hasIntermediateTable(): + if not join.hasIntermediateTable() or not getattr(join, 'createRelatedTable', True): continue if join.soClass.__name__ > join.otherClass.__name__: continue |
|
From: <sub...@co...> - 2008-02-27 13:43:20
|
Author: phd Date: 2008-02-27 06:43:15 -0700 (Wed, 27 Feb 2008) New Revision: 3263 Modified: SQLObject/branches/0.10/docs/Authors.txt SQLObject/branches/0.10/docs/News.txt SQLObject/branches/0.10/sqlobject/main.py SQLObject/branches/0.10/sqlobject/manager/command.py Log: Merged revisions 3060:3062 from the 0.9 branch - patches by Diez B. Roggisch <deets at web.de>: Use list.reverse() in manager/command.py for Python 2.3 compatibility. Prevent MultipleJoin from removing the intermediate table if it was not created by the Join. Modified: SQLObject/branches/0.10/docs/Authors.txt =================================================================== --- SQLObject/branches/0.10/docs/Authors.txt 2008-02-27 13:38:21 UTC (rev 3262) +++ SQLObject/branches/0.10/docs/Authors.txt 2008-02-27 13:43:15 UTC (rev 3263) @@ -1,8 +1,7 @@ Authors ======= -SQLObject was originally written and continues to be maintained by Ian -Bicking <ia...@co...> +SQLObject was originally written by Ian Bicking <ia...@co...>. Contributions have been made by: @@ -21,6 +20,7 @@ * Shahms King <shahms at shahms.com> * David Turner, The Open Planning Project * Dan Pascu <dan at ag-projects.com> +* Diez B. Roggisch <deets at web.de> * Oleg Broytmann <ph...@ph...> .. image:: http://sourceforge.net/sflogo.php?group_id=74338&type=4 Modified: SQLObject/branches/0.10/docs/News.txt =================================================================== --- SQLObject/branches/0.10/docs/News.txt 2008-02-27 13:38:21 UTC (rev 3262) +++ SQLObject/branches/0.10/docs/News.txt 2008-02-27 13:43:15 UTC (rev 3263) @@ -72,6 +72,14 @@ * MySQLConnection (and DB URI) accept a number of SSL-related parameters: ssl_key, ssl_cert, ssl_ca, ssl_capath. +SQLObject 0.9.4 +=============== + +* Use list.reverse() in manager/command.py for Python 2.3 compatibility. + +* Prevent MultipleJoin from removing the intermediate table if it was not + created by the Join. + SQLObject 0.9.3 =============== Modified: SQLObject/branches/0.10/sqlobject/main.py =================================================================== --- SQLObject/branches/0.10/sqlobject/main.py 2008-02-27 13:38:21 UTC (rev 3262) +++ SQLObject/branches/0.10/sqlobject/main.py 2008-02-27 13:43:15 UTC (rev 3263) @@ -1386,9 +1386,6 @@ def createJoinTables(cls, ifNotExists=False, connection=None): conn = connection or cls._connection for join in cls._getJoinsToCreate(): - if not getattr(join, 'createRelatedTable', True): - # This join has requested not to be created - continue if (ifNotExists and conn.tableExists(join.intermediateTable)): continue @@ -1399,9 +1396,6 @@ conn = connection or cls._connection sql = [] for join in cls._getJoinsToCreate(): - if not getattr(join, 'createRelatedTable', True): - # This join has requested not to be created - continue sql.append(conn._SO_createJoinTableSQL(join)) return ';\n'.join(sql) createJoinTablesSQL = classmethod(createJoinTablesSQL) @@ -1429,7 +1423,7 @@ for join in cls.sqlmeta.joins: if not join: continue - if not join.hasIntermediateTable(): + if not join.hasIntermediateTable() or not getattr(join, 'createRelatedTable', True): continue if join.soClass.__name__ > join.otherClass.__name__: continue @@ -1442,7 +1436,7 @@ for join in cls.sqlmeta.joins: if not join: continue - if not join.hasIntermediateTable(): + if not join.hasIntermediateTable() or not getattr(join, 'createRelatedTable', True): continue if join.soClass.__name__ > join.otherClass.__name__: continue Modified: SQLObject/branches/0.10/sqlobject/manager/command.py =================================================================== --- SQLObject/branches/0.10/sqlobject/manager/command.py 2008-02-27 13:38:21 UTC (rev 3262) +++ SQLObject/branches/0.10/sqlobject/manager/command.py 2008-02-27 13:43:15 UTC (rev 3263) @@ -689,7 +689,9 @@ v = self.options.verbose dropped = 0 not_existing = 0 - for soClass in self.classes().__reversed__(): + rev_classes = self.classes() + rev_classes.reverse() + for soClass in rev_classes: exists = soClass._connection.tableExists(soClass.sqlmeta.table) if v >= 1: if exists: |
|
From: <sub...@co...> - 2008-02-27 13:38:28
|
Author: phd Date: 2008-02-27 06:38:21 -0700 (Wed, 27 Feb 2008) New Revision: 3262 Modified: SQLObject/branches/0.9/docs/Authors.txt SQLObject/branches/0.9/docs/News.txt Log: Documentation update. Modified: SQLObject/branches/0.9/docs/Authors.txt =================================================================== --- SQLObject/branches/0.9/docs/Authors.txt 2008-02-27 13:34:50 UTC (rev 3261) +++ SQLObject/branches/0.9/docs/Authors.txt 2008-02-27 13:38:21 UTC (rev 3262) @@ -1,8 +1,7 @@ Authors ======= -SQLObject was originally written and continues to be maintained by Ian -Bicking <ia...@co...> +SQLObject was originally written by Ian Bicking <ia...@co...>. Contributions have been made by: Modified: SQLObject/branches/0.9/docs/News.txt =================================================================== --- SQLObject/branches/0.9/docs/News.txt 2008-02-27 13:34:50 UTC (rev 3261) +++ SQLObject/branches/0.9/docs/News.txt 2008-02-27 13:38:21 UTC (rev 3262) @@ -10,6 +10,8 @@ SQLObject 0.9.4 =============== +* Use list.reverse() in manager/command.py for Python 2.3 compatibility. + * Prevent MultipleJoin from removing the intermediate table if it was not created by the Join. |
|
From: <sub...@co...> - 2008-02-27 13:34:55
|
Author: phd Date: 2008-02-27 06:34:50 -0700 (Wed, 27 Feb 2008) New Revision: 3261 Modified: SQLObject/branches/0.9/docs/Authors.txt SQLObject/branches/0.9/docs/News.txt SQLObject/branches/0.9/sqlobject/main.py Log: A patch by Diez B. Roggisch <deets at web.de>: Prevent MultipleJoin from removing the intermediate table if it was not created by the Join. Modified: SQLObject/branches/0.9/docs/Authors.txt =================================================================== --- SQLObject/branches/0.9/docs/Authors.txt 2008-02-27 13:33:23 UTC (rev 3260) +++ SQLObject/branches/0.9/docs/Authors.txt 2008-02-27 13:34:50 UTC (rev 3261) @@ -21,6 +21,7 @@ * Shahms King <shahms at shahms.com> * David Turner, The Open Planning Project * Dan Pascu <dan at ag-projects.com> +* Diez B. Roggisch <deets at web.de> * Oleg Broytmann <ph...@ph...> .. image:: http://sourceforge.net/sflogo.php?group_id=74338&type=4 Modified: SQLObject/branches/0.9/docs/News.txt =================================================================== --- SQLObject/branches/0.9/docs/News.txt 2008-02-27 13:33:23 UTC (rev 3260) +++ SQLObject/branches/0.9/docs/News.txt 2008-02-27 13:34:50 UTC (rev 3261) @@ -7,6 +7,12 @@ .. _start: +SQLObject 0.9.4 +=============== + +* Prevent MultipleJoin from removing the intermediate table if it was not + created by the Join. + SQLObject 0.9.3 =============== Modified: SQLObject/branches/0.9/sqlobject/main.py =================================================================== --- SQLObject/branches/0.9/sqlobject/main.py 2008-02-27 13:33:23 UTC (rev 3260) +++ SQLObject/branches/0.9/sqlobject/main.py 2008-02-27 13:34:50 UTC (rev 3261) @@ -1410,9 +1410,6 @@ def createJoinTables(cls, ifNotExists=False, connection=None): conn = connection or cls._connection for join in cls._getJoinsToCreate(): - if not getattr(join, 'createRelatedTable', True): - # This join has requested not to be created - continue if (ifNotExists and conn.tableExists(join.intermediateTable)): continue @@ -1423,9 +1420,6 @@ conn = connection or cls._connection sql = [] for join in cls._getJoinsToCreate(): - if not getattr(join, 'createRelatedTable', True): - # This join has requested not to be created - continue sql.append(conn._SO_createJoinTableSQL(join)) return ';\n'.join(sql) createJoinTablesSQL = classmethod(createJoinTablesSQL) @@ -1453,7 +1447,7 @@ for join in cls.sqlmeta.joins: if not join: continue - if not join.hasIntermediateTable(): + if not join.hasIntermediateTable() or not getattr(join, 'createRelatedTable', True): continue if join.soClass.__name__ > join.otherClass.__name__: continue @@ -1466,7 +1460,7 @@ for join in cls.sqlmeta.joins: if not join: continue - if not join.hasIntermediateTable(): + if not join.hasIntermediateTable() or not getattr(join, 'createRelatedTable', True): continue if join.soClass.__name__ > join.otherClass.__name__: continue |
|
From: <sub...@co...> - 2008-02-27 13:33:32
|
Author: phd
Date: 2008-02-27 06:33:23 -0700 (Wed, 27 Feb 2008)
New Revision: 3260
Modified:
SQLObject/branches/0.9/sqlobject/manager/command.py
Log:
Use list.reverse() for Python 2.3 compatibility.
Modified: SQLObject/branches/0.9/sqlobject/manager/command.py
===================================================================
--- SQLObject/branches/0.9/sqlobject/manager/command.py 2008-02-17 06:37:35 UTC (rev 3259)
+++ SQLObject/branches/0.9/sqlobject/manager/command.py 2008-02-27 13:33:23 UTC (rev 3260)
@@ -689,7 +689,9 @@
v = self.options.verbose
dropped = 0
not_existing = 0
- for soClass in self.classes().__reversed__():
+ rev_classes = self.classes()
+ rev_classes.reverse()
+ for soClass in rev_classes:
exists = soClass._connection.tableExists(soClass.sqlmeta.table)
if v >= 1:
if exists:
|
|
From: SourceForge.net <no...@so...> - 2008-02-25 15:29:47
|
Bugs item #1901446, was opened at 2008-02-25 16:29 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1901446&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Postgres Group: SQLObject release (specify) Status: Open Resolution: None Priority: 5 Private: No Submitted By: Étienne Loks (nimn) Assigned to: Nobody/Anonymous (nobody) Summary: Point type is considered as int Initial Comment: When using automatic class generation on a table with point fields, theses fields are considered as integer. As attachement a quick and dirty patch for SQLOBject 0.9.1 where point fields are considered as StringCol. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1901446&group_id=74338 |
|
From: SourceForge.net <no...@so...> - 2008-02-22 10:04:32
|
Bugs item #1899460, was opened at 2008-02-22 02:04 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1899460&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: General Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: delColumn removes to many properties Initial Comment: # After deleting one column other columns are not accessible # It seems that the unmakeProperties method removes all properties # but should only remove the property from the delete column call # Python 2.5.1 # SQLObject 0.10.0b2 from sqlobject import * sqlhub.processConnection = connectionForURI('postgres://test:test@localhost/test') class Author(SQLObject): name = StringCol() xyz = StringCol(default = 'Unused') # This column should be deleted Author.createTable() # Insert some authors Author(name = 'Schiller') Author(name = 'Goethe') # Delete the unnecessary column Author.sqlmeta.delColumn('xyz', changeSchema = True) # ERROR: Can not access the name column print [ author.name for author in Author.select()] # Traceback (most recent call last): # File "delcol-bug.py", line 19, in <module> # print [ author.name for author in Author.select()] # AttributeError: 'Author' object has no attribute 'name' ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1899460&group_id=74338 |
|
From: SourceForge.net <no...@so...> - 2008-02-22 00:05:26
|
Bugs item #1338107, was opened at 2005-10-25 23:59 Message generated for change (Comment added) made by rantenki You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1338107&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: General Group: SQLObject release (specify) Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: Docs need desperate overhaul Initial Comment: SQLObject 0.7 as packaged with TurboGears SUMMARY: SQLObject docs are out of date: - many of the examples use import statements that no longer work - the examples that use multiple tables are scant - for an example of db docs that really serve this niche, see the Django db docs: DETAILS: - many of the examples use import statements that no longer work #this doesn't work http://sqlobject.org/SQLBuilder.htmlsub from SQLBuilder import * #this works http://sqlobject.org/SQLObject.html#exported-symbols from sqlobject.sqlbuilder import LEFTJOINOn #but this doesn't from sqlobject.sqlbuilder import RIGHTJOINOn posting in turbogears: http://groups.google.com/group/turbogears/browse_frm/thread/91602b3e5a4dfdea/86fa7e464e081edc?q=greenwood&rnum=6#86fa7e464e081edc - the examples that use multiple tables are scant How about a simple wiki type example? I'm extending the TurboGears tutorial (the 20 minute wiki) and I'm running into all kinds of interesting problems that the docs don't seem to answer... here are some of my recent questions: http://groups.google.com/group/turbogears/browse_frm/thread/41b1dc59e9d15ab3/67d2bd0a35c1e62a?q=greenwood&rnum=7#67d2bd0a35c1e62a http://groups.google.com/group/turbogears/browse_frm/thread/ef9deab591d6aae/95cd7eb3bea9e5b5?q=greenwood&rnum=8#95cd7eb3bea9e5b5 The idea is, given tables A and B, how do I slice and dice between the two? - for an example of db docs that really serve this niche, see the Django db docs: http://www.djangoproject.com/documentation/model_api/ http://www.djangoproject.com/documentation/db_api/ http://www.djangoproject.com/documentation/models/ In order for SQLObject/SQLBuilder to be successfull (and TurboGears, by extension) the docs have to be rock solid. By that I mean, non contradictory and with enough examples that a newbie like me isn't left asking the listgroup basic questions. -Todd Greenwood ---------------------------------------------------------------------- Comment By: Derek Anderson (rantenki) Date: 2008-02-21 16:05 Message: Logged In: YES user_id=1499846 Originator: NO A more comprehensive recipe section would be great too. Learning by example can be more powerful than straight docs. I think that the SQLO docs are actually pretty comprehensive, but they seem to require that you know what you are looking for before you find it, which means you spend a lot of time poring over the docs looking for something that MIGHT be helpful. ---------------------------------------------------------------------- Comment By: Ian Bicking (ianbicking) Date: 2005-10-26 16:08 Message: Logged In: YES user_id=210337 The SQLBuilder import has been fixed (r1144) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1338107&group_id=74338 |
|
From: SourceForge.net <no...@so...> - 2008-02-21 23:59:57
|
Bugs item #1898977, was opened at 2008-02-21 10:00 Message generated for change (Comment added) made by rantenki You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1898977&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Derek Anderson (rantenki) Assigned to: Nobody/Anonymous (nobody) Summary: picklecol truncates/corrupts data dangerously Initial Comment: When a picklecol is created, it defaults to a tinyblob. This in itself is probably a good behavior, but when combined with the failure mode of writing too much data, it can be dangerous. For example: {{{ class enomalism_user(TG_User,permissions_mixin): class sqlmeta: table = 'enomalism_user' idName = 'id' uuid = StringCol(length=36,alternateID=True,alternateMethodName='by_uuid',\ default=gen_uuid) lang_pref = StringCol(length=16,varchar=True,alternateID=False,default="en",unique=False,notNone=True) data = PickleCol(title="data",dbName="data",default={},length=2**24) }}} If you write "X"*257 to the data field, it will overflow with a "truncated" error, but that leaves the data in a corrupted state, and an exception is thrown when trying to read the user row. A better solution would be to throw the error, but to not store the data, preventing the exception, and leaving the user data in a usable state. Note: This leaves a Turbogears user in an unusable state, and could lead to a DOS attack. Obviously my obligation is to test for this kind of thing, but it is the ideal behind the SQLO ORM to prevent db based failures by default, so... ---------------------------------------------------------------------- >Comment By: Derek Anderson (rantenki) Date: 2008-02-21 15:59 Message: Logged In: YES user_id=1499846 Originator: YES True; I do use MySQL, however, SQLObject makes the decision to use TinyBlob, not me. I have remedied that in my code obviously, but since SQLObject chooses tinyblob, and yet does not seem to be cognizant of the length of TinyBlob when doing a write to it, should not the MySQL SQLObject connector do a if len(pickledOutput)>256: raise ExceptionBeforeStoring ? Either that, or the more elegant solution of defaulting to either MediumBlob or LargeBlob (Medium is probably ample for most jobs). I think tinyblob is probably a little small; most times you need to use pickle will potentially involve more than 256 characters, I think. Other than that, btw; great work on SQLO. ---------------------------------------------------------------------- Comment By: Oleg Broytmann (phd) Date: 2008-02-21 11:15 Message: Logged In: YES user_id=4799 Originator: NO >From the word "tinyblob" I can guess you use MySQL. It is MySQL that throughs the "overflow" error, far outside of PickleCol. Hence SQLObject cannot "not store the data" - the data has already been sent to MySQL. ---------------------------------------------------------------------- Comment By: Oleg Broytmann (phd) Date: 2008-02-21 11:15 Message: Logged In: YES user_id=4799 Originator: NO >From the word "tinyblob" I can guess you use MySQL. It is MySQL that throughs the "overflow" error, far outside of PickleCol. Hence SQLObject cannot "not store the data" - the data has already been sent to MySQL. ---------------------------------------------------------------------- Comment By: Derek Anderson (rantenki) Date: 2008-02-21 10:17 Message: Logged In: YES user_id=1499846 Originator: YES !NOTE! Sorry. I should mention that this bug has a length set. The bug only occurs if that length=2**24 keyword is not passed.. Code should have read: {{{ class enomalism_user(TG_User,permissions_mixin): class sqlmeta: table = 'enomalism_user' idName = 'id' uuid = StringCol(length=36,alternateID=True,alternateMethodName='by_uuid',\ default=gen_uuid) lang_pref = StringCol(length=16,varchar=True,alternateID=False,default="en",unique=Fals e,notNone=True) data = PickleCol(title="data",dbName="data",default={}) }}} ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1898977&group_id=74338 |
|
From: SourceForge.net <no...@so...> - 2008-02-21 19:15:47
|
Bugs item #1898977, was opened at 2008-02-21 21:00 Message generated for change (Comment added) made by phd You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1898977&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Derek Anderson (rantenki) Assigned to: Nobody/Anonymous (nobody) Summary: picklecol truncates/corrupts data dangerously Initial Comment: When a picklecol is created, it defaults to a tinyblob. This in itself is probably a good behavior, but when combined with the failure mode of writing too much data, it can be dangerous. For example: {{{ class enomalism_user(TG_User,permissions_mixin): class sqlmeta: table = 'enomalism_user' idName = 'id' uuid = StringCol(length=36,alternateID=True,alternateMethodName='by_uuid',\ default=gen_uuid) lang_pref = StringCol(length=16,varchar=True,alternateID=False,default="en",unique=False,notNone=True) data = PickleCol(title="data",dbName="data",default={},length=2**24) }}} If you write "X"*257 to the data field, it will overflow with a "truncated" error, but that leaves the data in a corrupted state, and an exception is thrown when trying to read the user row. A better solution would be to throw the error, but to not store the data, preventing the exception, and leaving the user data in a usable state. Note: This leaves a Turbogears user in an unusable state, and could lead to a DOS attack. Obviously my obligation is to test for this kind of thing, but it is the ideal behind the SQLO ORM to prevent db based failures by default, so... ---------------------------------------------------------------------- >Comment By: Oleg Broytmann (phd) Date: 2008-02-21 22:15 Message: Logged In: YES user_id=4799 Originator: NO >From the word "tinyblob" I can guess you use MySQL. It is MySQL that throughs the "overflow" error, far outside of PickleCol. Hence SQLObject cannot "not store the data" - the data has already been sent to MySQL. ---------------------------------------------------------------------- Comment By: Oleg Broytmann (phd) Date: 2008-02-21 22:15 Message: Logged In: YES user_id=4799 Originator: NO >From the word "tinyblob" I can guess you use MySQL. It is MySQL that throughs the "overflow" error, far outside of PickleCol. Hence SQLObject cannot "not store the data" - the data has already been sent to MySQL. ---------------------------------------------------------------------- Comment By: Derek Anderson (rantenki) Date: 2008-02-21 21:17 Message: Logged In: YES user_id=1499846 Originator: YES !NOTE! Sorry. I should mention that this bug has a length set. The bug only occurs if that length=2**24 keyword is not passed.. Code should have read: {{{ class enomalism_user(TG_User,permissions_mixin): class sqlmeta: table = 'enomalism_user' idName = 'id' uuid = StringCol(length=36,alternateID=True,alternateMethodName='by_uuid',\ default=gen_uuid) lang_pref = StringCol(length=16,varchar=True,alternateID=False,default="en",unique=Fals e,notNone=True) data = PickleCol(title="data",dbName="data",default={}) }}} ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1898977&group_id=74338 |
|
From: SourceForge.net <no...@so...> - 2008-02-21 19:15:23
|
Bugs item #1898977, was opened at 2008-02-21 21:00 Message generated for change (Comment added) made by phd You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1898977&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Derek Anderson (rantenki) Assigned to: Nobody/Anonymous (nobody) Summary: picklecol truncates/corrupts data dangerously Initial Comment: When a picklecol is created, it defaults to a tinyblob. This in itself is probably a good behavior, but when combined with the failure mode of writing too much data, it can be dangerous. For example: {{{ class enomalism_user(TG_User,permissions_mixin): class sqlmeta: table = 'enomalism_user' idName = 'id' uuid = StringCol(length=36,alternateID=True,alternateMethodName='by_uuid',\ default=gen_uuid) lang_pref = StringCol(length=16,varchar=True,alternateID=False,default="en",unique=False,notNone=True) data = PickleCol(title="data",dbName="data",default={},length=2**24) }}} If you write "X"*257 to the data field, it will overflow with a "truncated" error, but that leaves the data in a corrupted state, and an exception is thrown when trying to read the user row. A better solution would be to throw the error, but to not store the data, preventing the exception, and leaving the user data in a usable state. Note: This leaves a Turbogears user in an unusable state, and could lead to a DOS attack. Obviously my obligation is to test for this kind of thing, but it is the ideal behind the SQLO ORM to prevent db based failures by default, so... ---------------------------------------------------------------------- >Comment By: Oleg Broytmann (phd) Date: 2008-02-21 22:15 Message: Logged In: YES user_id=4799 Originator: NO >From the word "tinyblob" I can guess you use MySQL. It is MySQL that throughs the "overflow" error, far outside of PickleCol. Hence SQLObject cannot "not store the data" - the data has already been sent to MySQL. ---------------------------------------------------------------------- Comment By: Derek Anderson (rantenki) Date: 2008-02-21 21:17 Message: Logged In: YES user_id=1499846 Originator: YES !NOTE! Sorry. I should mention that this bug has a length set. The bug only occurs if that length=2**24 keyword is not passed.. Code should have read: {{{ class enomalism_user(TG_User,permissions_mixin): class sqlmeta: table = 'enomalism_user' idName = 'id' uuid = StringCol(length=36,alternateID=True,alternateMethodName='by_uuid',\ default=gen_uuid) lang_pref = StringCol(length=16,varchar=True,alternateID=False,default="en",unique=Fals e,notNone=True) data = PickleCol(title="data",dbName="data",default={}) }}} ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1898977&group_id=74338 |
|
From: SourceForge.net <no...@so...> - 2008-02-21 18:17:42
|
Bugs item #1898977, was opened at 2008-02-21 10:00 Message generated for change (Comment added) made by rantenki You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1898977&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Derek Anderson (rantenki) Assigned to: Nobody/Anonymous (nobody) Summary: picklecol truncates/corrupts data dangerously Initial Comment: When a picklecol is created, it defaults to a tinyblob. This in itself is probably a good behavior, but when combined with the failure mode of writing too much data, it can be dangerous. For example: {{{ class enomalism_user(TG_User,permissions_mixin): class sqlmeta: table = 'enomalism_user' idName = 'id' uuid = StringCol(length=36,alternateID=True,alternateMethodName='by_uuid',\ default=gen_uuid) lang_pref = StringCol(length=16,varchar=True,alternateID=False,default="en",unique=False,notNone=True) data = PickleCol(title="data",dbName="data",default={},length=2**24) }}} If you write "X"*257 to the data field, it will overflow with a "truncated" error, but that leaves the data in a corrupted state, and an exception is thrown when trying to read the user row. A better solution would be to throw the error, but to not store the data, preventing the exception, and leaving the user data in a usable state. Note: This leaves a Turbogears user in an unusable state, and could lead to a DOS attack. Obviously my obligation is to test for this kind of thing, but it is the ideal behind the SQLO ORM to prevent db based failures by default, so... ---------------------------------------------------------------------- >Comment By: Derek Anderson (rantenki) Date: 2008-02-21 10:17 Message: Logged In: YES user_id=1499846 Originator: YES !NOTE! Sorry. I should mention that this bug has a length set. The bug only occurs if that length=2**24 keyword is not passed.. Code should have read: {{{ class enomalism_user(TG_User,permissions_mixin): class sqlmeta: table = 'enomalism_user' idName = 'id' uuid = StringCol(length=36,alternateID=True,alternateMethodName='by_uuid',\ default=gen_uuid) lang_pref = StringCol(length=16,varchar=True,alternateID=False,default="en",unique=Fals e,notNone=True) data = PickleCol(title="data",dbName="data",default={}) }}} ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1898977&group_id=74338 |
|
From: SourceForge.net <no...@so...> - 2008-02-21 18:00:09
|
Bugs item #1898977, was opened at 2008-02-21 10:00 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1898977&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Derek Anderson (rantenki) Assigned to: Nobody/Anonymous (nobody) Summary: picklecol truncates/corrupts data dangerously Initial Comment: When a picklecol is created, it defaults to a tinyblob. This in itself is probably a good behavior, but when combined with the failure mode of writing too much data, it can be dangerous. For example: {{{ class enomalism_user(TG_User,permissions_mixin): class sqlmeta: table = 'enomalism_user' idName = 'id' uuid = StringCol(length=36,alternateID=True,alternateMethodName='by_uuid',\ default=gen_uuid) lang_pref = StringCol(length=16,varchar=True,alternateID=False,default="en",unique=False,notNone=True) data = PickleCol(title="data",dbName="data",default={},length=2**24) }}} If you write "X"*257 to the data field, it will overflow with a "truncated" error, but that leaves the data in a corrupted state, and an exception is thrown when trying to read the user row. A better solution would be to throw the error, but to not store the data, preventing the exception, and leaving the user data in a usable state. Note: This leaves a Turbogears user in an unusable state, and could lead to a DOS attack. Obviously my obligation is to test for this kind of thing, but it is the ideal behind the SQLO ORM to prevent db based failures by default, so... ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1898977&group_id=74338 |
|
From: SourceForge.net <no...@so...> - 2008-02-16 13:49:57
|
Bugs item #1894909, was opened at 2008-02-16 15:49 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1894909&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: MySQL Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Neil Muller (nitwit) Assigned to: Nobody/Anonymous (nobody) Summary: mysqlconenction should handle threads like sqliteconnection Initial Comment: Mysqldb only supports threadsafety level 1, so connections can't be shared between threads. sqlite has the same issues, so mysqlconenction needs similiar logic for dealing with threads. I've attached a patch based on sqliteconnection, which resolves the issue for me. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=1894909&group_id=74338 |
|
From: <sub...@co...> - 2008-02-14 16:23:40
|
Author: phd Date: 2008-02-14 09:11:14 -0700 (Thu, 14 Feb 2008) New Revision: 3258 Modified: SQLObject/trunk/setup.cfg Log: Added SelectResults; sorted alphabetically. Modified: SQLObject/trunk/setup.cfg =================================================================== --- SQLObject/trunk/setup.cfg 2008-02-14 16:10:35 UTC (rev 3257) +++ SQLObject/trunk/setup.cfg 2008-02-14 16:11:14 UTC (rev 3258) @@ -11,11 +11,11 @@ [pudge] theme = pythonpaste.org -docs = docs/index.txt docs/SQLObject.txt docs/TODO.txt - docs/DeveloperGuide.txt docs/FAQ.txt docs/Inheritance.txt - docs/News.txt docs/News1.txt docs/SQLBuilder.txt docs/sqlobject-admin.txt - docs/community.txt docs/links.txt docs/download.txt - docs/Authors.txt docs/Versioning.txt docs/sqlobject-architecture.txt +docs = docs/index.txt docs/Authors.txt docs/DeveloperGuide.txt docs/FAQ.txt + docs/Inheritance.txt docs/News.txt docs/News1.txt docs/SQLBuilder.txt + docs/SQLObject.txt docs/SelectResults.txt docs/TODO.txt + docs/Versioning.txt docs/community.txt docs/download.txt docs/links.txt + docs/sqlobject-admin.txt docs/sqlobject-architecture.txt doc_base = docs/ dest = docs/html modules = sqlobject |
|
From: <sub...@co...> - 2008-02-14 16:12:19
|
Author: phd Date: 2008-02-14 09:10:35 -0700 (Thu, 14 Feb 2008) New Revision: 3257 Modified: SQLObject/branches/0.10/setup.cfg Log: Added SelectResults; sorted alphabetically. Modified: SQLObject/branches/0.10/setup.cfg =================================================================== --- SQLObject/branches/0.10/setup.cfg 2008-02-14 15:18:34 UTC (rev 3256) +++ SQLObject/branches/0.10/setup.cfg 2008-02-14 16:10:35 UTC (rev 3257) @@ -11,11 +11,11 @@ [pudge] theme = pythonpaste.org -docs = docs/index.txt docs/SQLObject.txt docs/TODO.txt - docs/DeveloperGuide.txt docs/FAQ.txt docs/Inheritance.txt - docs/News.txt docs/News1.txt docs/SQLBuilder.txt docs/sqlobject-admin.txt - docs/community.txt docs/links.txt docs/download.txt - docs/Authors.txt docs/Versioning.txt docs/sqlobject-architecture.txt +docs = docs/index.txt docs/Authors.txt docs/DeveloperGuide.txt docs/FAQ.txt + docs/Inheritance.txt docs/News.txt docs/News1.txt docs/SQLBuilder.txt + docs/SQLObject.txt docs/SelectResults.txt docs/TODO.txt + docs/Versioning.txt docs/community.txt docs/download.txt docs/links.txt + docs/sqlobject-admin.txt docs/sqlobject-architecture.txt doc_base = docs/ dest = docs/html modules = sqlobject |