X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/357027375ff8867f42ca34bcbfb5a78b5b185fc3..e9283420ea09fd5f4384b537542d231da08a5269:/src/api/management/commands/mobileinit.py diff --git a/src/api/management/commands/mobileinit.py b/src/api/management/commands/mobileinit.py index 57b41aa46..ccf27bc76 100755 --- a/src/api/management/commands/mobileinit.py +++ b/src/api/management/commands/mobileinit.py @@ -3,15 +3,14 @@ # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # from datetime import datetime -import os import os.path -import re import sqlite3 from django.core.management.base import BaseCommand from api.helpers import timestamp from api.settings import MOBILE_INIT_DB from catalogue.models import Book, Tag +from wolnelektury.utils import makedirs class Command(BaseCommand): @@ -49,23 +48,20 @@ def pretty_size(size): if size < 10: return "%.1f %s" % (size, unit) return "%d %s" % (size, unit) - - - if not isinstance(value, unicode): - value = unicode(value, 'utf-8') - - # try to replace chars - value = re.sub('[^a-zA-Z0-9\\s\\-]{1}', replace_char, value) - value = value.lower() - value = re.sub(r'[^a-z0-9{|}]+', '~', value) - - return value.encode('ascii', 'ignore') - + # + # if not isinstance(value, unicode): + # value = unicode(value, 'utf-8') + # + # # try to replace chars + # value = re.sub('[^a-zA-Z0-9\\s\\-]{1}', replace_char, value) + # value = value.lower() + # value = re.sub(r'[^a-z0-9{|}]+', '~', value) + # + # return value.encode('ascii', 'ignore') def init_db(last_checked): - if not os.path.isdir(MOBILE_INIT_DB): - os.makedirs(MOBILE_INIT_DB) + makedirs(MOBILE_INIT_DB) db = sqlite3.connect(os.path.join(MOBILE_INIT_DB, 'initial.db-%d' % last_checked)) schema = """ @@ -101,7 +97,7 @@ CREATE TABLE state (last_checked INTEGER); """ db.executescript(schema) - db.execute("INSERT INTO state VALUES (:last_checked)", locals()) + db.execute("INSERT INTO state VALUES (:last_checked)", {'last_checked': last_checked}) return db @@ -115,7 +111,6 @@ def current(last_checked): ) - book_sql = """ INSERT INTO book (id, title, cover, html_file, html_file_size, parent, parent_number, sort_key, pretty_size, authors) @@ -138,31 +133,30 @@ categories = {'author': 'autor', def add_book(db, book): - id = book.id - title = book.title if book.html_file: html_file = book.html_file.url html_file_size = book.html_file.size else: html_file = html_file_size = None - if book.cover: - cover = book.cover.url - else: - cover = None - parent = book.parent_id - parent_number = book.parent_number - sort_key = book.sort_key - size_str = pretty_size(html_file_size) - authors = ", ".join(t.name for t in book.tags.filter(category='author')) - db.execute(book_sql, locals()) + db.execute(book_sql, { + 'title': book.title, + 'cover': book.cover.url if book.cover else None, + 'html_file': html_file, + 'html_file_size': html_file_size, + 'parent': book.parent_id, + 'parent_number': book.parent_number, + 'sort_key': book.sort_key, + 'size_str': pretty_size(html_file_size), + 'authors': book.author_unicode(), + }) def add_tag(db, tag): - id = tag.id - category = categories[tag.category] - name = tag.name - sort_key = tag.sort_key - books = Book.tagged_top_level([tag]) - book_ids = ','.join(str(b.id) for b in books) - db.execute(tag_sql, locals()) + book_ids = ','.join(str(book_id) for book_id in books.values_list('id', flat=True)) + db.execute(tag_sql, { + 'category': categories[tag.category], + 'name': tag.name, + 'sort_key': tag.sort_key, + 'book_ids': book_ids, + })