def _upload(req): p = req.POST for f in req.FILES.values(): if f.name.find(".") >= 0: (name, ext) = f.name.rsplit(".", 1) ext = ext.lower() else: name = f.name ext = '' if ext in ['jpg', 'gif', 'png']: nicename = re.sub(r'[^\w]', '-', name) tryname = "%s.%s" % (nicename, ext) i = 0 mkdirp('static/kbfiles') while os.path.exists("static/kbfiles/%s" % tryname): i += 1 tryname = "%s-%d.%s" % (nicename, i, ext) outf = open("static/kbfiles/%s" % tryname, "w") for c in f.chunks(): outf.write(c) outf.close() return HttpResponse("0 %s" % tryname) else: return HttpResponse( "1 You can only upload .gif, .png, or .jpg files.") return HttpResponse("Error", status=400)
def _try_save(doc, title, tags, text): mkdirp(os.path.dirname('docs/%s' % doc.pathname)) f = open('docs/%s' % doc.pathname, 'w') f.write(("Title: %s\nTags: %s\n\n%s" % (title, tags, text)).replace('\r', '').encode('utf-8')) f.close() if os.path.isdir('docs/.git'): pn = './%s' % doc.pathname msg = 'kb: updated "%s" via web' % doc.filename p = Popen(args = ['git', 'add', '--', pn], cwd = 'docs') p.wait() p = Popen(args = ['git', 'commit', '-m', msg], cwd = 'docs') p.wait() doc.use_latest() doc.title = title doc.save() db.commit()
def _pdf_url(req, name): if name.startswith("/static/kbfiles/"): name = os.getcwd() + name dir = os.path.dirname(name) base = os.path.basename(name) if not os.path.exists(name): return "invalid-path" if base.endswith(".gif"): # pdflatex can't handle .gif files, sigh outdir = os.path.join(dir, ".convert") pngname = os.path.join(outdir, base[:-4] + '.png') if not os.path.exists(pngname) \ or os.path.getmtime(name) >= os.path.getmtime(pngname): mkdirp(outdir) unlink(pngname) im = Image.open(name) im.save(pngname, "PNG") return pngname else: return name else: return req.build_absolute_uri(name)