X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=m_librarian%2Finp.py;h=76ab97be9883c4cd240ae725acc3300acf897e98;hb=114ba9ea6f4aa1af0ff361d75be9f2434360678d;hp=e16df6c5d91496d9f652e966084429737ce21a5e;hpb=51aa2c71d5bebc4be0c98f00c97d2f47fcde4d3a;p=m_librarian.git diff --git a/m_librarian/inp.py b/m_librarian/inp.py index e16df6c..76ab97b 100644 --- a/m_librarian/inp.py +++ b/m_librarian/inp.py @@ -14,10 +14,10 @@ EOT = chr(4) # INP field separator 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] @@ -80,16 +80,31 @@ def import_inp(archive, inp): 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()