예제 #1
0
파일: model.py 프로젝트: dhumbert/literable
def upload_book(file):
    filename = book_staging_upload_set.save(file)
    if filename:
        extension = os.path.splitext(filename)[1][1:]
        if extension == 'epub':
            e = epub.Epub(book_staging_upload_set.path(filename))
            if e:
                meta = e.metadata
                if 'creator' in meta:
                    meta['author'] = meta['creator']
                    del meta['creator']

                # if the book has a cover, copy it to tmp directory
                if e.cover:
                    cover_filename = os.path.basename(e.cover)
                    # todo conflicts
                    if os.path.exists(tmp_cover_upload_set.path(cover_filename)):
                        cover_filename = tmp_cover_upload_set.resolve_conflict(tmp_cover_upload_set.config.destination, cover_filename)

                    dest = tmp_cover_upload_set.path(cover_filename)
                    extracted = e.extract_cover(dest)

                    if extracted:
                        meta['cover'] = cover_filename
            else:
                meta = None
        else:
            meta = None

        return filename, meta
    else:
        return None
예제 #2
0
파일: orm.py 프로젝트: dhumbert/literable
    def move_file_from_staging(self, filename):
        if self.filename:
            self.remove_file()

        if filename:
            self.filename = filename
            src = book_staging_upload_set.path(self.filename)
            dest_path = app.config['LIBRARY_PATH']

            if os.path.exists(os.path.join(dest_path, self.filename)):
                self.filename = book_upload_set.resolve_conflict(dest_path, self.filename)

            shutil.move(src, book_upload_set.path(self.filename))