def ReadIndex(text_data, encoding='utf-8'): """ Read index data base, ``input`` is a ``StringIO.StringIO`` object which keeps the data. This is a simple text format, see ``p2p.backup_fs.Serialize()`` method. The first line keeps revision number. """ global _LoadingFlag if _LoadingFlag: return False _LoadingFlag = True backup_fs.Clear() count = 0 try: json_data = jsn.loads( text_data, encoding=encoding, ) except: lg.exc() json_data = text_data if _Debug: lg.args(_DebugLevel, json_data=json_data) for customer_id in json_data.keys(): if customer_id == 'items': try: count = backup_fs.Unserialize(json_data, from_json=True, decoding=encoding) except: lg.exc() return False else: customer_idurl = global_id.GlobalUserToIDURL(customer_id) if not id_url.is_cached(customer_idurl): lg.warn( 'identity %r is not yet cached, skip reading related catalog items' % customer_idurl) identitycache.immediatelyCaching(customer_idurl, try_other_sources=False, ignore_errors=True) continue try: count = backup_fs.Unserialize( json_data[customer_id], iter=backup_fs.fs(customer_idurl), iterID=backup_fs.fsID(customer_idurl), from_json=True, decoding=encoding, ) except: lg.exc() return False if _Debug: lg.out(_DebugLevel, 'backup_control.ReadIndex %d items loaded' % count) # local_site.update_backup_fs(backup_fs.ListAllBackupIDsSQL()) # commit(new_revision) _LoadingFlag = False return True
def ReadIndex(raw_data): """ Read index data base, ``input`` is a ``cStringIO.StringIO`` object which keeps the data. This is a simple text format, see ``p2p.backup_fs.Serialize()`` method. The first line keeps revision number. """ global _LoadingFlag if _LoadingFlag: return False _LoadingFlag = True # try: # new_revision = int(inpt.readline().rstrip('\n')) # except: # _LoadingFlag = False # lg.exc() # return False backup_fs.Clear() try: count = backup_fs.Unserialize(raw_data, from_json=True) except KeyError: lg.warn('fallback to old (non-json) index format') count = backup_fs.Unserialize(raw_data, from_json=False) except ValueError: lg.exc() return False if _Debug: lg.out(_DebugLevel, 'backup_control.ReadIndex %d items loaded' % count) # local_site.update_backup_fs(backup_fs.ListAllBackupIDsSQL()) # commit(new_revision) _LoadingFlag = False return True
def ReadIndex(text_data, encoding='utf-8'): """ Read index data base, ``input`` is a ``StringIO.StringIO`` object which keeps the data. This is a simple text format, see ``p2p.backup_fs.Serialize()`` method. The first line keeps revision number. """ global _LoadingFlag if _LoadingFlag: return False _LoadingFlag = True backup_fs.Clear() count = 0 try: json_data = jsn.loads( text_data, encoding=encoding, ) except: lg.exc() json_data = text_data if _Debug: import pprint lg.out(_DebugLevel, pprint.pformat(json_data)) for customer_id in json_data.keys(): if customer_id == 'items': try: count = backup_fs.Unserialize(json_data, from_json=True, decoding=encoding) except: lg.exc() return False else: customer_idurl = global_id.GlobalUserToIDURL(customer_id) try: count = backup_fs.Unserialize( json_data[customer_id], iter=backup_fs.fs(customer_idurl), iterID=backup_fs.fsID(customer_idurl), from_json=True, decoding=encoding, ) except: lg.exc() return False if _Debug: lg.out(_DebugLevel, 'backup_control.ReadIndex %d items loaded' % count) # local_site.update_backup_fs(backup_fs.ListAllBackupIDsSQL()) # commit(new_revision) _LoadingFlag = False return True