def index(): subtitle = "Transfer books to Internet Archive" form = UploadForm(request.form) if request.method == "POST": if form.validate(): book_id = html_escape(form.book_id.data) email = html_escape(form.email.data) if form.email.data not in (None, "") else "" book = bridge.fields(form.library_id.data, book_id, email) book_id = book.Id if book.Id not in (None, "") else book_id redis = redis_py.Redis() redis_key3 = keys.redis_key3 book_key = "%s:%s:%s" % (redis_key3, form.library_id.data, book_id) library_url_key = book_key + ":library_url" redis_py.set(library_url_key, form.book_id.data, True) redis.expire(library_url_key, 60 * 15) verification_status_no = book.verify_fields() if verification_status_no != 0: flash(error_msg(verification_status_no, book)) return render_template("index.html", subtitle=subtitle, libraries=libraries, form=form) else: if redundant_request(book) == True: flash(error_msg(50)) return render_template("index.html", subtitle=subtitle, libraries=libraries, form=form) book_info = bridge.book_info(form.library_id.data, book_id) if isinstance(book_info, (int, long, float, complex)): flash(error_msg(book_info)) return render_template("index.html", subtitle=subtitle, libraries=libraries, form=form) confirm_resp = make_response(minify(render_template("confirm.html", book_info=book_info, form=form))) uuid = urandom(32).encode("hex") confirm_resp.set_cookie("bub_session", uuid) store_request(book, uuid) return confirm_resp return render_template("index.html", subtitle=subtitle, libraries=libraries, form=form) else: return render_template("index.html", subtitle=subtitle, libraries=libraries, form=form)
def index(): subtitle = "Transfer books to Internet Archive" form = UploadForm(request.form) if request.method == 'POST': if form.validate(): book_id = html_escape(form.book_id.data) email = html_escape( form.email.data) if form.email.data not in (None, "") else "" book = bridge.fields(form.library_id.data, book_id, email) book_id = book.Id if book.Id not in (None, "") else book_id redis = redis_py.Redis() redis_key3 = keys.redis_key3 book_key = "%s:%s:%s" % (redis_key3, form.library_id.data, book_id) library_url_key = book_key + ":library_url" redis_py.set(library_url_key, form.book_id.data, True) redis.expire(library_url_key, 60 * 15) verification_status_no = book.verify_fields() if verification_status_no != 0: flash(error_msg(verification_status_no, book)) return render_template("index.html", subtitle=subtitle, libraries=libraries, form=form) else: if redundant_request(book) == True: flash(error_msg(50)) return render_template("index.html", subtitle=subtitle, libraries=libraries, form=form) book_info = bridge.book_info(form.library_id.data, book_id) if isinstance(book_info, (int, long, float, complex)): flash(error_msg(book_info)) return render_template("index.html", subtitle=subtitle, libraries=libraries, form=form) confirm_resp = make_response( minify( render_template("confirm.html", book_info=book_info, form=form))) uuid = urandom(32).encode("hex") confirm_resp.set_cookie('bub_session', uuid) store_request(book, uuid) return confirm_resp return render_template("index.html", subtitle=subtitle, libraries=libraries, form=form) else: return render_template("index.html", subtitle=subtitle, libraries=libraries, form=form)
def manual(): subtitle = "Upload using wildcards" try: form = WildcardForm(request.form) except UnboundLocalError: form = WildcardForm() return render_template("wildcard.html", subtitle=subtitle, form=form) if request.method == "POST": if form.validate(): if form.book_url.data in (None, "") and form.book_pdf_url.data in (None, ""): return render_template("wildcard.html", subtitle=subtitle, form=form) if form.link_type.data == "wildcard": book_url = form.book_url.data if form.book_url.data not in (None, "") else "" from_no = html_escape(form.from_no.data) if form.from_no.data not in (None, "") else "" to_no = html_escape(form.to_no.data) if form.to_no.data not in (None, "") else "" info_url = re.sub("\(\*\)", str(from_no), book_url) book_url = book_url + ":" + str(from_no) + "," + str(to_no) book_url = book_url + ":" + "wildcard" elif form.link_type.data == "pdf": book_url = form.book_pdf_url.data if form.book_pdf_url.data not in (None, "") else "" info_url = book_url book_url = book_url + ":" + "pdf" library = "man" Id = hashlib.md5(book_url).hexdigest() email = html_escape(form.email.data) if form.email.data not in (None, "") else "" book = bridge.fields(library, book_url, email) verification_status_no = book.verify_fields() if verification_status_no != 0: flash(error_msg(verification_status_no, book)) return render_template("wildcard.html", subtitle=subtitle, form=form) tld = extract_base_domain(book_url) book_metadata = dict( image_url="", thumbnail_url="", printType="BOOK", subtitle="", infoLink=info_url, publicDomain=True, scanner=tld, sponser=tld, title=form.title.data if form.title.data not in (None, "") else "", author=form.author.data if form.author.data not in (None, "") else "", publisher=form.publisher.data if form.publisher.data not in (None, "") else "", publishedDate=form.date.data if form.date.data not in (None, "") else "", description=form.desc.data if form.desc.data not in (None, "") else "", language=form.language.data if form.language.data not in (None, "") else "", ) ia_identifier_suffix = get_valid_identifier_suffix(library, Id) redis = redis_py.Redis() redis_key3 = keys.redis_key3 redis_key1 = keys.redis_key1 book_key = "%s:%s:%s" % (redis_key3, library, ia_identifier_suffix) metadata_key = book_key + ":meta_data" redis_py.set(metadata_key, json.dumps(book_metadata), True) book_request_key = book_key + ":requests" request_details = dict(email=email) redis_py.sadd(book_request_key, json.dumps(request_details), request_cache=True) md5_book = hashlib.md5(ia_identifier_suffix + library).hexdigest() meta_data = json.dumps(book_metadata) book = models.Book( book_id=ia_identifier_suffix, library=library, requests=json.dumps(request_details), meta_data=meta_data, md5_book=md5_book, ) db.session.add(book) db.session.commit() q_global_job = redis_py.Queue(redis_key1 + "global") q_global_job.add(json.dumps(dict(library=library, book_id=ia_identifier_suffix))) q = redis_py.Queue(redis_key1) q.add(json.dumps(dict(library=library, Id=book_url, ia_identifier_suffix=ia_identifier_suffix))) flash(error_msg(100, email=email)) return redirect(url_for("progress", book_id=library + ":" + ia_identifier_suffix)) else: return render_template("wildcard.html", subtitle=subtitle, form=form) else: return render_template("wildcard.html", subtitle=subtitle, form=form)
def manual(): subtitle = "Upload using wildcards" try: form = WildcardForm(request.form) except UnboundLocalError: form = WildcardForm() return render_template("wildcard.html", subtitle=subtitle, form=form) if request.method == 'POST': if form.validate(): if form.book_url.data in (None, "") and form.book_pdf_url.data in (None, ""): return render_template("wildcard.html", subtitle=subtitle, form=form) if form.link_type.data == 'wildcard': book_url = form.book_url.data if form.book_url.data not in ( None, "") else "" from_no = html_escape( form.from_no.data) if form.from_no.data not in (None, "") else "" to_no = html_escape( form.to_no.data) if form.to_no.data not in (None, "") else "" info_url = re.sub('\(\*\)', str(from_no), book_url) book_url = book_url + ":" + str(from_no) + "," + str(to_no) book_url = book_url + ":" + 'wildcard' elif form.link_type.data == 'pdf': book_url = form.book_pdf_url.data if form.book_pdf_url.data not in ( None, "") else "" info_url = book_url book_url = book_url + ":" + 'pdf' library = 'man' Id = hashlib.md5(book_url).hexdigest() email = html_escape( form.email.data) if form.email.data not in (None, "") else "" book = bridge.fields(library, book_url, email) verification_status_no = book.verify_fields() if verification_status_no != 0: flash(error_msg(verification_status_no, book)) return render_template("wildcard.html", subtitle=subtitle, form=form) tld = extract_base_domain(book_url) book_metadata = dict( image_url="", thumbnail_url="", printType="BOOK", subtitle="", infoLink=info_url, publicDomain=True, scanner=tld, sponser=tld, title=form.title.data if form.title.data not in (None, "") else "", author=form.author.data if form.author.data not in (None, "") else "", publisher=form.publisher.data if form.publisher.data not in (None, "") else "", publishedDate=form.date.data if form.date.data not in (None, "") else "", description=form.desc.data if form.desc.data not in (None, "") else "", language=form.language.data if form.language.data not in (None, "") else "") ia_identifier_suffix = get_valid_identifier_suffix(library, Id) redis = redis_py.Redis() redis_key3 = keys.redis_key3 redis_key1 = keys.redis_key1 book_key = "%s:%s:%s" % (redis_key3, library, ia_identifier_suffix) metadata_key = book_key + ":meta_data" redis_py.set(metadata_key, json.dumps(book_metadata), True) book_request_key = book_key + ":requests" request_details = dict(email=email) redis_py.sadd(book_request_key, json.dumps(request_details), request_cache=True) md5_book = hashlib.md5(ia_identifier_suffix + library).hexdigest() meta_data = json.dumps(book_metadata) book = models.Book(book_id=ia_identifier_suffix, library=library, requests=json.dumps(request_details), meta_data=meta_data, md5_book=md5_book) db.session.add(book) db.session.commit() q_global_job = redis_py.Queue(redis_key1 + "global") q_global_job.add( json.dumps(dict(library=library, book_id=ia_identifier_suffix))) q = redis_py.Queue(redis_key1) q.add( json.dumps( dict(library=library, Id=book_url, ia_identifier_suffix=ia_identifier_suffix))) flash(error_msg(100, email=email)) return redirect( url_for('progress', book_id=library + ":" + ia_identifier_suffix)) else: return render_template("wildcard.html", subtitle=subtitle, form=form) else: return render_template("wildcard.html", subtitle=subtitle, form=form)