import datetime import pandas as pd from flask import Flask, render_template, request from flask_caching import Cache from download_digital import construct_dataframe, get_bez_data config = { "CACHE_TYPE": "FileSystemCache", "CACHE_DEFAULT_TIMEOUT": 300, "CACHE_THRESHOLD": 1000, "CACHE_DIR": "cache", } app = Flask(__name__) app.config.from_mapping(config) cache = Cache(app) def get_tables(url: str) -> tuple[pd.DataFrame, pd.DataFrame]: bez_data = get_bez_data(["bez_data_0", "bez_data_2"], url) df = construct_dataframe( bez_data=bez_data[0], grouped=False, special_tag="stud", ) df_state = construct_dataframe( bez_data=bez_data[1], grouped=False, no_processing=True ) return df, df_state @app.route("/") @cache.cached(timeout=50) def tables( url: str = "https://beschaeftigtenbefragung.verdi.de/", ): df, df_state = get_tables(url) df = df.sort_values( ["Digitale Befragung", "Bundesland", "Bezirk"], ascending=[False, True, True] ) df_state = df_state.sort_values("Landesbezirk") output_str = [] def _print_as_html(df: pd.DataFrame): df = df.astype({"Digitale Befragung": "Int32"}) with pd.option_context("display.max_rows", None): table = df.to_html( index_names=False, justify="left", index=False, classes="sortable dataframe", ) tfoot = [ "
", "