Exemple #1
0
def download(request, book_id):
    from utils.zfile import ZFile
    import os
    from django.conf import settings
    
    book = Book.objects.get(pk=int(book_id))
    path = os.path.join(settings.MEDIA_ROOT, 'zipbooks')
    if not os.path.exists(path):
        os.makedirs(path)
    filename = os.path.join(path, str(book.id) + '.zip')
    f = ZFile(filename, 'w')
    if request.GET.get('onefile', ''):
        c = []
        for o in book.chapter_set.all():
            c.append(_get_content(book.id, path, o))
        f.addstring(tools.to_encode(book.name) + '.txt', '\r\n\r\n'.join(c))
    else:
        for o in book.chapter_set.all():
            f.addstring(("%04d" % o.order)+'.txt', _get_content(book.id, path, o))
                
    f.close()
    
    response = HttpResponse(mimetype='application/zip')
    response['Content-Disposition'] = 'attachment; filename=%s.zip' % tools.to_encode(book.name)
    
    response.write(file(filename, 'rb').read())
    return response
Exemple #2
0
def _get_content(book_id, path, o):
    if settings.CONTENT == 'db':
        return tools.to_encode(o.content, settings.OUTPUT_ENCODING)
    else:
        filename = os.path.join(path, str(book_id), "%04d.txt" % o.order)
        if os.path.exists(filename):
            try:
                f = file(filename, 'rb')
                text = f.read()
                f.close()
                return tools.to_encode(text, settings.OUTPUT_ENCODING)
            except:
                traceback.print_exc()
        return ''