create_tex_walenty.py
1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#-*- coding:utf-8 -*-
import codecs
import datetime
import HTMLParser
import os
import tarfile
from django.core.management.base import BaseCommand
from django.template.loader import render_to_string
from django.utils.encoding import smart_str
from dictionary.models import Lemma, get_ready_statuses
from settings import WALENTY_PATH
class Command(BaseCommand):
args = 'none'
help = 'Script for creating Walenty vocabulary in tex format.'
def handle(self, *args, **options):
try:
now = datetime.datetime.now().strftime('%Y%m%d')
filename_base = '%s_%s' % ('walenty', now)
base_path = os.path.join(WALENTY_PATH, filename_base)
outpath = base_path + '.tex'
ready_statuses = get_ready_statuses()
lemmas = Lemma.objects.filter(old=False)
ready_lemmas = lemmas.filter(status__in=ready_statuses).order_by('entry_obj__name')
write_tex_walenty(outpath, ready_lemmas)
archive = tarfile.open(base_path + '-tex.tar.gz', 'w:gz')
os.chdir(WALENTY_PATH)
archive.add(os.path.basename(outpath))
finally:
archive.close()
os.remove(outpath)
def write_tex_walenty(outpath, lemmas):
try:
outfile = codecs.open(outpath, 'w')
h = HTMLParser.HTMLParser()
outfile.write(smart_str(h.unescape(render_to_string('tex/slowal.tex', {'lemmas': lemmas,
'q_frame_opinions': [],
'download_dict' : {'frame_opinions': []}}))))
finally:
outfile.close()