sqlobject-cvs Mailing List for SQLObject (Page 43)
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
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sub...@co...> - 2010-12-06 15:14:29
|
Author: phd Date: Mon Dec 6 08:14:22 2010 New Revision: 4292 Log: Tagging 0.15.0 Added: SQLObject/tags/0.15.0/ - copied from r4291, SQLObject/branches/0.15/ |
From: <sub...@co...> - 2010-12-06 15:13:55
|
Author: phd Date: Mon Dec 6 08:13:49 2010 New Revision: 4291 Log: Merged revision 4290 from branch 0.15: SQLObject 0.15.0 was released 6 Dec 2010. Modified: SQLObject/trunk/docs/News.txt Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Mon Dec 6 08:11:38 2010 (r4290) +++ SQLObject/trunk/docs/News.txt Mon Dec 6 08:13:49 2010 (r4291) @@ -16,6 +16,8 @@ SQLObject 0.15.0 ================ +Released 6 Dec 2010. + Features & Interface -------------------- |
From: <sub...@co...> - 2010-12-06 15:11:47
|
Author: phd Date: Mon Dec 6 08:11:38 2010 New Revision: 4290 Log: SQLObject 0.15.0 was released 6 Dec 2010. Modified: SQLObject/branches/0.15/docs/News.txt Modified: SQLObject/branches/0.15/docs/News.txt ============================================================================== --- SQLObject/branches/0.15/docs/News.txt Sat Dec 4 14:57:59 2010 (r4289) +++ SQLObject/branches/0.15/docs/News.txt Mon Dec 6 08:11:38 2010 (r4290) @@ -10,6 +10,8 @@ SQLObject 0.15.0 ================ +Released 6 Dec 2010. + Features & Interface -------------------- |
From: <sub...@co...> - 2010-12-04 21:58:06
|
Author: phd Date: Sat Dec 4 14:57:59 2010 New Revision: 4289 Log: Removed duplicates. Reorder some items. Modified: SQLObject/branches/0.15/docs/TODO.txt Modified: SQLObject/branches/0.15/docs/TODO.txt ============================================================================== --- SQLObject/branches/0.15/docs/TODO.txt Sat Dec 4 14:43:24 2010 (r4288) +++ SQLObject/branches/0.15/docs/TODO.txt Sat Dec 4 14:57:59 2010 (r4289) @@ -5,7 +5,7 @@ * Proper %-encoded URI. -* __version__.py +* __version__.py. * Release 1.0. @@ -17,9 +17,9 @@ * Allow to override ConsoleWriter/LogWriter classes and makeDebugWriter function. -* delColumn('foreignKey'), delColumn('foreignKeyID') +* delColumn('foreignKey'), delColumn('foreignKeyID'). -* RelatedJoin.hasOther(otherObject[.id]) +* RelatedJoin.hasOther(otherObject[.id]). * tableParamSQL:: @@ -39,13 +39,6 @@ * List databases in the connection. -* IntervalCol - -* TimedeltaCol - -* Invert tests isinstance(obj, (tuple, list)) to not isinstance(obj, basestr) - to allow any iterable. - * SQLObject.fastInsert(). * Always use .lazyIter(). @@ -54,6 +47,13 @@ * Generators instead of loops (fetchall => fetchone). +* Invert tests isinstance(obj, (tuple, list)) to not isinstance(obj, basestr) + to allow any iterable. + +* IntervalCol. + +* TimedeltaCol. + * Cache columns in sqlmeta.getColumns(); reset the cache on add/Del Column/Join. * Stop supporting Python 2.4: use 'with lock'; use hashlib instead of md5. @@ -66,21 +66,10 @@ function1 = ExpressionCol(func.my_function(MyClass.q.col1)) function2 = ExpressionCol('sum(col2)') -* Catch all DB API exceptions and convert them to sqlobject.dberrors. - -* Memcache. - -* Parametrized queries. - -* PREPARE/EXECUTE +* PREPARE/EXECUTE. * Protect all .encode(), catch UnicodeEncode exceptions and reraise Invalid. -* Better joins - automatic joins in .select() - based on ForeignKey/MultipleJoin/RelatedJoin. - -* Python 3.0+. - * More drivers for PostgreSQL: `py-postgresql <http://python.projects.postgresql.org/>`__, `pg8000 <http://pybrary.net/pg8000/>`__, `ocpgdb <http://code.google.com/p/ocpgdb/>`__, @@ -91,14 +80,23 @@ * More drivers for FireBird: `pyfirebirdsql <https://github.com/nakagami/pyfirebirdsql>`__. +* Made SQLObject unicode-based instead of just unicode-aware. All internal + processing should be done with unicode strings, conversion to/from ascii + strings should happen for non-unicode DB API drivers. + +* Python 3.0+. + +* Profile of SQLObject performance, so that I can identify bottlenecks. + +* Refactor ``DBConnection`` to use parametrized queries instead of + generating query strings. + * dict API: use getitem interface for column access instead of getattr; reserve getattr for internal attributes only; this helps to avoid collisions with internal attributes. * Or move column values access to a separate namespace, e.g. .c: row.c.name. -* More documentation. Wiki. Trac. Mercurial. - * Use DBUtils_, especially SolidConnection. .. _DBUtils: http://www.webwareforpython.org/DBUtils @@ -116,29 +114,26 @@ * Optimistic locking and other techniques to handle concurrency. -* Profile of SQLObject performance, so that I can identify bottlenecks. - * Increase hooks with FormEncode validation and form generation package, so SQLObject classes (read: schemas) can be published for editing more directly and easily. (First step: get Schema-generating method into - sqlmeta class) + sqlmeta class). -* Automatic joins in select queries. +* Better joins - automatic joins in .select() based on + ForeignKey/MultipleJoin/RelatedJoin. * More kinds of joins, and more powerful join results (closer to how `select` works). -* Refactor ``DBConnection`` to use parameterized queries instead of - generating query strings. - * A hierarchy of exceptions. SQLObject should translate exceptions from - low-level drivers to a consistent set of high-level exceptions. + low-level drivers to a consistent set of high-level exceptions in + sqlobject.dberrors. * Merge SQLObject.create*, .create*SQL methods with DBPI.create* methods. -* Made SQLObject unicode-based instead of just unicode-aware. All internal - processing should be done with unicode strings, conversion to/from ascii - strings should happen for non-unicode DB API drivers. +* Memcache. + +* More documentation. Wiki. Trac. Mercurial. .. image:: http://sflogo.sourceforge.net/sflogo.php?group_id=74338&type=10 :target: http://sourceforge.net/projects/sqlobject |
From: <sub...@co...> - 2010-12-04 21:43:34
|
Author: phd Date: Sat Dec 4 14:43:24 2010 New Revision: 4288 Log: More drivers (with URLs) for Postgres, MySQL and FireBird. Modified: SQLObject/branches/0.15/docs/TODO.txt Modified: SQLObject/branches/0.15/docs/TODO.txt ============================================================================== --- SQLObject/branches/0.15/docs/TODO.txt Mon Nov 22 10:50:39 2010 (r4287) +++ SQLObject/branches/0.15/docs/TODO.txt Sat Dec 4 14:43:24 2010 (r4288) @@ -81,13 +81,15 @@ * Python 3.0+. -* py-postgresql driver: http://python.projects.postgresql.org/ +* More drivers for PostgreSQL: `py-postgresql <http://python.projects.postgresql.org/>`__, + `pg8000 <http://pybrary.net/pg8000/>`__, + `ocpgdb <http://code.google.com/p/ocpgdb/>`__, + `bpgsql <http://barryp.org/software/bpgsql/>`__. -* MySQL Connector/Python: https://launchpad.net/myconnpy +* More drivers for MySQL: `MySQL Connector/Python <https://launchpad.net/myconnpy>`__, + `oursql MySQL bindings <https://launchpad.net/oursql>`__. -* oursql MySQL bindings: https://launchpad.net/oursql - -* pyfirebirdsql: https://github.com/nakagami/pyfirebirdsql +* More drivers for FireBird: `pyfirebirdsql <https://github.com/nakagami/pyfirebirdsql>`__. * dict API: use getitem interface for column access instead of getattr; reserve getattr for internal attributes only; this helps to avoid collisions with |
From: <sub...@co...> - 2010-11-22 17:50:45
|
Author: phd Date: Mon Nov 22 10:50:39 2010 New Revision: 4287 Log: Merged revision 4286 from branch 0.15: MySQL Connector/Python, oursql MySQL bindings, pyfirebirdsql. Modified: SQLObject/trunk/docs/TODO.txt Modified: SQLObject/trunk/docs/TODO.txt ============================================================================== --- SQLObject/trunk/docs/TODO.txt Mon Nov 22 10:49:24 2010 (r4286) +++ SQLObject/trunk/docs/TODO.txt Mon Nov 22 10:50:39 2010 (r4287) @@ -83,6 +83,12 @@ * py-postgresql driver: http://python.projects.postgresql.org/ +* MySQL Connector/Python: https://launchpad.net/myconnpy + +* oursql MySQL bindings: https://launchpad.net/oursql + +* pyfirebirdsql: https://github.com/nakagami/pyfirebirdsql + * dict API: use getitem interface for column access instead of getattr; reserve getattr for internal attributes only; this helps to avoid collisions with internal attributes. |
From: <sub...@co...> - 2010-11-22 17:49:30
|
Author: phd Date: Mon Nov 22 10:49:24 2010 New Revision: 4286 Log: Added URLs for MySQL Connector/Python, oursql MySQL bindings, pyfirebirdsql. Modified: SQLObject/branches/0.15/docs/TODO.txt Modified: SQLObject/branches/0.15/docs/TODO.txt ============================================================================== --- SQLObject/branches/0.15/docs/TODO.txt Mon Nov 22 10:17:01 2010 (r4285) +++ SQLObject/branches/0.15/docs/TODO.txt Mon Nov 22 10:49:24 2010 (r4286) @@ -83,6 +83,12 @@ * py-postgresql driver: http://python.projects.postgresql.org/ +* MySQL Connector/Python: https://launchpad.net/myconnpy + +* oursql MySQL bindings: https://launchpad.net/oursql + +* pyfirebirdsql: https://github.com/nakagami/pyfirebirdsql + * dict API: use getitem interface for column access instead of getattr; reserve getattr for internal attributes only; this helps to avoid collisions with internal attributes. |
From: <sub...@co...> - 2010-11-22 17:17:08
|
Author: phd Date: Mon Nov 22 10:17:01 2010 New Revision: 4285 Log: Merged revision 4284 from branch 0.15: published my personal TODO list. Modified: SQLObject/trunk/docs/TODO.txt Modified: SQLObject/trunk/docs/TODO.txt ============================================================================== --- SQLObject/trunk/docs/TODO.txt Mon Nov 22 10:15:00 2010 (r4284) +++ SQLObject/trunk/docs/TODO.txt Mon Nov 22 10:17:01 2010 (r4285) @@ -1,6 +1,96 @@ TODO ---- +* Stop supporting parameter 'backend'. + +* Proper %-encoded URI. + +* __version__.py + +* Release 1.0. + +* Decorators @classmethod and @staticmethod. + +* Declare one encoding for all UnicodeCol's per table or even per connection. + Don't forget about fromDatabase. + +* Allow to override ConsoleWriter/LogWriter classes and makeDebugWriter + function. + +* delColumn('foreignKey'), delColumn('foreignKeyID') + +* RelatedJoin.hasOther(otherObject[.id]) + +* tableParamSQL:: + + class MyTable(SQLObject): + class sqlmeta: + tableParamSQL = 'ENGINE InnoDB' + tableParamSQL = {'mysql': 'ENGINE InnoDB'} + +* List tables in the DB. The query in MySQL is 'SHOW TABLES'; in SQLite it is + + SELECT name FROM sqlite_master WHERE type='table' ORDER BY name + + and in Postgres it is something like + + SELECT c.relname FROM pg_class c, pg_type t + WHERE c.reltype = t.oid AND t.typname = 'table'. + +* List databases in the connection. + +* IntervalCol + +* TimedeltaCol + +* Invert tests isinstance(obj, (tuple, list)) to not isinstance(obj, basestr) + to allow any iterable. + +* SQLObject.fastInsert(). + +* Always use .lazyIter(). + +* Optimize Iteration.next() - use cursor.fetchmany(). + +* Generators instead of loops (fetchall => fetchone). + +* Cache columns in sqlmeta.getColumns(); reset the cache on add/Del Column/Join. + +* Stop supporting Python 2.4: use 'with lock'; use hashlib instead of md5. + +* Stop supporting Python 2.5: remove import sets. + +* Expression columns - in SELECT but not in INSERT/UPDATE. Something like this:: + + class MyClass(SQLObject): + function1 = ExpressionCol(func.my_function(MyClass.q.col1)) + function2 = ExpressionCol('sum(col2)') + +* Catch all DB API exceptions and convert them to sqlobject.dberrors. + +* Memcache. + +* Parametrized queries. + +* PREPARE/EXECUTE + +* Protect all .encode(), catch UnicodeEncode exceptions and reraise Invalid. + +* Better joins - automatic joins in .select() + based on ForeignKey/MultipleJoin/RelatedJoin. + +* Python 3.0+. + +* py-postgresql driver: http://python.projects.postgresql.org/ + +* dict API: use getitem interface for column access instead of getattr; reserve + getattr for internal attributes only; this helps to avoid collisions with + internal attributes. + +* Or move column values access to a separate namespace, e.g. .c: row.c.name. + +* More documentation. Wiki. Trac. Mercurial. + * Use DBUtils_, especially SolidConnection. .. _DBUtils: http://www.webwareforpython.org/DBUtils |
From: <sub...@co...> - 2010-11-22 17:15:07
|
Author: phd Date: Mon Nov 22 10:15:00 2010 New Revision: 4284 Log: Published my personal TODO list. Modified: SQLObject/branches/0.15/docs/TODO.txt Modified: SQLObject/branches/0.15/docs/TODO.txt ============================================================================== --- SQLObject/branches/0.15/docs/TODO.txt Mon Nov 22 09:29:00 2010 (r4283) +++ SQLObject/branches/0.15/docs/TODO.txt Mon Nov 22 10:15:00 2010 (r4284) @@ -1,6 +1,96 @@ TODO ---- +* Stop supporting parameter 'backend'. + +* Proper %-encoded URI. + +* __version__.py + +* Release 1.0. + +* Decorators @classmethod and @staticmethod. + +* Declare one encoding for all UnicodeCol's per table or even per connection. + Don't forget about fromDatabase. + +* Allow to override ConsoleWriter/LogWriter classes and makeDebugWriter + function. + +* delColumn('foreignKey'), delColumn('foreignKeyID') + +* RelatedJoin.hasOther(otherObject[.id]) + +* tableParamSQL:: + + class MyTable(SQLObject): + class sqlmeta: + tableParamSQL = 'ENGINE InnoDB' + tableParamSQL = {'mysql': 'ENGINE InnoDB'} + +* List tables in the DB. The query in MySQL is 'SHOW TABLES'; in SQLite it is + + SELECT name FROM sqlite_master WHERE type='table' ORDER BY name + + and in Postgres it is something like + + SELECT c.relname FROM pg_class c, pg_type t + WHERE c.reltype = t.oid AND t.typname = 'table'. + +* List databases in the connection. + +* IntervalCol + +* TimedeltaCol + +* Invert tests isinstance(obj, (tuple, list)) to not isinstance(obj, basestr) + to allow any iterable. + +* SQLObject.fastInsert(). + +* Always use .lazyIter(). + +* Optimize Iteration.next() - use cursor.fetchmany(). + +* Generators instead of loops (fetchall => fetchone). + +* Cache columns in sqlmeta.getColumns(); reset the cache on add/Del Column/Join. + +* Stop supporting Python 2.4: use 'with lock'; use hashlib instead of md5. + +* Stop supporting Python 2.5: remove import sets. + +* Expression columns - in SELECT but not in INSERT/UPDATE. Something like this:: + + class MyClass(SQLObject): + function1 = ExpressionCol(func.my_function(MyClass.q.col1)) + function2 = ExpressionCol('sum(col2)') + +* Catch all DB API exceptions and convert them to sqlobject.dberrors. + +* Memcache. + +* Parametrized queries. + +* PREPARE/EXECUTE + +* Protect all .encode(), catch UnicodeEncode exceptions and reraise Invalid. + +* Better joins - automatic joins in .select() + based on ForeignKey/MultipleJoin/RelatedJoin. + +* Python 3.0+. + +* py-postgresql driver: http://python.projects.postgresql.org/ + +* dict API: use getitem interface for column access instead of getattr; reserve + getattr for internal attributes only; this helps to avoid collisions with + internal attributes. + +* Or move column values access to a separate namespace, e.g. .c: row.c.name. + +* More documentation. Wiki. Trac. Mercurial. + * Use DBUtils_, especially SolidConnection. .. _DBUtils: http://www.webwareforpython.org/DBUtils |
From: <sub...@co...> - 2010-11-22 16:29:08
|
Author: phd Date: Mon Nov 22 09:29:00 2010 New Revision: 4283 Log: dev-r4283. Modified: SQLObject/tags/0.15.0b1/setup.py Modified: SQLObject/tags/0.15.0b1/setup.py ============================================================================== --- SQLObject/tags/0.15.0b1/setup.py Mon Nov 22 09:27:12 2010 (r4282) +++ SQLObject/tags/0.15.0b1/setup.py Mon Nov 22 09:29:00 2010 (r4283) @@ -49,7 +49,7 @@ author="Ian Bicking", author_email="ia...@co...", url="http://sqlobject.org/devel/", - download_url="http://cheeseshop.python.org/pypi/SQLObject/0.15.0b1-dev4282", + download_url="http://cheeseshop.python.org/pypi/SQLObject/0.15.0b1dev-r4283", license="LGPL", packages=["sqlobject"] + ['sqlobject.%s' % package for package in subpackages], scripts=["scripts/sqlobject-admin"], |
From: <sub...@co...> - 2010-11-22 16:27:20
|
Author: phd Date: Mon Nov 22 09:27:12 2010 New Revision: 4282 Log: Version 0.15.0b1. Modified: SQLObject/tags/0.15.0b1/README.txt SQLObject/tags/0.15.0b1/setup.py SQLObject/tags/0.15.0b1/sqlobject/__init__.py SQLObject/tags/0.15.0b1/sqlobject/main.py Modified: SQLObject/tags/0.15.0b1/README.txt ============================================================================== --- SQLObject/tags/0.15.0b1/README.txt Mon Nov 22 09:23:58 2010 (r4281) +++ SQLObject/tags/0.15.0b1/README.txt Mon Nov 22 09:27:12 2010 (r4282) @@ -1,5 +1,5 @@ -SQLObject 0.15 -============== +SQLObject 0.15.0b1 +================== Thanks for looking at SQLObject. SQLObject is an object-relational mapper, i.e., a library that will wrap your database tables in Python Modified: SQLObject/tags/0.15.0b1/setup.py ============================================================================== --- SQLObject/tags/0.15.0b1/setup.py Mon Nov 22 09:23:58 2010 (r4281) +++ SQLObject/tags/0.15.0b1/setup.py Mon Nov 22 09:27:12 2010 (r4282) @@ -21,7 +21,7 @@ """ setup(name="SQLObject", - version="0.15", + version="0.15.0b1", description="Object-Relational Manager, aka database wrapper", long_description="""\ SQLObject is a popular *Object Relational Manager* for providing an @@ -49,7 +49,7 @@ author="Ian Bicking", author_email="ia...@co...", url="http://sqlobject.org/devel/", - download_url="http://cheeseshop.python.org/pypi/SQLObject/0.15", + download_url="http://cheeseshop.python.org/pypi/SQLObject/0.15.0b1-dev4282", license="LGPL", packages=["sqlobject"] + ['sqlobject.%s' % package for package in subpackages], scripts=["scripts/sqlobject-admin"], Modified: SQLObject/tags/0.15.0b1/sqlobject/__init__.py ============================================================================== --- SQLObject/tags/0.15.0b1/sqlobject/__init__.py Mon Nov 22 09:23:58 2010 (r4281) +++ SQLObject/tags/0.15.0b1/sqlobject/__init__.py Mon Nov 22 09:27:12 2010 (r4282) @@ -1,5 +1,5 @@ """ -SQLObject 0.15 +SQLObject 0.15.0b1 """ from col import * Modified: SQLObject/tags/0.15.0b1/sqlobject/main.py ============================================================================== --- SQLObject/tags/0.15.0b1/sqlobject/main.py Mon Nov 22 09:23:58 2010 (r4281) +++ SQLObject/tags/0.15.0b1/sqlobject/main.py Mon Nov 22 09:27:12 2010 (r4282) @@ -1,6 +1,6 @@ """ -SQLObject 0.15 --------------- +SQLObject 0.15.0b1 +------------------ :author: Ian Bicking <ia...@co...> |
From: <sub...@co...> - 2010-11-22 16:24:05
|
Author: phd Date: Mon Nov 22 09:23:58 2010 New Revision: 4281 Log: Tagging 0.15.0b1 Added: SQLObject/tags/0.15.0b1/ - copied from r4280, SQLObject/branches/0.15/ |
From: <sub...@co...> - 2010-11-22 16:22:30
|
Author: phd Date: Mon Nov 22 09:22:21 2010 New Revision: 4280 Log: SQLObject 0.15.0. Modified: SQLObject/trunk/docs/News.txt Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Mon Nov 22 09:21:24 2010 (r4279) +++ SQLObject/trunk/docs/News.txt Mon Nov 22 09:22:21 2010 (r4280) @@ -13,6 +13,12 @@ Features & Interface -------------------- +SQLObject 0.15.0 +================ + +Features & Interface +-------------------- + * Major API change: all signals are sent with the instance (or the class) as the first parameter. The following signals were changed: RowCreateSignal, RowCreatedSignal, DeleteColumnSignal. |
From: <sub...@co...> - 2010-11-22 16:21:32
|
Author: phd Date: Mon Nov 22 09:21:24 2010 New Revision: 4279 Log: SQLObject 0.15.0. Modified: SQLObject/branches/0.15/docs/News.txt Modified: SQLObject/branches/0.15/docs/News.txt ============================================================================== --- SQLObject/branches/0.15/docs/News.txt Fri Nov 19 08:37:52 2010 (r4278) +++ SQLObject/branches/0.15/docs/News.txt Mon Nov 22 09:21:24 2010 (r4279) @@ -7,8 +7,8 @@ .. _start: -SQLObject (trunk) -================= +SQLObject 0.15.0 +================ Features & Interface -------------------- |
From: <sub...@co...> - 2010-11-19 15:38:01
|
Author: phd Date: Fri Nov 19 08:37:52 2010 New Revision: 4278 Log: The trunk will become 0.16. Modified: SQLObject/trunk/README.txt SQLObject/trunk/setup.py SQLObject/trunk/sqlobject/__init__.py SQLObject/trunk/sqlobject/main.py Modified: SQLObject/trunk/README.txt ============================================================================== --- SQLObject/trunk/README.txt Fri Nov 19 08:35:52 2010 (r4277) +++ SQLObject/trunk/README.txt Fri Nov 19 08:37:52 2010 (r4278) @@ -1,4 +1,4 @@ -SQLObject 0.15 +SQLObject 0.16 ============== Thanks for looking at SQLObject. SQLObject is an object-relational Modified: SQLObject/trunk/setup.py ============================================================================== --- SQLObject/trunk/setup.py Fri Nov 19 08:35:52 2010 (r4277) +++ SQLObject/trunk/setup.py Fri Nov 19 08:37:52 2010 (r4278) @@ -21,7 +21,7 @@ """ setup(name="SQLObject", - version="0.15", + version="0.16", description="Object-Relational Manager, aka database wrapper", long_description="""\ SQLObject is a popular *Object Relational Manager* for providing an @@ -35,7 +35,7 @@ Supports MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL and MaxDB (SAPDB). For development see the `subversion repository -<http://svn.colorstudy.com/SQLObject/trunk#egg=SQLObject-0.14dev>`_ +<http://svn.colorstudy.com/SQLObject/trunk#egg=SQLObject-0.16dev>`_ """, classifiers=[ "Development Status :: 5 - Production/Stable", @@ -49,7 +49,7 @@ author="Ian Bicking", author_email="ia...@co...", url="http://sqlobject.org/devel/", - download_url="http://cheeseshop.python.org/pypi/SQLObject/", + download_url="http://cheeseshop.python.org/pypi/SQLObject/0.16", license="LGPL", packages=["sqlobject"] + ['sqlobject.%s' % package for package in subpackages], scripts=["scripts/sqlobject-admin"], Modified: SQLObject/trunk/sqlobject/__init__.py ============================================================================== --- SQLObject/trunk/sqlobject/__init__.py Fri Nov 19 08:35:52 2010 (r4277) +++ SQLObject/trunk/sqlobject/__init__.py Fri Nov 19 08:37:52 2010 (r4278) @@ -1,5 +1,5 @@ """ -SQLObject 0.15 +SQLObject 0.16 """ from col import * Modified: SQLObject/trunk/sqlobject/main.py ============================================================================== --- SQLObject/trunk/sqlobject/main.py Fri Nov 19 08:35:52 2010 (r4277) +++ SQLObject/trunk/sqlobject/main.py Fri Nov 19 08:37:52 2010 (r4278) @@ -1,5 +1,5 @@ """ -SQLObject 0.15 +SQLObject 0.16 -------------- :author: Ian Bicking <ia...@co...> |
From: <sub...@co...> - 2010-11-19 15:35:59
|
Author: phd Date: Fri Nov 19 08:35:52 2010 New Revision: 4277 Log: Fixed URLs. Modified: SQLObject/branches/0.15/setup.py Modified: SQLObject/branches/0.15/setup.py ============================================================================== --- SQLObject/branches/0.15/setup.py Fri Nov 19 08:32:11 2010 (r4276) +++ SQLObject/branches/0.15/setup.py Fri Nov 19 08:35:52 2010 (r4277) @@ -35,7 +35,7 @@ Supports MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL and MaxDB (SAPDB). For development see the `subversion repository -<http://svn.colorstudy.com/SQLObject/trunk#egg=SQLObject-0.14dev>`_ +<http://svn.colorstudy.com/SQLObject/trunk#egg=SQLObject-0.16dev>`_ """, classifiers=[ "Development Status :: 5 - Production/Stable", @@ -49,7 +49,7 @@ author="Ian Bicking", author_email="ia...@co...", url="http://sqlobject.org/devel/", - download_url="http://cheeseshop.python.org/pypi/SQLObject/", + download_url="http://cheeseshop.python.org/pypi/SQLObject/0.15", license="LGPL", packages=["sqlobject"] + ['sqlobject.%s' % package for package in subpackages], scripts=["scripts/sqlobject-admin"], |
From: <sub...@co...> - 2010-11-19 15:32:20
|
Author: phd Date: Fri Nov 19 08:32:11 2010 New Revision: 4276 Log: Branch 0.15 Added: SQLObject/branches/0.15/ - copied from r4275, SQLObject/trunk/ |
From: SourceForge.net <no...@so...> - 2010-11-19 15:18:50
|
Bugs item #3111474, was opened at 2010-11-18 15:14 Message generated for change (Settings changed) made by phd You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=3111474&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: Documentation Group: SQLObject release (specify) >Status: Closed >Resolution: Fixed Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) >Assigned to: Oleg Broytman (phd) Summary: _defaultOrder Documentation outdated Initial Comment: Documentation autodated, _defaultOrder does not work like described in: http://sqlobject.org/SQLObject.html#exported-symbols from sqlobject import SQLObject, UnicodeCol, connectionForURI, sqlhub connection = connectionForURI('sqlite:/:memory:?debug=1') sqlhub.processConnection = connection class DefOrder(SQLObject): _defaultOrder = "name" name = UnicodeCol(default="") DefOrder.createTable() def test_defaultorder(): b = DefOrder(name="b") a = DefOrder(name="a") s = DefOrder.select() assert s[0] == a def test_defaultorder_sqlmeta(): for d in DefOrder.select(): d.destroySelf() DefOrder.sqlmeta.defaultOrder = DefOrder.q.name b = DefOrder(name="b") a = DefOrder(name="a") s = DefOrder.select() assert s[0] == a gregor@valun:/tmp$ nosetests --pdb defaultorder.py /usr/lib/pymodules/python2.6/tw/core/view.py:223: DeprecationWarning: object.__new__() takes no parameters obj = object.__new__(cls, *args, **kw) F. ====================================================================== FAIL: defaultorder.test_defaultorder ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/lib/pymodules/python2.6/nose/case.py", line 183, in runTest self.test(*self.arg) File "/tmp/defaultorder.py", line 15, in test_defaultorder assert s[0] == a AssertionError: -------------------- >> begin captured stdout << --------------------- 2/QueryIns: INSERT INTO def_order (name) VALUES ('b') 2/QueryR : INSERT INTO def_order (name) VALUES ('b') 3/QueryOne: SELECT name FROM def_order WHERE ((def_order.id) = (1)) 3/QueryR : SELECT name FROM def_order WHERE ((def_order.id) = (1)) 4/QueryIns: INSERT INTO def_order (name) VALUES ('a') 4/QueryR : INSERT INTO def_order (name) VALUES ('a') 5/QueryOne: SELECT name FROM def_order WHERE ((def_order.id) = (2)) 5/QueryR : SELECT name FROM def_order WHERE ((def_order.id) = (2)) 6/Select : SELECT def_order.id, def_order.name FROM def_order WHERE 1 = 1 LIMIT 1 6/QueryR : SELECT def_order.id, def_order.name FROM def_order WHERE 1 = 1 LIMIT 1 --------------------- >> end captured stdout << ---------------------- ---------------------------------------------------------------------- Ran 2 tests in 0.003s FAILED (failures=1) ---------------------------------------------------------------------- >Comment By: Oleg Broytman (phd) Date: 2010-11-19 18:18 Message: Fixed in the revisions 4273-4275 (branches 0.13, 0.14 and the trunk). ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=3111474&group_id=74338 |
From: <sub...@co...> - 2010-11-19 15:18:23
|
Author: phd Date: Fri Nov 19 08:18:17 2010 New Revision: 4275 Log: Updated documentation about _defaultOrder - it has been moved to sqlmeta. Modified: SQLObject/trunk/docs/SQLObject.txt SQLObject/trunk/sqlobject/tests/test_string_id.py (props changed) Modified: SQLObject/trunk/docs/SQLObject.txt ============================================================================== --- SQLObject/trunk/docs/SQLObject.txt Fri Nov 19 08:17:41 2010 (r4274) +++ SQLObject/trunk/docs/SQLObject.txt Fri Nov 19 08:18:17 2010 (r4275) @@ -394,9 +394,11 @@ types as well), or call ``MyClass.select().reversed()``. orderBy can also take a list of columns in the same format: ``["-weight", "name"]``. -You can use the special class variable `_defaultOrder` to give a +You can use the `sqlmeta`_ class variable `defaultOrder` to give a default ordering for all selects. To get an unordered result when -`_defaultOrder` is used, use ``orderBy=None``. +`defaultOrder` is used, use ``orderBy=None``. + +.. _`sqlmeta`: `Class sqlmeta`_ Select results are generators, which are lazily evaluated. So the SQL is only executed when you iterate over the select results, or if you @@ -1290,7 +1292,7 @@ You should pass that parameter. `orderBy`: Like the `orderBy`_ argument to `select()`, you can specify - the order that the joined objects should be returned in. `_defaultOrder` + the order that the joined objects should be returned in. `defaultOrder` will be used if not specified; ``None`` forces unordered results. `joinMethodName`: When adding joins dynamically (using the class method `addJoin`_), |
From: <sub...@co...> - 2010-11-19 15:17:50
|
Author: phd Date: Fri Nov 19 08:17:41 2010 New Revision: 4274 Log: Updated documentation about _defaultOrder - it has been moved to sqlmeta. Modified: SQLObject/branches/0.14/docs/SQLObject.txt SQLObject/branches/0.14/sqlobject/tests/test_string_id.py (props changed) Modified: SQLObject/branches/0.14/docs/SQLObject.txt ============================================================================== --- SQLObject/branches/0.14/docs/SQLObject.txt Fri Nov 19 08:09:11 2010 (r4273) +++ SQLObject/branches/0.14/docs/SQLObject.txt Fri Nov 19 08:17:41 2010 (r4274) @@ -394,9 +394,11 @@ types as well), or call ``MyClass.select().reversed()``. orderBy can also take a list of columns in the same format: ``["-weight", "name"]``. -You can use the special class variable `_defaultOrder` to give a +You can use the `sqlmeta`_ class variable `defaultOrder` to give a default ordering for all selects. To get an unordered result when -`_defaultOrder` is used, use ``orderBy=None``. +`defaultOrder` is used, use ``orderBy=None``. + +.. _`sqlmeta`: `Class sqlmeta`_ Select results are generators, which are lazily evaluated. So the SQL is only executed when you iterate over the select results, or if you @@ -1290,7 +1292,7 @@ You should pass that parameter. `orderBy`: Like the `orderBy`_ argument to `select()`, you can specify - the order that the joined objects should be returned in. `_defaultOrder` + the order that the joined objects should be returned in. `defaultOrder` will be used if not specified; ``None`` forces unordered results. `joinMethodName`: When adding joins dynamically (using the class method `addJoin`_), |
From: <sub...@co...> - 2010-11-19 15:09:19
|
Author: phd Date: Fri Nov 19 08:09:11 2010 New Revision: 4273 Log: Updated documentation about _defaultOrder - it has been moved to sqlmeta. Modified: SQLObject/branches/0.13/docs/SQLObject.txt Modified: SQLObject/branches/0.13/docs/SQLObject.txt ============================================================================== --- SQLObject/branches/0.13/docs/SQLObject.txt Fri Nov 19 07:58:34 2010 (r4272) +++ SQLObject/branches/0.13/docs/SQLObject.txt Fri Nov 19 08:09:11 2010 (r4273) @@ -394,9 +394,11 @@ types as well), or call ``MyClass.select().reversed()``. orderBy can also take a list of columns in the same format: ``["-weight", "name"]``. -You can use the special class variable `_defaultOrder` to give a +You can use the `sqlmeta`_ class variable `defaultOrder` to give a default ordering for all selects. To get an unordered result when -`_defaultOrder` is used, use ``orderBy=None``. +`defaultOrder` is used, use ``orderBy=None``. + +.. _`sqlmeta`: `Class sqlmeta`_ Select results are generators, which are lazily evaluated. So the SQL is only executed when you iterate over the select results, or if you @@ -1281,7 +1283,7 @@ You should pass that parameter. `orderBy`: Like the `orderBy`_ argument to `select()`, you can specify - the order that the joined objects should be returned in. `_defaultOrder` + the order that the joined objects should be returned in. `defaultOrder` will be used if not specified; ``None`` forces unordered results. `joinMethodName`: When adding joins dynamically (using the class method `addJoin`_), |
From: <sub...@co...> - 2010-11-19 14:58:45
|
Author: phd Date: Fri Nov 19 07:58:34 2010 New Revision: 4272 Log: Updated example. Changed wording in News. Modified: SQLObject/trunk/docs/News.txt SQLObject/trunk/docs/SQLObject.txt Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Sat Nov 13 10:46:46 2010 (r4271) +++ SQLObject/trunk/docs/News.txt Fri Nov 19 07:58:34 2010 (r4272) @@ -17,9 +17,9 @@ as the first parameter. The following signals were changed: RowCreateSignal, RowCreatedSignal, DeleteColumnSignal. -* Major API change: post-functions for all signals are called with the - instance as the first parameter. The following signals were changed: - RowUpdatedSignal, RowDestroySignal, RowDestroyedSignal. +* Major API change: post-processing functions for all signals are called + with the instance as the first parameter. The following signals were + changed: RowUpdatedSignal, RowDestroySignal, RowDestroyedSignal. SQLObject 0.14.1 ================ Modified: SQLObject/trunk/docs/SQLObject.txt ============================================================================== --- SQLObject/trunk/docs/SQLObject.txt Sat Nov 13 10:46:46 2010 (r4271) +++ SQLObject/trunk/docs/SQLObject.txt Fri Nov 19 07:58:34 2010 (r4272) @@ -1883,7 +1883,7 @@ # GOOD method 2 kwargs['last_updated'] = datetime.datetime.now() - def created_listener(kwargs, post_funcs): + def created_listener(instance, kwargs, post_funcs): """"email me when new users added""" # email() implementation left as an exercise for the reader msg = "%s just was just added to the database!" % kwargs['name'] |
From: SourceForge.net <no...@so...> - 2010-11-18 12:14:38
|
Bugs item #3111474, was opened at 2010-11-18 12:14 Message generated for change (Tracker Item Submitted) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=3111474&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: SQLObject release (specify) Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: _defaultOrder Documentation outdated Initial Comment: Documentation autodated, _defaultOrder does not work like described in: http://sqlobject.org/SQLObject.html#exported-symbols from sqlobject import SQLObject, UnicodeCol, connectionForURI, sqlhub connection = connectionForURI('sqlite:/:memory:?debug=1') sqlhub.processConnection = connection class DefOrder(SQLObject): _defaultOrder = "name" name = UnicodeCol(default="") DefOrder.createTable() def test_defaultorder(): b = DefOrder(name="b") a = DefOrder(name="a") s = DefOrder.select() assert s[0] == a def test_defaultorder_sqlmeta(): for d in DefOrder.select(): d.destroySelf() DefOrder.sqlmeta.defaultOrder = DefOrder.q.name b = DefOrder(name="b") a = DefOrder(name="a") s = DefOrder.select() assert s[0] == a gregor@valun:/tmp$ nosetests --pdb defaultorder.py /usr/lib/pymodules/python2.6/tw/core/view.py:223: DeprecationWarning: object.__new__() takes no parameters obj = object.__new__(cls, *args, **kw) F. ====================================================================== FAIL: defaultorder.test_defaultorder ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/lib/pymodules/python2.6/nose/case.py", line 183, in runTest self.test(*self.arg) File "/tmp/defaultorder.py", line 15, in test_defaultorder assert s[0] == a AssertionError: -------------------- >> begin captured stdout << --------------------- 2/QueryIns: INSERT INTO def_order (name) VALUES ('b') 2/QueryR : INSERT INTO def_order (name) VALUES ('b') 3/QueryOne: SELECT name FROM def_order WHERE ((def_order.id) = (1)) 3/QueryR : SELECT name FROM def_order WHERE ((def_order.id) = (1)) 4/QueryIns: INSERT INTO def_order (name) VALUES ('a') 4/QueryR : INSERT INTO def_order (name) VALUES ('a') 5/QueryOne: SELECT name FROM def_order WHERE ((def_order.id) = (2)) 5/QueryR : SELECT name FROM def_order WHERE ((def_order.id) = (2)) 6/Select : SELECT def_order.id, def_order.name FROM def_order WHERE 1 = 1 LIMIT 1 6/QueryR : SELECT def_order.id, def_order.name FROM def_order WHERE 1 = 1 LIMIT 1 --------------------- >> end captured stdout << ---------------------- ---------------------------------------------------------------------- Ran 2 tests in 0.003s FAILED (failures=1) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=3111474&group_id=74338 |
From: <sub...@co...> - 2010-11-13 18:14:53
|
Author: phd Date: Sat Nov 13 10:26:37 2010 New Revision: 4270 Log: Major API change: all signals are sent with the instance (or the class) as the first parameter. The following signals were changed: RowCreateSignal, RowCreatedSignal, DeleteColumnSignal. Modified: SQLObject/trunk/docs/News.txt SQLObject/trunk/sqlobject/events.py SQLObject/trunk/sqlobject/main.py SQLObject/trunk/sqlobject/tests/test_events.py Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Fri Oct 15 07:04:19 2010 (r4269) +++ SQLObject/trunk/docs/News.txt Sat Nov 13 10:26:37 2010 (r4270) @@ -13,6 +13,10 @@ Features & Interface -------------------- +* Major API change: all signals are sent with the instance (or the class) + as the first parameter. The following signals were changed: + RowCreateSignal, RowCreatedSignal, DeleteColumnSignal. + SQLObject 0.14.1 ================ Modified: SQLObject/trunk/sqlobject/events.py ============================================================================== --- SQLObject/trunk/sqlobject/events.py Fri Oct 15 07:04:19 2010 (r4269) +++ SQLObject/trunk/sqlobject/events.py Sat Nov 13 10:26:37 2010 (r4270) @@ -70,7 +70,7 @@ class RowCreateSignal(Signal): """ Called before an instance is created, with the class as the - sender. Called with the arguments ``(kwargs, post_funcs)``. + sender. Called with the arguments ``(instance, kwargs, post_funcs)``. There may be a ``connection`` argument. ``kwargs``may be usefully modified. ``post_funcs`` is a list of callbacks, intended to have functions appended to it, and are called with the arguments @@ -82,7 +82,7 @@ class RowCreatedSignal(Signal): """ Called after an instance is created, with the class as the - sender. Called with the arguments ``(kwargs, post_funcs)``. + sender. Called with the arguments ``(instance, kwargs, post_funcs)``. There may be a ``connection`` argument. ``kwargs``may be usefully modified. ``post_funcs`` is a list of callbacks, intended to have functions appended to it, and are called with the arguments Modified: SQLObject/trunk/sqlobject/main.py ============================================================================== --- SQLObject/trunk/sqlobject/main.py Fri Oct 15 07:04:19 2010 (r4269) +++ SQLObject/trunk/sqlobject/main.py Sat Nov 13 10:26:37 2010 (r4270) @@ -461,8 +461,8 @@ raise IndexError( "Column with definition %r not found" % column) post_funcs = [] - cls.send(events.DeleteColumnSignal, connection, column.name, column, - post_funcs) + cls.send(events.DeleteColumnSignal, cls.soClass, connection, + column.name, column, post_funcs) name = column.name del sqlmeta.columns[name] del sqlmeta.columnDefinitions[name] @@ -1207,7 +1207,7 @@ return post_funcs = [] - self.sqlmeta.send(events.RowCreateSignal, kw, post_funcs) + self.sqlmeta.send(events.RowCreateSignal, self, kw, post_funcs) # Pass the connection object along if we were given one. if kw.has_key('connection'): @@ -1303,7 +1303,7 @@ post_funcs = [] kw = dict([('class', self.__class__), ('id', id)]) def _send_RowCreatedSignal(): - self.sqlmeta.send(events.RowCreatedSignal, kw, post_funcs) + self.sqlmeta.send(events.RowCreatedSignal, self, kw, post_funcs) for func in post_funcs: func(self) _postponed_local.postponed_calls.append(_send_RowCreatedSignal) Modified: SQLObject/trunk/sqlobject/tests/test_events.py ============================================================================== --- SQLObject/trunk/sqlobject/tests/test_events.py Fri Oct 15 07:04:19 2010 (r4269) +++ SQLObject/trunk/sqlobject/tests/test_events.py Sat Nov 13 10:26:37 2010 (r4270) @@ -37,10 +37,12 @@ def test_row_create(): setupClass(EventTester) watcher = make_listen(events.RowCreateSignal) - EventTester(name='foo') - EventTester(name='bar') + row1 = EventTester(name='foo') + row2 = EventTester(name='bar') assert len(watcher.log) == 2 - assert watcher.log[0] == ({'name': 'foo'}, []) + assert watcher.log == [ + (row1, {'name': 'foo'}, []), + (row2, {'name': 'bar'}, [])] def test_row_destroy(): setupClass(EventTester) @@ -102,9 +104,11 @@ c = IntCol() def _query(instance): - InheritableEventTestA.get(instance.id) + row = InheritableEventTestA.get(instance.id) + assert isinstance(row, InheritableEventTestC) + assert row.c == 3 -def _signal(kwargs, postfuncs): +def _signal(instance, kwargs, postfuncs): postfuncs.append(_query) def test_inheritance_row_created(): |
From: <sub...@co...> - 2010-11-13 18:14:41
|
Author: phd Date: Sat Nov 13 10:46:46 2010 New Revision: 4271 Log: Major API change: post-functions for all signals are called with the instance as the first parameter. The following signals were changed: RowUpdatedSignal, RowDestroySignal, RowDestroyedSignal. Modified: SQLObject/trunk/docs/News.txt SQLObject/trunk/sqlobject/events.py SQLObject/trunk/sqlobject/main.py Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Sat Nov 13 10:26:37 2010 (r4270) +++ SQLObject/trunk/docs/News.txt Sat Nov 13 10:46:46 2010 (r4271) @@ -17,6 +17,10 @@ as the first parameter. The following signals were changed: RowCreateSignal, RowCreatedSignal, DeleteColumnSignal. +* Major API change: post-functions for all signals are called with the + instance as the first parameter. The following signals were changed: + RowUpdatedSignal, RowDestroySignal, RowDestroyedSignal. + SQLObject 0.14.1 ================ Modified: SQLObject/trunk/sqlobject/events.py ============================================================================== --- SQLObject/trunk/sqlobject/events.py Sat Nov 13 10:26:37 2010 (r4270) +++ SQLObject/trunk/sqlobject/events.py Sat Nov 13 10:46:46 2010 (r4271) @@ -100,8 +100,8 @@ class. Arguments are ``(instance, post_funcs)``. ``post_funcs`` is a list of callbacks, intended to have - functions appended to it, and are called without arguments. If - any of the post_funcs raises an exception, the deletion is only + functions appended to it, and are called with arguments ``(instance)``. + If any of the post_funcs raises an exception, the deletion is only affected if this will prevent a commit. You cannot cancel the delete, but you can raise an exception (which will @@ -139,8 +139,10 @@ """ Called when an instance is updated through a call to ``.set()`` (or a column attribute assignment). The arguments are - ``(instance)``. This is run *after* the instance is updated; - Works better with lazyUpdate = True + ``(instance, post_funcs)``. ``post_funcs`` is a list of callbacks, + intended to have functions appended to it, and are called with the + arguments ``(new_instance)``. This is run *after* the instance is + updated; Works better with lazyUpdate = True. """ class AddColumnSignal(Signal): Modified: SQLObject/trunk/sqlobject/main.py ============================================================================== --- SQLObject/trunk/sqlobject/main.py Sat Nov 13 10:26:37 2010 (r4270) +++ SQLObject/trunk/sqlobject/main.py Sat Nov 13 10:46:46 2010 (r4271) @@ -1001,7 +1001,7 @@ post_funcs = [] self.sqlmeta.send(events.RowUpdatedSignal, self, post_funcs) for func in post_funcs: - func() + func(self) def expire(self): if self.sqlmeta.expired: @@ -1058,7 +1058,7 @@ post_funcs = [] self.sqlmeta.send(events.RowUpdatedSignal, self, post_funcs) for func in post_funcs: - func() + func(self) def set(self, _suppress_set_sig=False, **kw): if not self.sqlmeta._creating and not getattr(self.sqlmeta, "row_update_sig_suppress", False) and not _suppress_set_sig: @@ -1150,7 +1150,7 @@ post_funcs = [] self.sqlmeta.send(events.RowUpdatedSignal, self, post_funcs) for func in post_funcs: - func() + func(self) def _SO_selectInit(self, row): for col, colValue in zip(self.sqlmeta.columnList, row): @@ -1584,12 +1584,12 @@ self._connection.cache.expire(self.id, self.__class__) for func in post_funcs: - func() + func(self) post_funcs = [] self.sqlmeta.send(events.RowDestroyedSignal, self, post_funcs) for func in post_funcs: - func() + func(self) def delete(cls, id, connection=None): obj = cls.get(id, connection=connection) |