예제 #1
0
def start_session(username, password, url, system_name, data_view):
    try:
        credentials = login_with_password(url, data_view, username, password)
        session = Session(credentials, system_name)
        return session
    except aa.ApiException:
        return None
예제 #2
0
def logout_api(request):
    """ Logs out of FastStats session. """
    session = request.session.get("ApiSession", None)
    if session is not None:
        session = Session.deserialize(request.session["ApiSession"])
        aa.SessionsApi(session.api_client).sessions_logout_session(
            session.data_view, session.session_id)
        del request.session["ApiSession"]

    context = {
        "alert_type": "alert-success",
        "alert_message": "Logged out of FastStats session.",
    }
    return index(request, context)
예제 #3
0
def logout(request):
    """" Log user out, delete session info. """
    session = request.session.get("ApiSession", None)
    if session is not None:
        session = Session.deserialize(request.session["ApiSession"])
        aa.SessionsApi(session.api_client).sessions_logout_session(
            session.data_view, session.session_id)
    username = request.user.username
    dj_logout(request)

    context = {
        "alert_type": "alert-success",
        "alert_message": username + " has been logged out.",
    }
    return index(request, context)
예제 #4
0
def home(request, context=None):
    """ Return home screen. """
    if context is None:
        context = {}

    session = request.session.get("ApiSession", None)
    if session is not None:
        session = Session.deserialize(session)
        context.update({
            "system_name": session.system,
            "data_view": session.data_view,
            "access_token": session.access_token,
            "session_id": session.session_id,
        })
    context.update({"title": "Home"})
    return render(request, "home.html", context)
예제 #5
0
def example_three_map(request):
    """ Return graph from user input in example three. """
    # Get selected airport, update context that that one is selected, and encode it
    if request.method == "POST":
        session = request.session.get("ApiSession", None)
        if session is None:
            return no_session_set(request)
        session = Session.deserialize(session)

        reporting_airport = request.POST["reporting_airport"]

        df = get_export_as_dataframe(session, reporting_airport.upper())
        graph_html = make_example_three_map(df)
        context = {"graph": graph_html, "selected_airport": reporting_airport}
        return example_three(request, context)
    return redirect("example_three")
예제 #6
0
def example_three(request, context=None):
    """ Return web page for example three. """
    if context is None:
        context = {}

    session = request.session.get("ApiSession", None)
    if session is None:
        return no_session_set(request)
    session = Session.deserialize(session)

    airport_names = get_codes_with_filter(session, REPORTING_AIRPORT_CODE, 0)
    context.update({
        "title": "Example 3",
        "active": "example_three",
        "airport_names": airport_names,
    })
    return render(request, "example_three.html", context)
예제 #7
0
def example_one(request, context=None):
    """ Return web page for example one. """
    if context is None:
        context = {}

    session = request.session.get("ApiSession", None)
    if session is None:
        return no_session_set(request)
    session = Session.deserialize(session)

    origin_codes = get_codes_with_filter(session, REPORTING_AIRPORT_CODE, 0)
    context.update({
        "title": "Example 1",
        "active": "example_one",
        "origin_codes": origin_codes,
        "dest_codes": EXAMPLE_ONE_DESTS,
    })
    return render(request, "example_one.html", context)
예제 #8
0
def example_one_count(request):
    """ Return count from user input in example one. """
    if request.method == "POST":
        session = request.session.get("ApiSession", None)
        if session is None:
            return no_session_set(request)
        session = Session.deserialize(session)

        origin = request.POST["origin_code"]
        dest = request.POST["dest_code"]

        counts_per_year = route_counts(session, origin.upper(), dest.upper())
        context = {
            "count": counts_per_year,
            "selected_origin": origin,
            "selected_dest": dest,
            "selected_origin_title": origin.title(),
            "selected_dest_title": dest.title(),
        }
        return example_one(request, context)
    return redirect("example_one")
예제 #9
0
def example_two(request, context=None):
    """ Return web page for example two. """
    if context is None:
        context = {}

    session = request.session.get("ApiSession", None)
    if session is None:
        return no_session_set(request)
    session = Session.deserialize(session)

    reporting_years = get_selector_variable_codes(session,
                                                  REPORTING_PERIOD_YEARS_CODE)
    reporting_years[
        0] = "Show All Years"  # Remove '0000' year and include show all option
    context.update({
        "title": "Example 2",
        "active": "example_two",
        "selector_cols": EXAMPLE_TWO_SELECTORS,
        "date_options": ["Years", "Months"],
        "years": reporting_years,
    })
    return render(request, "example_two.html", context)
예제 #10
0
def example_two_graph(request):
    """ Return graph from user input in example two. """
    if request.method == "POST":
        session = request.session.get("ApiSession", None)
        if session is None:
            return no_session_set(request)
        session = Session.deserialize(session)

        first_selector = request.POST["first_selector"]
        date_option = request.POST["date_option"]
        top_pick = request.POST["top_choice"]

        measure_selector_code = encode_variable(first_selector)

        if date_option == "Show All Years":
            selected_year = None
            date_selector_code = REPORTING_PERIOD_YEARS_CODE
        else:
            selected_year = date_option
            date_selector_code = REPORTING_PERIOD_MONTHS_CODE

        limit = int(top_pick)  # if limit = 0, same as None

        df = get_example_two_dataframe(
            session,
            [measure_selector_code, date_selector_code],
            selected_year=selected_year,
            limit=limit,
        )
        graph_html = make_example_two_graph(df, selected_year)
        context = {
            "first_selected_col": first_selector,
            "selected_year": date_option,
            "selected_top_choice": top_pick,
            "graph": graph_html,
        }
        return example_two(request, context)
    return redirect("example_two")
예제 #11
0
def example_four(request, context=None):
    """ Return web page for example three. """
    if context is None:
        context = {}
    session = request.session.get("ApiSession", None)
    if session is None:
        return no_session_set(request)
    session = Session.deserialize(session)

    airline_names = get_codes_with_filter(session, AIRLINE_NAME_CODE, 10001)
    airport_names = get_codes_with_filter(session, REPORTING_AIRPORT_CODE, 0)
    airport_names.insert(0, " ")  # First option is blank
    years = get_selector_variable_codes(session, REPORTING_PERIOD_YEARS_CODE)
    years[
        0] = "Show All Years"  # Remove '0000' year and include show all option
    context.update({
        "title": "Example 4",
        "active": "example_four",
        "airline_names": airline_names,
        "years": years,
        "reporting_airports": airport_names,
    })
    return render(request, "example_four.html", context)
예제 #12
0
def example_four_map(request):
    """ Return graph from user input in example three. """
    if request.method == "POST":
        session = request.session.get("ApiSession", None)
        if session is None:
            return no_session_set(request)
        session = Session.deserialize(session)

        airline = request.POST["airline_name"]
        date_option = request.POST["year"]
        reporting_airport = request.POST["reporting_airport"]

        if date_option == "Show All Years":
            selected_year = None
        else:
            selected_year = date_option

        if reporting_airport == "":
            reporting_airport = None

        df = get_example_four_dataframe(session, airline, selected_year,
                                        reporting_airport)

        if (df["routes"] == 0).all():
            graph_html = """<div class="alert alert-danger" role="alert" style="margin-left:14px;">
                                No flight routes were found in this selection
                            </div>"""
        else:
            graph_html = make_example_four_map(df)
        context = {
            "graph": graph_html,
            "selected_airline": airline,
            "selected_year": selected_year,
            "selected_airport": reporting_airport,
        }
        return example_four(request, context)
    return redirect("example_four")