コード例 #1
0
ファイル: update_entity.py プロジェクト: ktisha/ebook-service
def update_book_file(xml):
    "Executes xml, creates book_file or updates inf about it."
    entity_id = get_id(xml)

    if entity_id:
        # Modify existing book_file
        book_file = BookFile.objects.get(id=entity_id)
    else:
        # Create new book_file
        book_file = BookFile()

    # TODO check necessary fileds
    link = get_tag_text(xml, 'link')
    file_type = get_tag_text(xml, 'type')
    more_info = get_tag_text(xml, 'more_info')
    img_link = get_tag_text(xml, 'img_link')

    try:
        size_str = get_tag_text(xml, 'size')
        if size_str:
            book_file.size = int(size_str)
        credit_str = get_tag_text(xml, 'credit')
        if credit_str:
            book_file.credit = int(credit_str)
    except ValueError, ex:
        raise InputDataServerException(ex)
コード例 #2
0
def add_bookfile(file_name):
    file_handle = open(file_name, "r")
    content = file_handle.read()
    file_handle.close()
    beaut_soup = bs.BeautifulSoup(content)
    messages = beaut_soup.findAll('message')
    for message in messages:
        type = message.find('mimetype').getText()
        link = message.find('link')
        src = link.get('src')
        try:
            if type == 'epub':
                book_file = BookFile(link=src, type='epub')
                book_file.save()
            elif type == 'fb2' or type == 'zip':
                book_file = BookFile(link=src, type='fb2')
                book_file.save()
        except:
            pass  # book_file already in our data base
コード例 #3
0
ファイル: add_bookfile.py プロジェクト: ktisha/ebook-service
def add_bookfile(file_name):
    file_handle = open(file_name, "r")
    content = file_handle.read()
    file_handle.close()
    beaut_soup = bs.BeautifulSoup(content)
    messages = beaut_soup.findAll('message')
    for message in messages:
        type = message.find('mimetype').getText()
        link = message.find('link')
        src = link.get('src')
        try:
            if type == 'epub':
                book_file = BookFile(link=src, type='epub')              
                book_file.save()
            elif type == 'fb2' or type == 'zip':
                book_file = BookFile(link=src, type='fb2')
                book_file.save()
        except:    
            pass        # book_file already in our data base
コード例 #4
0
ファイル: views.py プロジェクト: ktisha/ebook-service
def add_doc_form(request):
    """
    Displays form for converting and adding book in doc
    """
    if request.method == "POST":
        form = DocCreateForm(request.POST, request.FILES)
        if form.is_valid():
            temp_name = tempfile.mkstemp()[1]
            cd = form.cleaned_data
            properties = BookProperties(temp_name, cd['title'].encode("utf-8"))
            properties.language = cd['language']
            properties.author = request.user.first_name + ' ' + request.user.last_name

            properties.subject = cd['subject'].encode("utf-8")
            properties.description = cd['description'].encode("utf-8")
            properties.genre = cd['type'].encode("utf-8")
            properties.date = cd['date'].encode("utf-8")
            properties.rights = cd['rights'].encode("utf-8")
            properties.author = request.user.first_name + " " + request.user.last_name

            file = request.FILES['file']
            
            doc_file_name = tempfile.mkstemp()[1]
            doc_file = open(doc_file_name, 'wb')
            doc_file.write(file.read())
            doc_file.close()
            doc_parser = DocParser(doc_file_name, properties)
            out_file_name = tempfile.mkdtemp() + "tmp.html"
            doc_parser.parse()

            try:
                language = Language.objects.get(short=cd['language'])
            except:
                return render_response(request, "epub/add_doc_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] == cd['language']:
                    break
            
            book_model = Book(language=language, title = cd['title'].encode("utf-8"), pagelink="")
            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.save()
            book_model.author = [author]
            
            ebook = EpubBook.objects.create(book=book_model)
            print "creating"
            ebook.name.save(cd['title'].encode("utf-8") + ".epub", _ExistingFile(temp_name))
            

            try:
                book_file = BookFile(link="/" + MEDIA_URL + "/uploads/" + quote(cd['title'].encode("utf-8")) + '.epub')
                book_file.type = 'epub'
                book_file.save()
            except:
                return render_response(request, "epub/add_doc_form.html", 
                                       {'errors': [_("Book name should be unique")],
                                        'menu_on': True, 'form': form})
            book_model.book_file = [book_file]
            book_model.save()
            ebook.save()
            hrr =  HttpResponseRedirect("/book/id%d" % book_model.id)
            return hrr
    else:
        form = DocCreateForm()

    return render_response(request, "epub/add_doc_form.html", {'user': request.user, 'menu_on': True, 'form': form})
コード例 #5
0
ファイル: views.py プロジェクト: ktisha/ebook-service
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