fixes; work in progress: topics
This commit is contained in:
parent
f6308ff9bf
commit
dfc5cefcee
3 changed files with 21 additions and 8 deletions
|
@ -45,8 +45,8 @@ class Folder(Track):
|
||||||
return self.container.storage.getItem(self.ref)
|
return self.container.storage.getItem(self.ref)
|
||||||
|
|
||||||
def setTarget(self, target):
|
def setTarget(self, target):
|
||||||
self.ref = target.uid
|
self.set('ref', target.uid)
|
||||||
self.container.save(self)
|
self.container.update(self)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return '%s: %s; keys: %s' % (self.__class__.__name__,
|
return '%s: %s; keys: %s' % (self.__class__.__name__,
|
||||||
|
|
|
@ -119,10 +119,16 @@ class Container(object):
|
||||||
return self.insert(track)
|
return self.insert(track)
|
||||||
if self.insertOnChange and found.data != track.data:
|
if self.insertOnChange and found.data != track.data:
|
||||||
return self.insert(track)
|
return self.insert(track)
|
||||||
if found.data != track.data or found.timeStamp != track.timeStamp:
|
changed = False
|
||||||
|
if found.data != track.data:
|
||||||
found.update(track.data)
|
found.update(track.data)
|
||||||
|
changed = True
|
||||||
|
if track.timeStamp is not None and found.timeStamp != track.timeStamp:
|
||||||
found.timeStamp = track.timeStamp
|
found.timeStamp = track.timeStamp
|
||||||
|
changed = True
|
||||||
|
if changed:
|
||||||
self.update(found)
|
self.update(found)
|
||||||
|
track.trackId = found.trackId
|
||||||
return found.trackId
|
return found.trackId
|
||||||
|
|
||||||
def insert(self, track, withTrackId=False):
|
def insert(self, track, withTrackId=False):
|
||||||
|
@ -130,14 +136,15 @@ class Container(object):
|
||||||
values = self.setupValues(track, withTrackId)
|
values = self.setupValues(track, withTrackId)
|
||||||
stmt = t.insert().values(**values).returning(t.c.trackid)
|
stmt = t.insert().values(**values).returning(t.c.trackid)
|
||||||
trackId = self.session.execute(stmt).first()[0]
|
trackId = self.session.execute(stmt).first()[0]
|
||||||
|
track.trackId = trackId
|
||||||
self.storage.mark_changed()
|
self.storage.mark_changed()
|
||||||
return trackId
|
return trackId
|
||||||
|
|
||||||
def update(self, track):
|
def update(self, track, updateTimeStamp=False):
|
||||||
t = self.table
|
t = self.table
|
||||||
|
if updateTimeStamp or track.timeStamp is None:
|
||||||
|
track.timeStamp = datetime.now()
|
||||||
values = self.setupValues(track)
|
values = self.setupValues(track)
|
||||||
if track.timeStamp is None:
|
|
||||||
values['timestamp'] = datetime.now()
|
|
||||||
stmt = t.update().values(**values).where(t.c.trackid == track.trackId)
|
stmt = t.update().values(**values).where(t.c.trackid == track.trackId)
|
||||||
n = self.session.execute(stmt).rowcount
|
n = self.session.execute(stmt).rowcount
|
||||||
if n > 0:
|
if n > 0:
|
||||||
|
|
|
@ -96,11 +96,17 @@ def test_topic(self, config):
|
||||||
storage = config.storageFactory(config.dbschema)
|
storage = config.storageFactory(config.dbschema)
|
||||||
storage.dropTable('topics')
|
storage.dropTable('topics')
|
||||||
topics = storage.getContainer(topic.Topic)
|
topics = storage.getContainer(topic.Topic)
|
||||||
|
types = storage.getContainer(concept.Type)
|
||||||
concept.storePredicate(storage, concept.defaultPredicate)
|
concept.storePredicate(storage, concept.defaultPredicate)
|
||||||
root = folder.Root(storage)
|
root = folder.Root(storage)
|
||||||
root['top']['topics'] = folder.Folder()
|
root['top']['topics'] = ftopics = folder.Folder()
|
||||||
|
ttopic = types.queryLast(name='topic')
|
||||||
|
self.assertEqual(ttopic.name, 'topic')
|
||||||
|
ftopics.setTarget(ttopic)
|
||||||
|
self.assertEqual(ftopics.ref, 'type-6')
|
||||||
|
|
||||||
tp_itc = topic.Topic('itc')
|
tp_itc = topic.Topic('itc', data=dict(
|
||||||
|
title='ITC', description='Information and Communication Technology'))
|
||||||
topics.save(tp_itc)
|
topics.save(tp_itc)
|
||||||
|
|
||||||
storage.commit()
|
storage.commit()
|
||||||
|
|
Loading…
Add table
Reference in a new issue