use base64 encoding for UIDs
This commit is contained in:
parent
02a56bf94d
commit
32a13ebb64
3 changed files with 13 additions and 5 deletions
|
@ -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)
|
||||||
|
|
|
@ -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 = data or {}
|
self.data = data or {}
|
||||||
self.timeStamp = timeStamp
|
self.timeStamp = 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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Reference in a new issue