def split_line(line):
parts = line.strip().split(EOT)
- l = len(parts)
- if l < 11:
+ _l = len(parts)
+ if _l < 11:
raise ValueError('Unknown INP structure: "%s"' % line)
- if l == 11: # Standard structure
+ if _l == 11: # Standard structure
parts.append(None) # Emulate lang
else: # New structure
parts = parts[:12]
import_inp_line(archive, parts)
-def import_inpx(path):
+def import_inpx(path, pbar_cb=None):
inpx = ZipFile(path)
+ if pbar_cb:
+ inp_count = 0
+ for name in inpx.namelist():
+ ext = os.path.splitext(name)[1]
+ if ext == '.inp':
+ inp_count += 1
+ pbar_cb.set_max(inp_count)
+ inp_count = 0
for name in inpx.namelist():
archive, ext = os.path.splitext(name)
if ext != '.inp':
continue
+ if pbar_cb:
+ inp_count += 1
+ pbar_cb.display(inp_count)
inp = inpx.open(name)
sqlhub.doInTransaction(import_inp, archive + '.zip', inp)
inp.close()
connection = sqlhub.processConnection
- if connection.dbName in ('postgres', 'sqlite'):
+ if connection.dbName == 'postgres':
for table in Author, Book, Extension, Genre, Language:
connection.query("VACUUM %s" % table.sqlmeta.table)
+ elif connection.dbName == 'sqlite':
+ connection.query("VACUUM")
+ if pbar_cb:
+ pbar_cb.close()