def post(self): enforce_login(self) if self.request.get( 'license') is not None and not users.is_current_user_admin(): self.redirect("/") epub = db.get(self.request.get('epub_key')) if not users.is_current_user_admin() and epub.entry_count() > 1: self.redirect("/") epub.language = self.request.get('language') epub.title = self.request.get('title') epub.creator = self.request.get('creator') epub.publisher = self.request.get('publisher') epub.rights = self.request.get('rights') epub.contributor = self.request.get('contributor') epub.identifier = self.request.get('identifier') epub.description = self.request.get('description') epub.date = self.request.get('date') license = self.request.get('license') if epub.license != license: if license == "Public Domain" or license == "Creative Commons": unpacker = unpack.Unpacker() unpacker.index_epub(epub, "public") else: index = search.Index("public") opts = search.QueryOptions(limit=1000, ids_only=True) query = search.Query(query_string="book:%s" % epub.key(), options=opts) docs = index.search(query) for doc in docs: index.remove(doc.doc_id) epub.license = self.request.get('license') epub.put() self.redirect("/book/" + str(epub.key().id()))
def post(self): enforce_login(self) upload_files = self.get_uploads( 'file') # 'file' is file upload field in the form blob_info = upload_files[0] epub = model.ePubFile(blob=blob_info, blob_key=blob_info.key()) epub.put() entry = model.LibraryEntry(epub=epub, user=get_current_session().get("account")) entry.put() unpacker = unpack.Unpacker() existing, error = unpacker.unpack(epub) if error is None: epub_key = epub.key() if existing is None else existing.key() logging.info("Indexing epub with key %s" % epub_key) taskqueue.add(queue_name='index', url='/index', countdown=2, params={ 'key': epub_key, 'user': get_current_session().get("account") }) epub.get_cover() self.redirect("/book/" + str(epub.key().id())) else: db.delete(entry) blobstore.delete(epub.blob.key()) db.delete(epub) error = "Invalid EPUB file" if error.find( "File is not a zip") > 0 else error respondWithMessage(self, "Upload error: " + error)
def post(self): quote = model.Quote(epub=model.ePubFile.get_by_id( long(self.request.get('epub'))), file=db.get(self.request.get('file')), html=db.Text(self.request.get('html')), user=get_current_session().get("account")) quote.put() unpacker = unpack.Unpacker() unpacker.index_quote(quote) self.response.headers['Content-Type'] = 'application/json' self.response.out.write('{"result":"ok","url":"/quote/%s"}' % quote.key().id())
def post(self): user = get_current_session().get("account") user = self.request.get('user') if user is None else str(user) key = self.request.get('key') epub = db.get(key) if epub is None: logging.info("Unable to find epub with key %s" % key) return unpacker = unpack.Unpacker() unpacker.index_epub(epub, "private", user) if epub.license == "Public Domain" or epub.license == "Creative Commons": unpacker.index_epub(epub, "public")
def get(self): components = self.request.path.split("/") if len(components) > 1: id = components[2] epub = model.ePubFile.get_by_id(long(id)) enforce_rights(self, epub) if len(components) < 4: self.redirect("/book/" + id) return path = urllib.unquote_plus("/".join(components[3:])) internal = epub.internals().filter("path = ", path).get() renderer = unpack.Unpacker() self.response.headers['Content-Type'] = renderer.contentHeader( internal) self.response.out.write(renderer.content(internal))
def get(self): key = self.request.get('key') epub = db.get(key) unpacker = unpack.Unpacker() unpacker.unpack_internal(epub)