diff --git a/wsgi.py b/wsgi.py
index 31f9295..154c9c5 100644
--- a/wsgi.py
+++ b/wsgi.py
@@ -183,6 +183,53 @@ def plot(
return fig
+def create_fig(url: str = "https://beschaeftigtenbefragung.verdi.de/", importance_factor: float = 1.0):
+ curr_datetime = datetime.datetime.now()
+ try:
+ 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")
+
+ plot_df = create_plot_df(curr_datetime, df_state)
+ annotate_current = True
+ timestamp = curr_datetime.strftime("%Y-%m-%d %H:%M:%S")
+
+ except Exception as e:
+ print(e)
+ last_file = sorted(Path("data").iterdir())[-1]
+ key = last_file.name[:10]
+
+ with (Path("data") / f"{key}_data.ods").open("rb") as ff:
+ df = pd.read_excel(ff, sheet_name="digital", index_col=0).astype(
+ {"Digitale Befragung": "Int32"}
+ )
+ with (Path("data") / f"{key}_state_data.ods").open("rb") as ff:
+ df_state = pd.read_excel(ff, sheet_name="digital", index_col=0).astype(
+ {"Digitale Befragung": "Int32"}
+ )
+
+ plot_df = create_plot_df(curr_datetime)
+ annotate_current = False
+ timestamp = Markup(f'{key} 10:00:00')
+
+ total = plot_df.loc[curr_datetime].sum()
+ landesbez_strs = [None] + [
+ bez
+ for bez in plot_df.columns
+ if plot_df.loc[curr_datetime][bez] >= importance_factor * total
+ ]
+ return plot(
+ curr_datetime,
+ plot_df,
+ annotate_current=annotate_current,
+ landesbez_str=landesbez_strs,
+ ), df, df_state, timestamp
+
def convert_fig_to_svg(fig: plt.Figure) -> str:
# Convert plot to SVG image
@@ -195,10 +242,7 @@ def convert_fig_to_svg(fig: plt.Figure) -> str:
@app.route("/")
@cache.cached()
-def tables(
- url: str = "https://beschaeftigtenbefragung.verdi.de/",
- importance_factor: float = 1,
-):
+def tables():
def _print_as_html(df: pd.DataFrame):
df = df.astype({"Digitale Befragung": "Int32"})
with pd.option_context("display.max_rows", None):
@@ -231,52 +275,7 @@ def tables(
output_str = []
- curr_datetime = datetime.datetime.now()
-
- try:
- 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")
-
- plot_df = create_plot_df(curr_datetime, df_state)
- annotate_current = True
- timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
-
- except Exception as e:
- print(e)
- last_file = sorted(Path("data").iterdir())[-1]
- key = last_file.name[:10]
-
- with (Path("data") / f"{key}_data.ods").open("rb") as ff:
- df = pd.read_excel(ff, sheet_name="digital", index_col=0).astype(
- {"Digitale Befragung": "Int32"}
- )
- with (Path("data") / f"{key}_state_data.ods").open("rb") as ff:
- df_state = pd.read_excel(ff, sheet_name="digital", index_col=0).astype(
- {"Digitale Befragung": "Int32"}
- )
-
- plot_df = create_plot_df(curr_datetime)
- annotate_current = False
- timestamp = Markup(f'{key} 10:00:00')
-
- total = plot_df.loc[curr_datetime].sum()
- landesbez_strs = [None] + [
- bez
- for bez in plot_df.columns
- if plot_df.loc[curr_datetime][bez] >= importance_factor * total
- ]
- fig = plot(
- curr_datetime,
- plot_df,
- annotate_current=annotate_current,
- landesbez_str=landesbez_strs,
- )
+ fig, df, df_state, timestamp = create_fig()
svg_string = convert_fig_to_svg(fig)
plt.close()