datacipen commited on
Commit
8df88cb
·
verified ·
1 Parent(s): 74aa5e2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +77 -71
app.py CHANGED
@@ -31,7 +31,6 @@ from dash.dependencies import Input, Output, State
31
  from dash import Dash, html, dcc, callback, callback_context, ctx, Output, Input, dash_table, State, no_update, _dash_renderer, clientside_callback
32
  from dash import html
33
 
34
- import dash_bootstrap_components as dbc
35
  import dash_bootstrap_components as dbc
36
  from dash.exceptions import PreventUpdate
37
  import dash_mantine_components as dmc
@@ -1048,7 +1047,7 @@ app_page = dmc.MantineProvider(
1048
  fluid=False,
1049
  children=[
1050
  html.Div(id="BCC-status", className="mb-3"),
1051
- dbc.Spinner(
1052
  html.Div(id="BCC-output", className="p-3", style={"font-size":"0.75rem"}),
1053
  ),
1054
  ],
@@ -1108,7 +1107,7 @@ app_page = dmc.MantineProvider(
1108
  className="g-0"
1109
  ),
1110
  html.H4(id="text-enseignement-dropdown", className="mb-3 text-success", style={"font-size": "0.7rem"}),
1111
- dbc.Textarea(id="enseignement-dropdown", className="mb-3", style={"height":"200px", "max-height":"250px", "font-size": "0.75rem","color":"white","border":"border 1px solid rgb(67,167,255)!important", "background-color":"transparent"}),
1112
  ], md=6),
1113
  dbc.Col([
1114
  dbc.Row(
@@ -1122,7 +1121,7 @@ app_page = dmc.MantineProvider(
1122
  className="g-0"
1123
  ),
1124
  html.H4("Choisir d'abord une maquette de formation avec propositions BCC", className="mb-3", style={"font-size": "0.7rem"}),
1125
- dbc.Textarea(id="classification-dropdown", className="mb-3", placeholder="Choisir d'abord une maquette avec propositions BCC", style={"height":"200px", "max-height":"250px", "font-size": "0.75rem","color":"white","border":"border 1px solid rgb(67,167,255)!important", "background-color":"transparent"}),
1126
  ], md=6)
1127
  ]),
1128
  dbc.Row([
@@ -1138,7 +1137,7 @@ app_page = dmc.MantineProvider(
1138
  className="g-0"
1139
  ),
1140
  html.H4("Choisir d'abord une maquette de formation avec propositions BCC", className="mb-3", style={"font-size": "0.7rem"}),
1141
- dbc.Textarea(id="situation-dropdown", className="mb-3", placeholder="Choisir d'abord une maquette avec propositions BCC", style={"height":"200px", "max-height":"250px", "font-size": "0.75rem","color":"white","border":"border 1px solid rgb(67,167,255)!important", "background-color":"transparent"}),
1142
  ], md=6),
1143
  dbc.Col([
1144
  dbc.Row(
@@ -1196,7 +1195,7 @@ app_page = dmc.MantineProvider(
1196
  className="g-0"
1197
  ),
1198
  html.Div(id="generation-status", className="mb-3"),
1199
- dbc.Spinner(
1200
  html.Div(id="competence-output", className="p-3 border rounded", style={"color":"rgb(90, 242, 156)","border-color":"rgb(90, 242, 156)!important","background-color":"rgba(90, 242, 156, 0.2)"}),
1201
  ),
1202
  ], md=12),
@@ -1266,7 +1265,7 @@ app_page = dmc.MantineProvider(
1266
  align="left",
1267
  className="g-0"
1268
  ),
1269
- html.Div(id='output-response', style={"color":"rgb(90, 242, 156)","border-radius":"3px","border":"1px solid rgb(255,255,255)!important","background-color":"rgba(90, 242, 156, 0.2)","padding":"5px"}),
1270
  html.Div(id="notification_wrapper", style={"margin-top":"1rem"}),
1271
  ], width=12)
1272
  ])
@@ -1438,7 +1437,7 @@ app_avid_page = dmc.MantineProvider(
1438
  fluid=False,
1439
  children=[
1440
  html.Div(id="BCC-status", className="mb-3"),
1441
- dbc.Spinner(
1442
  html.Div(id="BCC-output", className="p-3", style={"font-size":"0.75rem"}),
1443
  ),
1444
  ],
@@ -1578,7 +1577,7 @@ app_avid_page = dmc.MantineProvider(
1578
  className="g-0"
1579
  ),
1580
  html.Div(id="generation-status", className="mb-3"),
1581
- dbc.Spinner(
1582
  html.Div(id="competence-output", className="p-3 border rounded", style={"color":"rgb(90, 242, 156)","border-color":"rgb(90, 242, 156)!important","background-color":"rgba(90, 242, 156, 0.2)"}),
1583
  ),
1584
  ], md=12),
@@ -1648,7 +1647,7 @@ app_avid_page = dmc.MantineProvider(
1648
  align="left",
1649
  className="g-0"
1650
  ),
1651
- html.Div(id='output-response-avid', style={"color":"rgb(156, 242, 242)","border-radius":"3px","border":"1px solid rgb(255,255,255)!important","background-color":"rgba(156, 242, 242, 0.2)","padding":"5px"}),
1652
  html.Div(id="notification_wrapper-avid", style={"margin-top":"1rem"}),
1653
  ], width=12)
1654
  ])
@@ -1777,28 +1776,31 @@ def update_skills_dropdown(categorie_selected, pathname):
1777
  )
1778
  def update_enseignements_dropdown(categorie_selected, pathname):
1779
  """Mettre à jour les options du dropdown d'enseignements en fonction de la catégorie sélectionnée."""
1780
- if not categorie_selected:
1781
- default_text = "par défaut : "
1782
- if pathname == "/bcc":
1783
- categorie_selected = 'JSON/L1-Anglais.json'
1784
- elif pathname == "/bcc-avid":
1785
- categorie_selected = 'VD/JSON/L1-Lettres-Modernes.json'
1786
- else:
1787
- default_text = "formation sélectionnée : "
 
1788
 
1789
- url = f"https://api.github.com/repos/{OWNER}/{REPO}/contents/{categorie_selected}"
1790
- res = requests.get(url, headers=headers, params=params)
1791
- if res.status_code == 200:
1792
- jsonData = json.loads(base64.b64decode(res.json()['content']))
1793
- modal_text = "**Description des catégories d'enseignements : **\n\n"
1794
- for item in jsonData.get("categories", []):
1795
- modal_text += f"- **{item['nom']}**:\n\n{item['description']}\n\n"
1796
- if pathname == "/bcc":
1797
- return "Choisir d'abord une maquette de formation avec proposition BCC", json.dumps(jsonData.get("categories", []), indent = 6, separators =(",", ":"),
1798
  sort_keys = True, ensure_ascii=False), "Choisir d'abord une maquette de formation avec propositions BCC : " + default_text + jsonData.get("niveau", ""), modal_text
1799
- elif pathname == "/bcc-avid":
1800
- return "Choisir d'abord une maquette de formation avec proposition BCC", json.dumps(jsonData.get("categories", []), indent = 6, separators =(",", ":"),
1801
  sort_keys = True, ensure_ascii=False), "Choisir d'abord une maquette de formation avec propositions BCC : " + default_text + jsonData.get("niveau_etude", ""), modal_text
 
 
1802
 
1803
  @app.callback(
1804
  Output("classification-dropdown", "placeholder"),
@@ -1809,41 +1811,44 @@ def update_enseignements_dropdown(categorie_selected, pathname):
1809
  )
1810
  def update_classification_dropdown(categorie_selected, pathname):
1811
  """Mettre à jour les options du dropdown d'enseignements en fonction de la catégorie sélectionnée."""
1812
- if not categorie_selected:
1813
- default_text = "par défaut : "
1814
- if pathname == "/bcc":
1815
- categorie_selected = 'JSON/L1-Anglais.json'
1816
- elif pathname == "/bcc-avid":
1817
- categorie_selected = 'VD/JSON/L1-Lettres-Modernes.json'
1818
- else:
1819
- default_text = ""
 
1820
 
1821
- url = f"https://api.github.com/repos/{OWNER}/{REPO}/contents/{categorie_selected}"
1822
- res = requests.get(url, headers=headers, params=params)
1823
- if res.status_code == 200:
1824
- jsonData = json.loads(base64.b64decode(res.json()['content']))
1825
- modal_text = "**Classification des enseignements :**"
1826
- if pathname == "/bcc":
1827
- textarea_value = jsonData.get("classified_teachings", [])
1828
- for key, value in textarea_value.items():
1829
- modal_text += f"\n\n- **{key}**: "
1830
- for i in range(0,len(value)):
1831
- modal_text += f"{value[i]}\t"
1832
- elif pathname == "/bcc-avid":
1833
- textarea_value = jsonData.get("dataframe", [])
1834
- test = " "
1835
- for item in sorted(textarea_value, key=lambda x: x['categorie'] if x['categorie'] else ""):
1836
- if test != item['categorie']:
1837
- modal_text += f"\n\n- **{item['categorie']}**: "
1838
- modal_text += f"{item['enseignements']}\t"
1839
- test = item['categorie']
1840
 
1841
- if pathname == "/bcc":
1842
- return "Choisir d'abord une maquette de formation avec proposition BCC", json.dumps(textarea_value, indent = 6, separators =(",", ":"),
1843
  sort_keys = True, ensure_ascii=False),modal_text
1844
- elif pathname == "/bcc-avid":
1845
- return "Choisir d'abord une maquette de formation avec proposition BCC", json.dumps(textarea_value, indent = 6, separators =(",", ":"),
1846
  sort_keys = True, ensure_ascii=False),modal_text
 
 
1847
 
1848
  @app.callback(
1849
  Output("situation-dropdown", "placeholder"),
@@ -1854,18 +1859,19 @@ def update_classification_dropdown(categorie_selected, pathname):
1854
  )
1855
  def update_situations_dropdown(categorie_selected, pathname):
1856
  """Mettre à jour les options du dropdown d'enseignements en fonction de la catégorie sélectionnée."""
1857
- if not categorie_selected:
1858
- default_text = "par défaut : "
1859
- if pathname == "/bcc":
1860
- categorie_selected = 'JSON/L1-Anglais.json'
1861
- elif pathname == "/bcc-avid":
1862
- categorie_selected = 'VD/JSON/L1-Lettres-Modernes.json'
1863
- else:
1864
- default_text = ""
1865
-
1866
- url = f"https://api.github.com/repos/{OWNER}/{REPO}/contents/{categorie_selected}"
1867
- res = requests.get(url, headers=headers, params=params)
1868
  try:
 
 
 
 
 
 
 
 
 
 
 
 
1869
  if res.status_code == 200:
1870
  jsonData = json.loads(base64.b64decode(res.json()['content']))
1871
  modal_text = "**Description des situations d'apprentissage :**"
 
31
  from dash import Dash, html, dcc, callback, callback_context, ctx, Output, Input, dash_table, State, no_update, _dash_renderer, clientside_callback
32
  from dash import html
33
 
 
34
  import dash_bootstrap_components as dbc
35
  from dash.exceptions import PreventUpdate
36
  import dash_mantine_components as dmc
 
1047
  fluid=False,
1048
  children=[
1049
  html.Div(id="BCC-status", className="mb-3"),
1050
+ dcc.Loading(
1051
  html.Div(id="BCC-output", className="p-3", style={"font-size":"0.75rem"}),
1052
  ),
1053
  ],
 
1107
  className="g-0"
1108
  ),
1109
  html.H4(id="text-enseignement-dropdown", className="mb-3 text-success", style={"font-size": "0.7rem"}),
1110
+ dcc.Loading(dbc.Textarea(id="enseignement-dropdown", className="mb-3", style={"height":"200px", "max-height":"250px", "font-size": "0.75rem","color":"white","border":"border 1px solid rgb(67,167,255)!important", "background-color":"transparent"}),),
1111
  ], md=6),
1112
  dbc.Col([
1113
  dbc.Row(
 
1121
  className="g-0"
1122
  ),
1123
  html.H4("Choisir d'abord une maquette de formation avec propositions BCC", className="mb-3", style={"font-size": "0.7rem"}),
1124
+ dcc.Loading(dbc.Textarea(id="classification-dropdown", className="mb-3", placeholder="Choisir d'abord une maquette avec propositions BCC", style={"height":"200px", "max-height":"250px", "font-size": "0.75rem","color":"white","border":"border 1px solid rgb(67,167,255)!important", "background-color":"transparent"}),),
1125
  ], md=6)
1126
  ]),
1127
  dbc.Row([
 
1137
  className="g-0"
1138
  ),
1139
  html.H4("Choisir d'abord une maquette de formation avec propositions BCC", className="mb-3", style={"font-size": "0.7rem"}),
1140
+ dcc.Loading(dbc.Textarea(id="situation-dropdown", className="mb-3", placeholder="Choisir d'abord une maquette avec propositions BCC", style={"height":"200px", "max-height":"250px", "font-size": "0.75rem","color":"white","border":"border 1px solid rgb(67,167,255)!important", "background-color":"transparent"}),),
1141
  ], md=6),
1142
  dbc.Col([
1143
  dbc.Row(
 
1195
  className="g-0"
1196
  ),
1197
  html.Div(id="generation-status", className="mb-3"),
1198
+ dcc.Loading(
1199
  html.Div(id="competence-output", className="p-3 border rounded", style={"color":"rgb(90, 242, 156)","border-color":"rgb(90, 242, 156)!important","background-color":"rgba(90, 242, 156, 0.2)"}),
1200
  ),
1201
  ], md=12),
 
1265
  align="left",
1266
  className="g-0"
1267
  ),
1268
+ dcc.Loading(html.Div(id='output-response', style={"color":"rgb(90, 242, 156)","border-radius":"3px","border":"1px solid rgb(255,255,255)!important","background-color":"rgba(90, 242, 156, 0.2)","padding":"5px"}),),
1269
  html.Div(id="notification_wrapper", style={"margin-top":"1rem"}),
1270
  ], width=12)
1271
  ])
 
1437
  fluid=False,
1438
  children=[
1439
  html.Div(id="BCC-status", className="mb-3"),
1440
+ dcc.Loading(
1441
  html.Div(id="BCC-output", className="p-3", style={"font-size":"0.75rem"}),
1442
  ),
1443
  ],
 
1577
  className="g-0"
1578
  ),
1579
  html.Div(id="generation-status", className="mb-3"),
1580
+ dcc.Loading(
1581
  html.Div(id="competence-output", className="p-3 border rounded", style={"color":"rgb(90, 242, 156)","border-color":"rgb(90, 242, 156)!important","background-color":"rgba(90, 242, 156, 0.2)"}),
1582
  ),
1583
  ], md=12),
 
1647
  align="left",
1648
  className="g-0"
1649
  ),
1650
+ dcc.Loading(html.Div(id='output-response-avid', style={"color":"rgb(156, 242, 242)","border-radius":"3px","border":"1px solid rgb(255,255,255)!important","background-color":"rgba(156, 242, 242, 0.2)","padding":"5px"}),),
1651
  html.Div(id="notification_wrapper-avid", style={"margin-top":"1rem"}),
1652
  ], width=12)
1653
  ])
 
1776
  )
1777
  def update_enseignements_dropdown(categorie_selected, pathname):
1778
  """Mettre à jour les options du dropdown d'enseignements en fonction de la catégorie sélectionnée."""
1779
+ try:
1780
+ if not categorie_selected:
1781
+ default_text = "par défaut : "
1782
+ if pathname == "/bcc":
1783
+ categorie_selected = 'JSON/L1-Anglais.json'
1784
+ elif pathname == "/bcc-avid":
1785
+ categorie_selected = 'VD/JSON/L1-Lettres-Modernes.json'
1786
+ else:
1787
+ default_text = "formation sélectionnée : "
1788
 
1789
+ url = f"https://api.github.com/repos/{OWNER}/{REPO}/contents/{categorie_selected}"
1790
+ res = requests.get(url, headers=headers, params=params)
1791
+ if res.status_code == 200:
1792
+ jsonData = json.loads(base64.b64decode(res.json()['content']))
1793
+ modal_text = "**Description des catégories d'enseignements : **\n\n"
1794
+ for item in jsonData.get("categories", []):
1795
+ modal_text += f"- **{item['nom']}**:\n\n{item['description']}\n\n"
1796
+ if pathname == "/bcc":
1797
+ return "Choisir d'abord une maquette de formation avec proposition BCC", json.dumps(jsonData.get("categories", []), indent = 6, separators =(",", ":"),
1798
  sort_keys = True, ensure_ascii=False), "Choisir d'abord une maquette de formation avec propositions BCC : " + default_text + jsonData.get("niveau", ""), modal_text
1799
+ elif pathname == "/bcc-avid":
1800
+ return "Choisir d'abord une maquette de formation avec proposition BCC", json.dumps(jsonData.get("categories", []), indent = 6, separators =(",", ":"),
1801
  sort_keys = True, ensure_ascii=False), "Choisir d'abord une maquette de formation avec propositions BCC : " + default_text + jsonData.get("niveau_etude", ""), modal_text
1802
+ except:
1803
+ print("Aucun fichier chargé!")
1804
 
1805
  @app.callback(
1806
  Output("classification-dropdown", "placeholder"),
 
1811
  )
1812
  def update_classification_dropdown(categorie_selected, pathname):
1813
  """Mettre à jour les options du dropdown d'enseignements en fonction de la catégorie sélectionnée."""
1814
+ try:
1815
+ if not categorie_selected:
1816
+ default_text = "par défaut : "
1817
+ if pathname == "/bcc":
1818
+ categorie_selected = 'JSON/L1-Anglais.json'
1819
+ elif pathname == "/bcc-avid":
1820
+ categorie_selected = 'VD/JSON/L1-Lettres-Modernes.json'
1821
+ else:
1822
+ default_text = ""
1823
 
1824
+ url = f"https://api.github.com/repos/{OWNER}/{REPO}/contents/{categorie_selected}"
1825
+ res = requests.get(url, headers=headers, params=params)
1826
+ if res.status_code == 200:
1827
+ jsonData = json.loads(base64.b64decode(res.json()['content']))
1828
+ modal_text = "**Classification des enseignements :**"
1829
+ if pathname == "/bcc":
1830
+ textarea_value = jsonData.get("classified_teachings", [])
1831
+ for key, value in textarea_value.items():
1832
+ modal_text += f"\n\n- **{key}**: "
1833
+ for i in range(0,len(value)):
1834
+ modal_text += f"{value[i]}\t"
1835
+ elif pathname == "/bcc-avid":
1836
+ textarea_value = jsonData.get("dataframe", [])
1837
+ test = " "
1838
+ for item in sorted(textarea_value, key=lambda x: x['categorie'] if x['categorie'] else ""):
1839
+ if test != item['categorie']:
1840
+ modal_text += f"\n\n- **{item['categorie']}**: "
1841
+ modal_text += f"{item['enseignements']}\t"
1842
+ test = item['categorie']
1843
 
1844
+ if pathname == "/bcc":
1845
+ return "Choisir d'abord une maquette de formation avec proposition BCC", json.dumps(textarea_value, indent = 6, separators =(",", ":"),
1846
  sort_keys = True, ensure_ascii=False),modal_text
1847
+ elif pathname == "/bcc-avid":
1848
+ return "Choisir d'abord une maquette de formation avec proposition BCC", json.dumps(textarea_value, indent = 6, separators =(",", ":"),
1849
  sort_keys = True, ensure_ascii=False),modal_text
1850
+ except:
1851
+ print("Aucun fichier chargé!")
1852
 
1853
  @app.callback(
1854
  Output("situation-dropdown", "placeholder"),
 
1859
  )
1860
  def update_situations_dropdown(categorie_selected, pathname):
1861
  """Mettre à jour les options du dropdown d'enseignements en fonction de la catégorie sélectionnée."""
 
 
 
 
 
 
 
 
 
 
 
1862
  try:
1863
+ if not categorie_selected:
1864
+ default_text = "par défaut : "
1865
+ if pathname == "/bcc":
1866
+ categorie_selected = 'JSON/L1-Anglais.json'
1867
+ elif pathname == "/bcc-avid":
1868
+ categorie_selected = 'VD/JSON/L1-Lettres-Modernes.json'
1869
+ else:
1870
+ default_text = ""
1871
+
1872
+ url = f"https://api.github.com/repos/{OWNER}/{REPO}/contents/{categorie_selected}"
1873
+ res = requests.get(url, headers=headers, params=params)
1874
+
1875
  if res.status_code == 200:
1876
  jsonData = json.loads(base64.b64decode(res.json()['content']))
1877
  modal_text = "**Description des situations d'apprentissage :**"