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."""
|
||||
|
||||
import base64
|
||||
from sqlalchemy import create_engine, MetaData, text
|
||||
from sqlalchemy.orm import scoped_session, sessionmaker
|
||||
import threading
|
||||
|
@ -41,6 +42,7 @@ class Storage(object):
|
|||
self.containers[container.itemFactory.prefix] = container
|
||||
|
||||
def getItem(self, uid):
|
||||
uid = base64.urlsafe_b64decode(uid[1:]).decode()
|
||||
prefix, id = uid.split('-')
|
||||
id = int(id)
|
||||
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.
|
||||
"""
|
||||
|
||||
import base64
|
||||
from datetime import datetime
|
||||
from sqlalchemy import Table, Column, Index
|
||||
from sqlalchemy import BigInteger, DateTime, Text, func
|
||||
|
@ -28,7 +29,7 @@ class Track(object):
|
|||
self.head[self.headFields[ix]] = k
|
||||
for k in self.headFields:
|
||||
if self.head.get(k) is None:
|
||||
self.heaad[k] = ''
|
||||
self.head[k] = ''
|
||||
setattr(self, k, self.head[k])
|
||||
self.data = data or {}
|
||||
self.timeStamp = timeStamp
|
||||
|
@ -47,7 +48,9 @@ class Track(object):
|
|||
def uid(self):
|
||||
if self.trackId is 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
|
||||
|
|
|
@ -54,13 +54,16 @@ class Test(unittest.TestCase):
|
|||
data=dict(activity='concept'))
|
||||
trid02 = tracks.upsert(tr02)
|
||||
self.assertEqual(trid02, 31)
|
||||
self.assertEqual(tr02.uid, 'rec-31')
|
||||
self.assertEqual(tr02.uid, 'bcmVjLTMx')
|
||||
#self.assertEqual(tr02.uid, 'rec-31')
|
||||
tr02.trackId = trid01
|
||||
trid021 = tracks.upsert(tr02)
|
||||
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)
|
||||
|
||||
n = tracks.remove(31)
|
||||
|
|
Loading…
Add table
Reference in a new issue