access to SQL-based implementation of favorites record basically working
This commit is contained in:
parent
466044eb77
commit
8e81bab3bf
5 changed files with 29 additions and 6 deletions
|
@ -23,6 +23,7 @@ A framework for storing personal favorites and settings.
|
|||
from zope.component import adapts
|
||||
from zope.interface import implements
|
||||
|
||||
from cybertools.util.date import date2TimeStamp
|
||||
from cybertools.tracking.btree import Track
|
||||
from cybertools.tracking.interfaces import ITrackingStorage
|
||||
from loops.organize.personal.interfaces import IFavorites, IFavorite
|
||||
|
@ -50,7 +51,7 @@ class Favorites(object):
|
|||
return
|
||||
personUid = util.getUidForObject(person)
|
||||
if sortKey is None:
|
||||
sortKey = lambda x: (x.data.get('order', 100), -x.timeStamp)
|
||||
sortKey = lambda x: (x.data.get('order', 100), -date2TimeStamp(x.timeStamp))
|
||||
for item in sorted(self.context.query(userName=personUid), key=sortKey):
|
||||
if type is not None:
|
||||
if item.type != type:
|
||||
|
@ -95,7 +96,7 @@ class Favorites(object):
|
|||
track.data = data
|
||||
|
||||
|
||||
class Favorite(Track):
|
||||
class BaseFavorite(object):
|
||||
|
||||
implements(IFavorite)
|
||||
|
||||
|
@ -106,6 +107,10 @@ class Favorite(Track):
|
|||
return self.data.get('type') or 'favorite'
|
||||
|
||||
|
||||
class Favorite(BaseFavorite, Track):
|
||||
pass
|
||||
|
||||
|
||||
def updateSortInfo(person, task, data):
|
||||
if person is not None:
|
||||
favorites = task.getLoopsRoot().getRecordManager().get('favorites')
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
"""SQL-based storage for personal favorites and settings."""
|
||||
|
||||
from cco.storage.common import registerContainerClass
|
||||
from cco.storage.tracking import record
|
||||
from loops.organize.personal.favorite import BaseFavorite
|
||||
from loops.organize.tracking.storage import compat
|
||||
|
||||
|
||||
class Favorite(record.Track):
|
||||
class Favorite(BaseFavorite, compat.Track):
|
||||
|
||||
prefix = 'fav'
|
||||
|
||||
|
|
|
@ -9,6 +9,17 @@ used by code based on loops.organize.tracking.
|
|||
from cco.storage.tracking import record
|
||||
|
||||
|
||||
class Track(record.Track):
|
||||
|
||||
@property
|
||||
def taskId(self):
|
||||
return self.head.get('taskId')
|
||||
|
||||
|
||||
class Container(record.Container):
|
||||
|
||||
pass
|
||||
itemFactory = Track
|
||||
|
||||
def saveUserTrack(self, taskId, runId, userName, data):
|
||||
track = self.itemFactory(taskId, userName, data=data)
|
||||
return self.save(track)
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
"""Tools for migration ZODB-/BTree-based tracks to SQL-base records."""
|
||||
|
||||
from datetime import datetime
|
||||
import transaction
|
||||
|
||||
import config
|
||||
from cco.storage.common import Storage, getEngine
|
||||
|
@ -34,4 +35,5 @@ def migrate(loopsRoot, recFolderName, factory=record.Container):
|
|||
track = container.itemFactory(*head, trackId=int(id),
|
||||
timeStamp=ts, data=inTrack.data)
|
||||
container.upsert(track)
|
||||
transaction.commit()
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ from loops.organize.personal.storage.favorite import Favorites
|
|||
from loops.organize.tracking.storage.migration import migrate
|
||||
from loops.setup import addAndConfigureObject
|
||||
from loops.storage.tests import common
|
||||
from loops import util
|
||||
|
||||
|
||||
class TestStorage(common.TestCase):
|
||||
|
@ -45,10 +46,14 @@ class TestStorage(common.TestCase):
|
|||
|
||||
def test_fav_010_add(self):
|
||||
favs = FavoritesAdapter(self.g.favorites)
|
||||
trackId = favs.add(self.g.resources['d002.txt'], self.g.johnC)
|
||||
print('*** add, result:', trackId)
|
||||
|
||||
def test_fav_020_query(self):
|
||||
favs = FavoritesAdapter(self.g.favorites)
|
||||
self.assertEqual('a'.upper(), 'A')
|
||||
uid = util.getUidForObject(self.g.johnC)
|
||||
result = list(self.g.favorites.query(userName=uid))
|
||||
print('*** fav', list(favs.list(self.g.johnC)))
|
||||
|
||||
def test_zzz_tearDown(self):
|
||||
transaction.commit()
|
||||
|
|
Loading…
Add table
Reference in a new issue