Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)