Merge branch 'master' into 2master

This commit is contained in:
Helmut Merz 2024-02-17 16:23:56 +01:00
commit ec99c62348
3 changed files with 13 additions and 5 deletions

View file

@ -2,6 +2,7 @@
"""Common utility stuff for the scopes.storage package.""" """Common utility stuff for the scopes.storage package."""
import base64
from sqlalchemy import create_engine, MetaData, text from sqlalchemy import create_engine, MetaData, text
from sqlalchemy.orm import scoped_session, sessionmaker from sqlalchemy.orm import scoped_session, sessionmaker
import threading import threading
@ -41,6 +42,7 @@ class Storage(object):
self.containers[container.itemFactory.prefix] = container self.containers[container.itemFactory.prefix] = container
def getItem(self, uid): def getItem(self, uid):
uid = base64.urlsafe_b64decode(uid[1:]).decode()
prefix, id = uid.split('-') prefix, id = uid.split('-')
id = int(id) id = int(id)
container = self.containers.get(prefix) container = self.containers.get(prefix)

View file

@ -6,6 +6,7 @@ A track consists of a head (index data, metadata) with a fixed set of fields an
data (payload) represented as a dict. data (payload) represented as a dict.
""" """
import base64
from datetime import datetime from datetime import datetime
from sqlalchemy import Table, Column, Index from sqlalchemy import Table, Column, Index
from sqlalchemy import BigInteger, DateTime, Text, func from sqlalchemy import BigInteger, DateTime, Text, func
@ -28,7 +29,7 @@ class Track(object):
self.head[self.headFields[ix]] = k self.head[self.headFields[ix]] = k
for k in self.headFields: for k in self.headFields:
if self.head.get(k) is None: if self.head.get(k) is None:
self.heaad[k] = '' self.head[k] = ''
setattr(self, k, self.head[k]) setattr(self, k, self.head[k])
self.data = kw.get('data') or {} self.data = kw.get('data') or {}
self.timeStamp = kw.get('timeStamp') self.timeStamp = kw.get('timeStamp')
@ -47,7 +48,9 @@ class Track(object):
def uid(self): def uid(self):
if self.trackId is None: if self.trackId is None:
return None return None
return '%s-%d' % (self.prefix, self.trackId) raw = ('%s-%d' % (self.prefix, self.trackId)).encode()
return 'b' + base64.urlsafe_b64encode(raw).decode()
#return '%s-%d' % (self.prefix, self.trackId)
@registerContainerClass @registerContainerClass

View file

@ -54,13 +54,16 @@ class Test(unittest.TestCase):
data=dict(activity='concept')) data=dict(activity='concept'))
trid02 = tracks.upsert(tr02) trid02 = tracks.upsert(tr02)
self.assertEqual(trid02, 31) self.assertEqual(trid02, 31)
self.assertEqual(tr02.uid, 'rec-31') self.assertEqual(tr02.uid, 'bcmVjLTMx')
#self.assertEqual(tr02.uid, 'rec-31')
tr02.trackId = trid01 tr02.trackId = trid01
trid021 = tracks.upsert(tr02) trid021 = tracks.upsert(tr02)
self.assertEqual(trid021, trid01) self.assertEqual(trid021, trid01)
self.assertEqual(tr02.uid, 'rec-' + str(trid01)) self.assertEqual(tr02.uid, 'bcmVjLTE=')
#self.assertEqual(tr02.uid, 'rec-' + str(trid01))
tr03 = storage.getItem('rec-31') #tr03 = storage.getItem(b'bcmVjLTE=')
tr03 = storage.getItem('bcmVjLTMx')
self.assertEqual(tr03.trackId, 31) self.assertEqual(tr03.trackId, 31)
n = tracks.remove(31) n = tracks.remove(31)