ernestmindres commited on
Commit
cde2256
·
verified ·
1 Parent(s): bf1ee12

Update baserow_storage.py

Browse files
Files changed (1) hide show
  1. baserow_storage.py +80 -3
baserow_storage.py CHANGED
@@ -1,4 +1,4 @@
1
- # baserow_storage.py
2
 
3
  import os
4
  import requests
@@ -19,6 +19,8 @@ API_TOKEN = os.environ.get("BASEROW_API_TOKEN")
19
  # Les IDs de table seront récupérés depuis les variables d'environnement
20
  PRIMARY_USERS_TABLE_ID = os.environ.get("PRIMARY_USERS_TABLE_ID")
21
  END_USERS_TABLE_ID = os.environ.get("END_USERS_TABLE_ID")
 
 
22
 
23
  # Headers pour l'authentification
24
  HEADERS = {
@@ -27,8 +29,12 @@ HEADERS = {
27
  }
28
 
29
  # ----------------------------------------------------------------------
30
- # --- Noms de Colonnes pour la Table des Utilisateurs Principaux (Primary Users) ---
31
  # ----------------------------------------------------------------------
 
 
 
 
32
  FIELD_ID = 'ID' # Correspond à 'user_id' dans le code
33
  FIELD_EMAIL = 'Email' # Correspond à 'email'
34
  FIELD_USERNAME = 'Nom d\'utilisateur' # Correspond à 'username'
@@ -521,4 +527,75 @@ def _make_baserow_request(method: str, url: str, params: Optional[Dict] = None,
521
  except requests.exceptions.RequestException as e:
522
  logger.error(f"BASEROW CONNECTION ERROR: {e}")
523
  # Retourne un objet Response factice pour l'utiliser dans la fonction appelante
524
- return requests.Response()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # baserow_storage.py (Version Modifiée)
2
 
3
  import os
4
  import requests
 
19
  # Les IDs de table seront récupérés depuis les variables d'environnement
20
  PRIMARY_USERS_TABLE_ID = os.environ.get("PRIMARY_USERS_TABLE_ID")
21
  END_USERS_TABLE_ID = os.environ.get("END_USERS_TABLE_ID")
22
+ # NOUVEL ID DE TABLE POUR LES DÉPLOIEMENTS (Projets)
23
+ DEPLOYMENTS_TABLE_ID = os.environ.get("DEPLOYMENTS_TABLE_ID")
24
 
25
  # Headers pour l'authentification
26
  HEADERS = {
 
29
  }
30
 
31
  # ----------------------------------------------------------------------
32
+ # --- Noms de Colonnes pour les Déploiements adapter à votre structure Baserow) ---
33
  # ----------------------------------------------------------------------
34
+ FIELD_DEPLOY_ID = 'Deployment ID' # Nom de la colonne pour l'ID de déploiement (le dossier HF)
35
+ FIELD_USER_REF = 'User Link' # Nom de la colonne pour la référence à l'utilisateur principal
36
+ FIELD_HF_REPO_PATH = 'HF Repo Path' # Chemin complet vers le dossier dans le repo
37
+
38
  FIELD_ID = 'ID' # Correspond à 'user_id' dans le code
39
  FIELD_EMAIL = 'Email' # Correspond à 'email'
40
  FIELD_USERNAME = 'Nom d\'utilisateur' # Correspond à 'username'
 
527
  except requests.exceptions.RequestException as e:
528
  logger.error(f"BASEROW CONNECTION ERROR: {e}")
529
  # Retourne un objet Response factice pour l'utiliser dans la fonction appelante
530
+ return requests.Response()
531
+
532
+ # --- NOUVELLES FONCTIONS POUR LES DÉPLOIEMENTS (Projets) ---
533
+
534
+
535
+
536
+ def update_user_deployment_data(
537
+ user_baserow_row_id: int,
538
+ deploy_id: str,
539
+ user_link: str, # Utilisera l'ID interne de l'utilisateur
540
+ hf_repo_path: str
541
+ ) -> tuple[bool, str]:
542
+ """
543
+ Met à jour la ligne de l'utilisateur principal (PRIMARY_USERS_TABLE_ID)
544
+ avec les données de déploiement du projet (ID, Repo, etc.).
545
+ """
546
+ if not PRIMARY_USERS_TABLE_ID:
547
+ return False, "Erreur de configuration: ID de la table utilisateur principal manquant."
548
+
549
+ url = f"{DATA_BASE_URL}table/{PRIMARY_USERS_TABLE_ID}/{user_baserow_row_id}/"
550
+
551
+ # Les données à mettre à jour
552
+ data = {
553
+ FIELD_DEPLOY_ID: deploy_id,
554
+ FIELD_USER_REF: user_link,
555
+ FIELD_HF_REPO_PATH: hf_repo_path
556
+ }
557
+
558
+ # Utiliser PATCH pour mettre à jour seulement les champs spécifiés
559
+ response = _baserow_request(url, method="PATCH", data=data)
560
+
561
+ if response.status_code == 200:
562
+ logger.info(f"Déploiement ID {deploy_id} enregistré sur l'utilisateur Row ID {user_baserow_row_id}.")
563
+ return True, "Données de déploiement enregistrées avec succès sur le compte utilisateur."
564
+ else:
565
+ logger.error(f"Échec de la mise à jour du déploiement Baserow pour l'utilisateur {user_baserow_row_id}. Status: {response.status_code}, Body: {response.text}")
566
+ return False, f"Échec de la mise à jour Baserow: {response.status_code}"
567
+
568
+
569
+ # ----------------------------------------------------------------------
570
+ # --- MODIFICATION DE FONCTION : Récupérer le déploiement par ID ---
571
+ # La recherche doit maintenant se faire dans la table utilisateur.
572
+ # ----------------------------------------------------------------------
573
+ def get_deployment_by_id(deploy_id: str) -> Optional[Dict]:
574
+ """
575
+ Récupère les détails du déploiement (la ligne de l'utilisateur) par son ID unique (le nom du dossier HF).
576
+ """
577
+ if not PRIMARY_USERS_TABLE_ID:
578
+ return None
579
+
580
+ # Utiliser un filtre Baserow pour chercher par l'ID de déploiement dans la table utilisateur
581
+ url = f"{DATA_BASE_URL}table/{PRIMARY_USERS_TABLE_ID}/"
582
+
583
+ # Construction du filtre Baserow: filter__Deployment ID__equal={deploy_id}
584
+ filter_param = f"filter__{FIELD_DEPLOY_ID}__equal"
585
+ params = {
586
+ filter_param: deploy_id
587
+ }
588
+
589
+ response = _baserow_request(url, method="GET", params=params)
590
+
591
+ if response.status_code == 200:
592
+ results = response.json().get('results', [])
593
+ if results:
594
+ # Retourne les données de l'utilisateur contenant les données de déploiement
595
+ # Notez que cela renvoie la ligne utilisateur complète.
596
+ return results[0]
597
+ else:
598
+ return None
599
+ else:
600
+ logger.error(f"Échec de la récupération du déploiement Baserow. Status: {response.status_code}, Body: {response.text}")
601
+ return None