Browse Source

Resiste a POSKeyError ao enumerar btree

pull/2056/head
Marcio Mazza 7 years ago
parent
commit
b3aa5d7790
  1. 17
      sapl/legacy/scripts/exporta_zope/exporta_zope.py

17
sapl/legacy/scripts/exporta_zope/exporta_zope.py

@ -144,17 +144,21 @@ def get_conteudo_dtml_method(doc):
return doc['raw'] return doc['raw']
def print_msg_poskeyerror(id):
print('#' * 80)
print('#' * 80)
print('ATENÇÃO: DIRETÓRIO corrompido: {}'.format(id))
print('#' * 80)
print('#' * 80)
def enumerate_by_key_list(folder, key_list, type_key): def enumerate_by_key_list(folder, key_list, type_key):
for entry in folder.get(key_list, []): for entry in folder.get(key_list, []):
id, meta_type = entry['id'], entry[type_key] id, meta_type = entry['id'], entry[type_key]
try: try:
obj = folder.get(id, None) obj = folder.get(id, None)
except POSKeyError: except POSKeyError:
print('#' * 80) print_msg_poskeyerror(id)
print('#' * 80)
print('ATENÇÃO: DIRETÓRIO corrompido: {}'.format(id))
print('#' * 80)
print('#' * 80)
else: else:
yield id, obj, meta_type yield id, obj, meta_type
@ -170,9 +174,12 @@ def enumerate_btree(folder):
contagem_esperada = folder['_count'].value contagem_esperada = folder['_count'].value
tree = folder['_tree'] tree = folder['_tree']
contagem_real = 0 # para o caso em que não haja itens contagem_real = 0 # para o caso em que não haja itens
try:
for contagem_real, (id, obj) in enumerate(tree.iteritems(), start=1): for contagem_real, (id, obj) in enumerate(tree.iteritems(), start=1):
meta_type = type(obj).__name__ meta_type = type(obj).__name__
yield id, obj, meta_type yield id, obj, meta_type
except POSKeyError:
print_msg_poskeyerror(folder['id'])
# verificação de consistência # verificação de consistência
if contagem_esperada != contagem_real: if contagem_esperada != contagem_real:
print('ATENÇÃO: contagens diferentes na btree: ' print('ATENÇÃO: contagens diferentes na btree: '

Loading…
Cancel
Save