]> git.phdru.name Git - m_librarian.git/commitdiff
Fix(scripts/ml-import.py): Display progress bar on updating counters
authorOleg Broytman <phd@phdru.name>
Fri, 23 Mar 2018 22:39:46 +0000 (01:39 +0300)
committerOleg Broytman <phd@phdru.name>
Fri, 23 Mar 2018 22:39:46 +0000 (01:39 +0300)
docs/news.rst
m_librarian/db.py
scripts/ml-import.py

index 03347a1b9846ac7f5d6bf30d9f7ecd4bd2413e3d..618a2820ff05d0f81efcd5fb2a6bb91a579c8ad6 100644 (file)
@@ -4,6 +4,8 @@ News
 Version 0.0.17 (2018-03-??)
 ---------------------------
 
+* Display progress bar on updating counters.
+
 * Inhibit progress bar if stdout is not terminal.
 
 Version 0.0.16 (2018-03-22)
index d81619da0d39e92e14d05bd7b8bd7e6546cbc109..9ae5ce0c539239bc563508deaad15b6fb5e5bdd5 100755 (executable)
@@ -206,18 +206,42 @@ def insert_author(surname, name, misc_name):
         return Author(surname=surname, name=name, misc_name=misc_name, count=0)
 
 
-def update_counters():
+def update_counters(pbar_cb=None):
+    if pbar_cb:
+        count = 0
+        for table in Author, Extension, Genre, Language:
+            count += table.select().count()
+        pbar_cb.set_max(count)
+
+    if pbar_cb:
+        count = 0
+
     for author in Author.select():
         author.count = AuthorBook.select(AuthorBook.q.author == author).count()
+        if pbar_cb:
+            count += 1
+            pbar_cb.display(count)
 
     for ext in Extension.select():
         ext.count = Book.select(Book.q.extension == ext.id).count()
+        if pbar_cb:
+            count += 1
+            pbar_cb.display(count)
 
     for genre in Genre.select():
         genre.count = BookGenre.select(BookGenre.q.genre == genre).count()
+        if pbar_cb:
+            count += 1
+            pbar_cb.display(count)
 
     for language in Language.select():
         language.count = Book.select(Book.q.language == language.id).count()
+        if pbar_cb:
+            count += 1
+            pbar_cb.display(count)
+
+    if pbar_cb:
+        pbar_cb.close()
 
 
 def test():
index 169a715f217721b976dc90e98f1065bd29a92fb1..07c7fbb47e36f69122f81746616380ac737f3f99 100755 (executable)
@@ -41,4 +41,11 @@ if __name__ == '__main__':
             print("Ok")
         else:
             import_inpx(inpx)
-    update_counters()
+    if use_pbar:
+        print("Updating counters", end=': ')
+        sys.stdout.flush()
+        pbar = ml_ttyProgressBar()
+        update_counters(pbar_cb=pbar)
+        print("Ok")
+    else:
+        update_counters()