# 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):
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 = """
"""
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
)
-
book_sql = """
INSERT INTO book
(id, title, cover, html_file, html_file_size, parent, parent_number, sort_key, pretty_size, authors)
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': ", ".join(t.name for t in book.tags.filter(category='author')),
+ })
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,
+ })