datacipen commited on
Commit
1d864b1
·
verified ·
1 Parent(s): cc54c8b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +67 -30
app.py CHANGED
@@ -442,25 +442,25 @@ def connexion_France_Travail():
442
  client_secret=os.getenv('POLE_EMPLOI_CLIENT_SECRET'))
443
  return client
444
 
445
- def API_France_Travail(romeListArray):
446
- client = connexion_France_Travail()
447
- todayDate = datetime.datetime.today()
448
- month, year = (todayDate.month-1, todayDate.year) if todayDate.month != 1 else (12, todayDate.year-1)
449
- start_dt = todayDate.replace(day=1, month=month, year=year)
450
- end_dt = datetime.datetime.today()
451
- results = []
452
- for k in romeListArray:
453
- if k[0:1] == ' ':
454
- k = k[1:]
455
- params = {"motsCles": k.replace('/', '').replace('-', '').replace(',', '').replace(' ', ','),'minCreationDate': dt_to_str_iso(start_dt),'maxCreationDate': dt_to_str_iso(end_dt),'range':'0-149'}
456
- try:
457
- search_on_big_data = client.search(params=params)
458
- results += search_on_big_data["resultats"]
459
- except:
460
- print("Il n'y a pas d'offres d'emploi.")
461
-
462
- results_df = pd.DataFrame(results)
463
- return results_df
464
 
465
  theme_toggle = dmc.Tooltip(
466
  dmc.ActionIcon(
@@ -632,6 +632,7 @@ app.layout = dmc.MantineProvider(
632
  [
633
  html.Div(
634
  children=[
 
635
  dmc.Container(
636
  children=[
637
  dmc.Grid(
@@ -831,6 +832,30 @@ def switch_theme(_, theme):
831
  def drawer_demo(n_clicks):
832
  return True
833
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
834
  @callback(
835
  Output(component_id='figRepartition', component_property='figure'),
836
  Output(component_id='figCompetences', component_property='figure'),
@@ -840,6 +865,7 @@ def drawer_demo(n_clicks):
840
  Input(component_id='framework-multi-select', component_property='value'),
841
  Input('figEmplois', 'selectedData'),
842
  Input("mantine-provider", "forceColorScheme"),
 
843
  )
844
  def create_repartition(array_value, selectedData, theme):
845
  if theme == "dark":
@@ -851,7 +877,8 @@ def create_repartition(array_value, selectedData, theme):
851
  paper_bgcolor = 'rgba(255, 255, 255, 1)'
852
  plot_bgcolor = 'rgba(255, 255, 255, 1)'
853
 
854
- df_FT = API_France_Travail(array_value)
 
855
 
856
  ######## localisation ########
857
  df = df_FT[['intitule','typeContratLibelle','experienceLibelle','lieuTravail','secteurActiviteLibelle']].copy()
@@ -1060,9 +1087,10 @@ def create_tableau(df, theme):
1060
  Input('figRepartition', 'selectedData'),
1061
  Input(component_id='framework-multi-select', component_property='value'),
1062
  Input("mantine-provider", "forceColorScheme"),
 
1063
  )
1064
 
1065
- def update_emploi(selectedData, array_value, theme):
1066
  options = []
1067
  if selectedData != None:
1068
  if type(selectedData['points'][0]['hovertext']) == str:
@@ -1072,7 +1100,8 @@ def update_emploi(selectedData, array_value, theme):
1072
  else:
1073
  options = ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','2A','2B','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80','81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','971','972','973','974']
1074
 
1075
- df_FT = API_France_Travail(array_value)
 
1076
  df = df_FT[['intitule','typeContratLibelle','experienceLibelle','lieuTravail']].copy()
1077
  df["lieuTravail"] = df["lieuTravail"].apply(lambda x: x['libelle']).apply(lambda x: x[0:3]).apply(lambda x: x.strip())
1078
  df.drop(df[df['lieuTravail'] == 'Fra'].index, inplace = True)
@@ -1089,9 +1118,10 @@ def update_emploi(selectedData, array_value, theme):
1089
  Input('figRepartition', 'selectedData'),
1090
  Input(component_id='framework-multi-select', component_property='value'),
1091
  Input("mantine-provider", "forceColorScheme"),
 
1092
  )
1093
 
1094
- def update_contrat(selectedData, array_value, theme):
1095
  options = []
1096
  if selectedData != None:
1097
  if type(selectedData['points'][0]['hovertext']) == str:
@@ -1101,7 +1131,8 @@ def update_contrat(selectedData, array_value, theme):
1101
  else:
1102
  options = ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','2A','2B','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80','81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','971','972','973','974']
1103
 
1104
- df_FT = API_France_Travail(array_value)
 
1105
  df = df_FT[['intitule','typeContratLibelle','experienceLibelle','lieuTravail']].copy()
1106
  df["lieuTravail"] = df["lieuTravail"].apply(lambda x: x['libelle']).apply(lambda x: x[0:3]).apply(lambda x: x.strip())
1107
  df.drop(df[df['lieuTravail'] == 'Fra'].index, inplace = True)
@@ -1119,9 +1150,10 @@ def update_contrat(selectedData, array_value, theme):
1119
  Input('figRepartition', 'selectedData'),
1120
  Input(component_id='framework-multi-select', component_property='value'),
1121
  Input("mantine-provider", "forceColorScheme"),
 
1122
  )
1123
 
1124
- def update_experience(selectedData, array_value, theme):
1125
  options = []
1126
  if selectedData != None:
1127
  if type(selectedData['points'][0]['hovertext']) == str:
@@ -1131,7 +1163,8 @@ def update_experience(selectedData, array_value, theme):
1131
  else:
1132
  options = ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','2A','2B','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80','81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','971','972','973','974']
1133
 
1134
- df_FT = API_France_Travail(array_value)
 
1135
  df = df_FT[['intitule','typeContratLibelle','experienceLibelle','lieuTravail']].copy()
1136
  df["lieuTravail"] = df["lieuTravail"].apply(lambda x: x['libelle']).apply(lambda x: x[0:3]).apply(lambda x: x.strip())
1137
  df.drop(df[df['lieuTravail'] == 'Fra'].index, inplace = True)
@@ -1149,9 +1182,10 @@ def update_experience(selectedData, array_value, theme):
1149
  Input('figRepartition', 'selectedData'),
1150
  Input(component_id='framework-multi-select', component_property='value'),
1151
  Input("mantine-provider", "forceColorScheme"),
 
1152
  )
1153
 
1154
- def update_tableau(selectedData, array_value, theme):
1155
  options = []
1156
  if selectedData != None:
1157
  if type(selectedData['points'][0]['hovertext']) == str:
@@ -1161,7 +1195,8 @@ def update_tableau(selectedData, array_value, theme):
1161
  else:
1162
  options = ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','2A','2B','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80','81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','971','972','973','974']
1163
 
1164
- df_FT = API_France_Travail(array_value)
 
1165
  df_FT["origineOffre"] = df_FT["origineOffre"].apply(lambda x: "[Voir l'offre sur le site web de France Travail](" + x['urlOrigine'] + ")")
1166
  df_FT["lieuTravail"] = df_FT["lieuTravail"].apply(lambda x: x['libelle']).apply(lambda x: x[0:3]).apply(lambda x: x.strip())
1167
  df_FT.drop(df_FT[df_FT['lieuTravail'] == 'Fra'].index, inplace = True)
@@ -1332,15 +1367,17 @@ def clear_input(n_clicks, n_submit):
1332
  [Input("submit", "n_clicks"), Input("user-input", "n_submit")],
1333
  [State("user-input", "value"), State("store-conversation", "data")],
1334
  Input(component_id='framework-multi-select', component_property='value'),
 
1335
  )
1336
- def run_chatbot(n_clicks, n_submit, user_input, chat_history, array_value):
1337
  if n_clicks == 0 and n_submit is None:
1338
  return "", None
1339
 
1340
  if user_input is None or user_input == "":
1341
  return chat_history, None
1342
 
1343
- df_FT = API_France_Travail(array_value)
 
1344
 
1345
  df_FT_Select = df_FT[['intitule','typeContratLibelle','experienceLibelle','competences','description','qualitesProfessionnelles','salaire','lieuTravail','formations']].copy()
1346
  list_FT = df_FT_Select.values.tolist()
 
442
  client_secret=os.getenv('POLE_EMPLOI_CLIENT_SECRET'))
443
  return client
444
 
445
+ #def API_France_Travail(romeListArray):
446
+ # client = connexion_France_Travail()
447
+ # todayDate = datetime.datetime.today()
448
+ # month, year = (todayDate.month-1, todayDate.year) if todayDate.month != 1 else (12, todayDate.year-1)
449
+ # start_dt = todayDate.replace(day=1, month=month, year=year)
450
+ # end_dt = datetime.datetime.today()
451
+ # results = []
452
+ # for k in romeListArray:
453
+ # if k[0:1] == ' ':
454
+ # k = k[1:]
455
+ # params = {"motsCles": k.replace('/', '').replace('-', '').replace(',', '').replace(' ', ','),'minCreationDate': dt_to_str_iso(start_dt),'maxCreationDate': dt_to_str_iso(end_dt),'range':'0-149'}
456
+ # try:
457
+ # search_on_big_data = client.search(params=params)
458
+ # results += search_on_big_data["resultats"]
459
+ # except:
460
+ # print("Il n'y a pas d'offres d'emploi.")
461
+ #
462
+ # results_df = pd.DataFrame(results)
463
+ # return results_df
464
 
465
  theme_toggle = dmc.Tooltip(
466
  dmc.ActionIcon(
 
632
  [
633
  html.Div(
634
  children=[
635
+ dcc.Store(id="store-emplois"),
636
  dmc.Container(
637
  children=[
638
  dmc.Grid(
 
832
  def drawer_demo(n_clicks):
833
  return True
834
 
835
+ @callback(
836
+ Output("store-emplois", "data"),
837
+ Input(component_id='framework-multi-select', component_property='value'),
838
+ )
839
+ def API_France_Travail(romeListArray):
840
+ client = connexion_France_Travail()
841
+ todayDate = datetime.datetime.today()
842
+ month, year = (todayDate.month-1, todayDate.year) if todayDate.month != 1 else (12, todayDate.year-1)
843
+ start_dt = todayDate.replace(day=1, month=month, year=year)
844
+ end_dt = datetime.datetime.today()
845
+ results = []
846
+ for k in romeListArray:
847
+ if k[0:1] == ' ':
848
+ k = k[1:]
849
+ params = {"motsCles": k.replace('/', '').replace('-', '').replace(',', '').replace(' ', ','),'minCreationDate': dt_to_str_iso(start_dt),'maxCreationDate': dt_to_str_iso(end_dt),'range':'0-149'}
850
+ try:
851
+ search_on_big_data = client.search(params=params)
852
+ results += search_on_big_data["resultats"]
853
+ except:
854
+ print("Il n'y a pas d'offres d'emploi.")
855
+
856
+ results_df = pd.DataFrame(results)
857
+ return results_df.to_dict('records')
858
+
859
  @callback(
860
  Output(component_id='figRepartition', component_property='figure'),
861
  Output(component_id='figCompetences', component_property='figure'),
 
865
  Input(component_id='framework-multi-select', component_property='value'),
866
  Input('figEmplois', 'selectedData'),
867
  Input("mantine-provider", "forceColorScheme"),
868
+ Input('store-emplois', 'data')
869
  )
870
  def create_repartition(array_value, selectedData, theme):
871
  if theme == "dark":
 
877
  paper_bgcolor = 'rgba(255, 255, 255, 1)'
878
  plot_bgcolor = 'rgba(255, 255, 255, 1)'
879
 
880
+ #df_FT = API_France_Travail(array_value)
881
+ df_FT = pd.DataFrame(data)
882
 
883
  ######## localisation ########
884
  df = df_FT[['intitule','typeContratLibelle','experienceLibelle','lieuTravail','secteurActiviteLibelle']].copy()
 
1087
  Input('figRepartition', 'selectedData'),
1088
  Input(component_id='framework-multi-select', component_property='value'),
1089
  Input("mantine-provider", "forceColorScheme"),
1090
+ Input('store-emplois', 'data')
1091
  )
1092
 
1093
+ def update_emploi(selectedData, array_value, theme, data):
1094
  options = []
1095
  if selectedData != None:
1096
  if type(selectedData['points'][0]['hovertext']) == str:
 
1100
  else:
1101
  options = ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','2A','2B','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80','81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','971','972','973','974']
1102
 
1103
+ #df_FT = API_France_Travail(array_value)
1104
+ df_FT = pd.DataFrame(data)
1105
  df = df_FT[['intitule','typeContratLibelle','experienceLibelle','lieuTravail']].copy()
1106
  df["lieuTravail"] = df["lieuTravail"].apply(lambda x: x['libelle']).apply(lambda x: x[0:3]).apply(lambda x: x.strip())
1107
  df.drop(df[df['lieuTravail'] == 'Fra'].index, inplace = True)
 
1118
  Input('figRepartition', 'selectedData'),
1119
  Input(component_id='framework-multi-select', component_property='value'),
1120
  Input("mantine-provider", "forceColorScheme"),
1121
+ Input('store-emplois', 'data')
1122
  )
1123
 
1124
+ def update_contrat(selectedData, array_value, theme, data):
1125
  options = []
1126
  if selectedData != None:
1127
  if type(selectedData['points'][0]['hovertext']) == str:
 
1131
  else:
1132
  options = ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','2A','2B','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80','81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','971','972','973','974']
1133
 
1134
+ #df_FT = API_France_Travail(array_value)
1135
+ df_FT = pd.DataFrame(data)
1136
  df = df_FT[['intitule','typeContratLibelle','experienceLibelle','lieuTravail']].copy()
1137
  df["lieuTravail"] = df["lieuTravail"].apply(lambda x: x['libelle']).apply(lambda x: x[0:3]).apply(lambda x: x.strip())
1138
  df.drop(df[df['lieuTravail'] == 'Fra'].index, inplace = True)
 
1150
  Input('figRepartition', 'selectedData'),
1151
  Input(component_id='framework-multi-select', component_property='value'),
1152
  Input("mantine-provider", "forceColorScheme"),
1153
+ Input('store-emplois', 'data')
1154
  )
1155
 
1156
+ def update_experience(selectedData, array_value, theme, data):
1157
  options = []
1158
  if selectedData != None:
1159
  if type(selectedData['points'][0]['hovertext']) == str:
 
1163
  else:
1164
  options = ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','2A','2B','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80','81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','971','972','973','974']
1165
 
1166
+ #df_FT = API_France_Travail(array_value)
1167
+ df_FT = pd.DataFrame(data)
1168
  df = df_FT[['intitule','typeContratLibelle','experienceLibelle','lieuTravail']].copy()
1169
  df["lieuTravail"] = df["lieuTravail"].apply(lambda x: x['libelle']).apply(lambda x: x[0:3]).apply(lambda x: x.strip())
1170
  df.drop(df[df['lieuTravail'] == 'Fra'].index, inplace = True)
 
1182
  Input('figRepartition', 'selectedData'),
1183
  Input(component_id='framework-multi-select', component_property='value'),
1184
  Input("mantine-provider", "forceColorScheme"),
1185
+ Input('store-emplois', 'data')
1186
  )
1187
 
1188
+ def update_tableau(selectedData, array_value, theme, data):
1189
  options = []
1190
  if selectedData != None:
1191
  if type(selectedData['points'][0]['hovertext']) == str:
 
1195
  else:
1196
  options = ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','2A','2B','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80','81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','971','972','973','974']
1197
 
1198
+ #df_FT = API_France_Travail(array_value)
1199
+ df_FT = pd.DataFrame(data)
1200
  df_FT["origineOffre"] = df_FT["origineOffre"].apply(lambda x: "[Voir l'offre sur le site web de France Travail](" + x['urlOrigine'] + ")")
1201
  df_FT["lieuTravail"] = df_FT["lieuTravail"].apply(lambda x: x['libelle']).apply(lambda x: x[0:3]).apply(lambda x: x.strip())
1202
  df_FT.drop(df_FT[df_FT['lieuTravail'] == 'Fra'].index, inplace = True)
 
1367
  [Input("submit", "n_clicks"), Input("user-input", "n_submit")],
1368
  [State("user-input", "value"), State("store-conversation", "data")],
1369
  Input(component_id='framework-multi-select', component_property='value'),
1370
+ Input('store-emplois', 'data')
1371
  )
1372
+ def run_chatbot(n_clicks, n_submit, user_input, chat_history, array_value, data):
1373
  if n_clicks == 0 and n_submit is None:
1374
  return "", None
1375
 
1376
  if user_input is None or user_input == "":
1377
  return chat_history, None
1378
 
1379
+ #df_FT = API_France_Travail(array_value)
1380
+ df_FT = pd.DataFrame(data)
1381
 
1382
  df_FT_Select = df_FT[['intitule','typeContratLibelle','experienceLibelle','competences','description','qualitesProfessionnelles','salaire','lieuTravail','formations']].copy()
1383
  list_FT = df_FT_Select.values.tolist()