author | Madhusudan.C.S <madhusudancs@gmail.com> |
Tue, 11 May 2010 03:48:47 +0530 | |
changeset 96 | 3ece0de11641 |
parent 94 | e86755df35da |
permissions | -rw-r--r-- |
94
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
1 |
# encoding: utf-8 |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
2 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
3 |
import os |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
4 |
import sys |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
5 |
import codecs |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
6 |
import re |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
7 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
8 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
9 |
from mk_scipy_paper import tex2pdf, current_dir , copy_files, preamble, \ |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
10 |
render_abstract, addfile, sourcedir, outdir, outfilename |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
11 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
12 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
13 |
def hack_include_graphics(latex_text, attach_dir): |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
14 |
""" Replaces all the \includegraphics call with call that impose the |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
15 |
width to be 0.9\linewidth. |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
16 |
""" |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
17 |
latex_text = re.sub(r'\\includegraphics(\[.*\])?\{', |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
18 |
r'\includegraphics\1{' + attach_dir, |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
19 |
latex_text) |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
20 |
return latex_text |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
21 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
22 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
23 |
class MyStringIO(object): |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
24 |
""" An unicode-friendly stringIO-like object. |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
25 |
""" |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
26 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
27 |
def __init__(self): |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
28 |
self.lines = [] |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
29 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
30 |
def write(self, line): |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
31 |
self.lines.append(line) |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
32 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
33 |
def getvalue(self): |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
34 |
return u''.join(self.lines) |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
35 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
36 |
def mk_booklet_tex(outfilename): |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
37 |
""" Generate the entire booklet latex file. |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
38 |
""" |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
39 |
outfile = codecs.open(outfilename, 'w', 'utf-8') |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
40 |
preamble(outfile) |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
41 |
copy_files() |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
42 |
#addfile(outfile, sourcedir + os.sep + 'title.tex') |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
43 |
addfile(outfile, sourcedir + os.sep + 'introduction.tex') |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
44 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
45 |
#outfile.write(ur'\setcounter{page}{0}' + '\n') |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
46 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
47 |
#from sanum.controllers import Root as Controller |
96
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
48 |
# abstracts = model.Abstract.select() |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
49 |
# for abstract in abstracts: |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
50 |
# if not abstract.approved: |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
51 |
# continue |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
52 |
# print abstract.title |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
53 |
# # Hack: I don't use a stringIO, because it is not unicode-safe. |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
54 |
# tmpout = MyStringIO() |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
55 |
# # Hack: I don't wont to be bound to the controller, to be |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
56 |
# # abstractle to run without cherrypy. |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
57 |
# #attach_dir = Controller._paper_attach_dir(abstract.id) |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
58 |
# attach_dir = os.path.abspath(os.sep.join( |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
59 |
# (os.path.dirname(sanum.__file__), 'static', |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
60 |
# 'papers', '%i' % abstract.id))) + os.sep |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
61 |
# render_abstract(tmpout, abstract) |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
62 |
# outstring = hack_include_graphics(tmpout.getvalue(), |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
63 |
# attach_dir) |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
64 |
# outfile.write(outstring) |
3ece0de11641
Modify views and templates for proceedings to work.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
94
diff
changeset
|
65 |
# #outfile.write(ur'\fillbreak' + '\n') |
94
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
66 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
67 |
outfile.write(ur'\end{document}' + '\n') |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
68 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
69 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
70 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
71 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
72 |
def mk_booklet(outfilename=outfilename): |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
73 |
""" Generate the entire booklet pdf file. |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
74 |
""" |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
75 |
name, ext = os.path.splitext(outfilename) |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
76 |
mk_booklet_tex(name + '.tex') |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
77 |
return tex2pdf(name, remove_tex=False, timeout=60) |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
78 |
|
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
79 |
if __name__ == '__main__': |
e86755df35da
Add admin interface and views for proceedings. Booklet is also setup to generate paper.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff
changeset
|
80 |
mk_booklet(outfilename) |