Author: phd
Date: 2010-09-22 11:47:58 -0600 (Wed, 22 Sep 2010)
New Revision: 4236
Modified:
SQLObject/trunk/docs/News.txt
SQLObject/trunk/sqlobject/main.py
SQLObject/trunk/sqlobject/tests/test_lazy.py
Log:
Major API change: attribute 'dirty' was moved to sqlmeta.
Modified: SQLObject/trunk/docs/News.txt
===================================================================
--- SQLObject/trunk/docs/News.txt 2010-09-14 09:51:23 UTC (rev 4235)
+++ SQLObject/trunk/docs/News.txt 2010-09-22 17:47:58 UTC (rev 4236)
@@ -24,6 +24,8 @@
value True; this means the default schema parser is now based on ``PRAGMA
table_info()``.
+* Major API change: attribute 'dirty' was moved to sqlmeta.
+
SQLObject 0.13.0
================
Modified: SQLObject/trunk/sqlobject/main.py
===================================================================
--- SQLObject/trunk/sqlobject/main.py 2010-09-14 09:51:23 UTC (rev 4235)
+++ SQLObject/trunk/sqlobject/main.py 2010-09-22 17:47:58 UTC (rev 4236)
@@ -210,8 +210,6 @@
joins = []
joinDefinitions = []
- __metaclass__ = declarative.DeclarativeMeta
-
# These attributes shouldn't be shared with superclasses:
_unshared_attributes = ['table', 'columns', 'childName']
@@ -238,6 +236,11 @@
childClasses = {} # References to child classes, keyed by childName
childName = None # Class name for inheritance child object creation
+ # Does the row require syncing?
+ dirty = False
+
+ __metaclass__ = declarative.DeclarativeMeta
+
def __classinit__(cls, new_attrs):
for attr in cls._unshared_attributes:
if not new_attrs.has_key(attr):
@@ -900,7 +903,7 @@
cache.put(id, cls, val)
finally:
cache.finishPut(cls)
- elif selectResults and not val.dirty:
+ elif selectResults and not val.sqlmeta.dirty:
val._SO_writeLock.acquire()
try:
val._SO_selectInit(selectResults)
@@ -941,7 +944,7 @@
raise SQLObjectNotFound, "The object %s by the ID %s does not exist" % (self.__class__.__name__, self.id)
self._SO_selectInit(selectResults)
self._SO_createValues = {}
- self.dirty = False
+ self.sqlmeta.dirty = False
def _SO_loadValue(self, attrName):
try:
@@ -995,7 +998,7 @@
values = [(self.sqlmeta.columns[v[0]].dbName, v[1])
for v in self._SO_createValues.items()]
self._connection._SO_update(self, values)
- self.dirty = False
+ self.sqlmeta.dirty = False
self._SO_createValues = {}
finally:
self._SO_writeLock.release()
@@ -1045,7 +1048,7 @@
if to_python:
value = to_python(dbValue, self._SO_validatorState)
if self.sqlmeta._creating or self.sqlmeta.lazyUpdate:
- self.dirty = True
+ self.sqlmeta.dirty = True
self._SO_createValues[name] = dbValue
setattr(self, instanceName(name), value)
return
@@ -1104,7 +1107,7 @@
except AttributeError, e:
raise AttributeError, '%s (with attribute %r)' % (e, name)
- self.dirty = True
+ self.sqlmeta.dirty = True
return
self._SO_writeLock.acquire()
@@ -1287,7 +1290,7 @@
# Get rid of _SO_create*, we aren't creating anymore.
# Doesn't have to be threadsafe because we're still in
# new(), which doesn't need to be threadsafe.
- self.dirty = False
+ self.sqlmeta.dirty = False
if not self.sqlmeta.lazyUpdate:
del self._SO_createValues
else:
Modified: SQLObject/trunk/sqlobject/tests/test_lazy.py
===================================================================
--- SQLObject/trunk/sqlobject/tests/test_lazy.py 2010-09-14 09:51:23 UTC (rev 4235)
+++ SQLObject/trunk/sqlobject/tests/test_lazy.py 2010-09-22 17:47:58 UTC (rev 4236)
@@ -43,50 +43,50 @@
# We just did an insert, but not an update:
assert not self.conn.didUpdate
obj.set(name='joe')
- assert obj.dirty
+ assert obj.sqlmeta.dirty
assert obj.name == 'joe'
assert not self.conn.didUpdate
obj.syncUpdate()
assert obj.name == 'joe'
assert self.conn.didUpdate
- assert not obj.dirty
+ assert not obj.sqlmeta.dirty
assert obj.name == 'joe'
self.conn.didUpdate = False
obj = Lazy(name='frank')
obj.name = 'joe'
assert not self.conn.didUpdate
- assert obj.dirty
+ assert obj.sqlmeta.dirty
assert obj.name == 'joe'
obj.name = 'joe2'
assert not self.conn.didUpdate
- assert obj.dirty
+ assert obj.sqlmeta.dirty
assert obj.name == 'joe2'
obj.syncUpdate()
assert obj.name == 'joe2'
- assert not obj.dirty
+ assert not obj.sqlmeta.dirty
assert self.conn.didUpdate
self.conn.didUpdate = False
obj = Lazy(name='loaded')
- assert not obj.dirty
+ assert not obj.sqlmeta.dirty
assert not self.conn.didUpdate
assert obj.name == 'loaded'
obj.name = 'unloaded'
- assert obj.dirty
+ assert obj.sqlmeta.dirty
assert obj.name == 'unloaded'
assert not self.conn.didUpdate
obj.sync()
- assert not obj.dirty
+ assert not obj.sqlmeta.dirty
assert obj.name == 'unloaded'
assert self.conn.didUpdate
self.conn.didUpdate = False
obj.name = 'whatever'
- assert obj.dirty
+ assert obj.sqlmeta.dirty
assert obj.name == 'whatever'
assert not self.conn.didUpdate
obj._SO_loadValue('name')
- assert obj.dirty
+ assert obj.sqlmeta.dirty
assert obj.name == 'whatever'
assert not self.conn.didUpdate
obj._SO_loadValue('other')
@@ -101,24 +101,24 @@
obj_id = obj.id
old_state = obj._SO_validatorState
obj = Lazy.get(obj_id)
- assert not obj.dirty
+ assert not obj.sqlmeta.dirty
assert not self.conn.didUpdate
assert obj._SO_validatorState is old_state
assert obj.name == 'whatever'
obj.name = 'unloaded'
assert obj.name == 'unloaded'
- assert obj.dirty
+ assert obj.sqlmeta.dirty
assert not self.conn.didUpdate
# Fetch the object again with get() and
- # make sure dirty is still set, as the
+ # make sure sqlmeta.dirty is still set, as the
# object should come from the cache.
obj = Lazy.get(obj_id)
- assert obj.dirty
+ assert obj.sqlmeta.dirty
assert not self.conn.didUpdate
assert obj.name == 'unloaded'
obj.syncUpdate()
assert self.conn.didUpdate
- assert not obj.dirty
+ assert not obj.sqlmeta.dirty
self.conn.didUpdate = False
# Then clear the cache, and try a get()
@@ -126,23 +126,23 @@
# is properly initialized.
self.conn.cache.clear()
obj = Lazy.get(obj_id)
- assert not obj.dirty
+ assert not obj.sqlmeta.dirty
assert not self.conn.didUpdate
assert obj.name == 'unloaded'
obj.name = 'spongebob'
assert obj.name == 'spongebob'
- assert obj.dirty
+ assert obj.sqlmeta.dirty
assert not self.conn.didUpdate
obj.syncUpdate()
assert self.conn.didUpdate
- assert not obj.dirty
+ assert not obj.sqlmeta.dirty
self.conn.didUpdate = False
obj = Lazy(name='last')
- assert not obj.dirty
+ assert not obj.sqlmeta.dirty
obj.syncUpdate()
assert not self.conn.didUpdate
- assert not obj.dirty
+ assert not obj.sqlmeta.dirty
# Check that setting multiple values
# actually works. This was broken
# and just worked because we were testing
@@ -155,8 +155,8 @@
assert obj.name == 'first'
assert obj.other == 'who'
assert obj.third == 'yes'
- assert obj.dirty
+ assert obj.sqlmeta.dirty
assert not self.conn.didUpdate
obj.syncUpdate()
assert self.conn.didUpdate
- assert not obj.dirty
+ assert not obj.sqlmeta.dirty
|