Пример #1
0
def epub_form(request):
    """
    Displays form for converting from txt files and adding into db
    """
    messages = []
    if request.method == "POST":
        form = EpubAddForm(request.POST, request.FILES)
        if form.is_valid():
            cd = form.cleaned_data
            book_name = cd['caption']
            lang = cd['language']
            tags = cd['tags']
            subject = cd['subject']
            description = cd['description']
            type = cd['type']
            date = cd['date']
            rights = cd['rights']
            
            temp_name = tempfile.mkstemp()[1]
            properties = BookProperties(temp_name, book_name)
            properties.language = lang
            properties.subject = subject
            properties.description = description
            properties.genre = type
            properties.date = date
            properties.rights = rights
            properties.author = request.user.first_name + " " + request.user.last_name
            book = BookCreator(properties)
            file = request.FILES['file']
            toc = cd['toc']
            if toc:
                book.split_by_toc(toc, file.read())
            else:
                book.txt_to_html(file.read(), temp_name + "text.html")
                book.add_file(temp_name + "text.html", "c1", "")
                
            book.pack()

            try:
                language = Language.objects.get(short=lang)
            except:
                return render_response(request, "epub/epub_form.html", 
                                       {'errors': [_('No such language.')],
                                        'user': request.user, 'menu_on': True,
                                        'form': form})

            lang_code = LANG_CODE[0]
            for lang_code in LANG_CODE:
                if lang_code[0] == lang:
                    break
            
            book_model = Book.objects.create(language=language, pagelink="")
            book_model.title = book_name
            try:
                author = Author.objects.get(name=request.user.first_name + 
                                            ' ' + request.user.last_name)
            except:
                author = Author.objects.create(name=request.user.first_name + 
                                            ' ' + request.user.last_name)
            book_model.author = [author]
            book_model.save()
            
            ebook = EpubBook.objects.create(book = book_model)

            exfile = _ExistingFile(temp_name)
            ebook.name.save(book_name + ".epub", exfile)
            print ebook.name
            try:
                book_file = BookFile(link="/" + MEDIA_URL + "/" + quote(str(ebook.name)))
                book_file.type = 'epub'
                book_file.save()
            except Exception, e:
                print e
                return render_response(request, "epub/epub_form.html",
                                       {'errors': [_("Book name should be unique")],
                                        'menu_on': True, 'form': form})
            book_model.book_file = [book_file]
            book_model.save()
            
            
            ebook.save()
            
            messages += [_("Book successfully created.")]
            hrr =  HttpResponseRedirect("/book/id%d" % book_model.id)
            return hrr