Ejemplo n.º 1
0
def main(guest_welcome_args=None, user_welcome_args=None):
    if account.account_is_logged_in():
        if user_welcome_args is None:
            user_welcome_args = UserWelcomeArgs()
        return main_user_welcome(user_welcome_args)
    else:
        if guest_welcome_args is None:
            guest_welcome_args = GuestWelcomeArgs()
        return main_guest_welcome(guest_welcome_args)
Ejemplo n.º 2
0
def search_archive_by_exact_handler():
    if not account.account_is_logged_in():
        return redirect(url_for('main_handler'))

    exact_proper_url = request.args.get('proper_url')
    exact_datetime = request.args.get('datetime')
    print('exact_proper_url', exact_proper_url, 'exact_datetime',
          exact_datetime)
    return main.main(user_welcome_args=main.UserWelcomeArgs(
        url_archive_info=UrlArchiveInfo(proper_url=exact_proper_url,
                                        created_datetime=exact_datetime)))
Ejemplo n.º 3
0
def archive_url_handler():
    print('archive_url_handler')

    if not account.account_is_logged_in():
        return redirect(url_for('main_handler'))

    if request.method == 'POST':
        original_url = request.form.get('url_text')
    elif request.method == 'GET':
        original_url = request.args.get('url_text')

    if not url_util.precheck_url(original_url):
        return main.main(user_welcome_args=main.UserWelcomeArgs(
            error_message='Invalid URL: ' +
            (original_url if original_url else '')))

    dynamodb.push_account_archive_request(
        list_name=dynamodb.ACCOUNT_TABLE_ARCHIVE_PENDING_REQUEST_LIST,
        username=account.account_get_logged_in_username(),
        original_url=original_url)

    if config.RUNNING_LOCALLY:
        # Only for local
        error_message = archiver.archive_url(
            original_url=original_url,
            username=account.account_get_logged_in_username(),
            running_locally=True)
        if error_message:
            return main.main(user_welcome_args=main.UserWelcomeArgs(
                error_message=error_message))
        else:
            result = search_archive_by_url_datetimes(original_url)
            assert result
            proper_url, datetime, date_strs = result
            return main.main(user_welcome_args=main.UserWelcomeArgs(
                error_message=error_message,
                url_archive_info=UrlArchiveInfo(query_url=original_url,
                                                proper_url=proper_url,
                                                created_datetime=datetime),
                date_strs=date_strs))
    else:
        # return redirect(url_for('main_handler'))
        return main.main(user_welcome_args=main.UserWelcomeArgs(
            other_message='URL: ' + (original_url if original_url else '') +
            ' is in the queue. Please check back later.'))
Ejemplo n.º 4
0
def retry_archive_request_handler():
    if not account.account_is_logged_in():
        return redirect(url_for('main_handler'))

    original_url = request.form.get('url_text')
    request_list_short_name = request.form.get('request_list_name')
    print('retry_archive_request_handler(' + str(request_list_short_name) +
          ', ' + original_url + ')')

    if request_list_short_name == 'pending':
        list_name = dynamodb.ACCOUNT_TABLE_ARCHIVE_PENDING_REQUEST_LIST
    elif request_list_short_name == 'failed':
        list_name = dynamodb.ACCOUNT_TABLE_ARCHIVE_FAILED_REQUEST_LIST

    # Regardless whether it actually exists in the list,
    # archive the url again
    dynamodb.pop_account_archive_request_by(
        list_name=list_name,
        username=account.account_get_logged_in_username(),
        original_url=original_url)

    return redirect(url_for('archive_url_handler', url_text=original_url))
Ejemplo n.º 5
0
def search_all_archives_by_current_user_handler():
    if not account.account_is_logged_in():
        return redirect(url_for('main_handler'))

    return main.main(user_welcome_args=main.UserWelcomeArgs(
        show_all_user_archive_list=True))
Ejemplo n.º 6
0
def search_archive_by_url_datetimes_handler():
    print('search_archive_by_url_datetimes_handler')

    if not account.account_is_logged_in():
        return redirect(url_for('main_handler'))

    if request.method == 'POST':
        original_url = request.form.get('url_text')
        selected_date = request.form.get('selected_date')
        selected_datetime = request.form.get('selected_datetime')
    elif request.method == 'GET':
        original_url = request.args.get('url_text')
        selected_date = request.args.get('selected_date')
        selected_datetime = request.args.get('selected_datetime')

    if not url_util.precheck_url(original_url):
        return main.main(user_welcome_args=main.UserWelcomeArgs(
            error_message='Invalid URL: ' +
            (original_url if original_url else '')))

    if selected_date is not None:
        selected_date = utility.iso_date_str_2_date(selected_date)
        result = search_archive_by_url_datetimes(original_url,
                                                 by_date=selected_date)
        if result is None:
            return main.main(user_welcome_args=main.UserWelcomeArgs(
                error_message=original_url + ' is not archived on ' +
                selected_date,
                prefill_url_text=original_url))

        proper_url, latest_datetime_str, datetime_strs = result
        return main.main(user_welcome_args=main.UserWelcomeArgs(
            url_archive_info=UrlArchiveInfo(
                proper_url=proper_url,
                created_datetime=latest_datetime_str,
                query_url=original_url),
            datetime_strs=datetime_strs))
    elif selected_datetime is not None:
        result = search_archive_by_url_datetimes(original_url,
                                                 by_datetime=selected_datetime)
        if result is None:
            return main.main(user_welcome_args=main.UserWelcomeArgs(
                error_message=original_url + ' is not archived on ' +
                selected_datetime,
                prefill_url_text=original_url))

        proper_url, latest_datetime_str, datetime_strs = result
        return main.main(user_welcome_args=main.UserWelcomeArgs(
            url_archive_info=UrlArchiveInfo(
                proper_url=proper_url,
                created_datetime=latest_datetime_str,
                query_url=original_url),
            datetime_strs=datetime_strs))
    else:
        result = search_archive_by_url_datetimes(original_url)
        if result is None:
            return main.main(user_welcome_args=main.UserWelcomeArgs(
                error_message=original_url + ' is not archived yet',
                prefill_url_text=original_url))

        proper_url, latest_datetime_str, date_strs = result
        return main.main(user_welcome_args=main.UserWelcomeArgs(
            url_archive_info=UrlArchiveInfo(
                proper_url=proper_url,
                created_datetime=latest_datetime_str,
                query_url=original_url),
            date_strs=date_strs))
Ejemplo n.º 7
0
def main_clear_failed_message_handler():
    if account.account_is_logged_in():
        dynamodb.clear_account_archive_request_by(
            list_name=dynamodb.ACCOUNT_TABLE_ARCHIVE_FAILED_REQUEST_LIST,
            username=account.account_get_logged_in_username())
    return redirect(url_for('main_handler'))