Commit 2374e40b authored by Bertille Dubosc de Pesquidoux's avatar Bertille Dubosc de Pesquidoux
Browse files

Compatibilité avec Entraide

parent f8993c15
......@@ -91,18 +91,17 @@ def convertStr(v: str, context: str = None) -> str:
"""Convertir une str en format entraide grâce au dictionnaire 'conversion'
"""
showNode(f"S : {v}, {context}")
if context == "url":
if context == "url" or context == "name":
return v
elif context == "name":
return v
elif context == "consent":
pass # Todo, on ne l'a pas dans le schéma
elif context == "software":
soft = conversion["values"]["software"].get(v, None)
if soft is None:
print(f"Software '{v}' non-existant")
# soft = v # On met la valeur maison, au cas où
return soft
# elif context == "consent":
# return v
# elif context == "node_link":
# return v
elif context == "type" or context == "software" or context == "account":
value = conversion["values"][context].get(v, None)
if value is None:
print(f"{context} '{v}' non-existant")
return value
return None
......@@ -112,7 +111,7 @@ def convertInt(v: int, context: str = None) -> str:
if context == "degradability":
return convertDegradability(v)
elif context == "weight":
return v
return str(v)
return None
......@@ -169,15 +168,10 @@ def exploseChatonServices(d) -> list:
def makeChatonService(c: dict, service: dict) -> dict:
"""Passage des champs du service aux champs du chaton"""
nc = c.copy()
software = service.get('software')
description = conversion['descriptions']['software'].get(
software
)
if description is None:
if software is not None:
print(f"Aucune description pour {software}")
description = "Aucune description pour ce service"
nc['type'] = description
# Parce que le consentement et le lien d'édition n'existent pas dans
# notre schema, on met des valeurs bidons
nc['consent'] = '1'
nc['edit_link'] = 'https://chatons.org/fr/node/0000/edit'
for (k, v) in service.items():
nc[k] = v
......@@ -194,12 +188,24 @@ def nodeify(liste_chaton: list) -> dict:
]
}
# Vérification que toutes les valeurs du dictionnaire sont dans l'ordre
def addMissingValues(services: list) -> list:
for service in services:
for field, value in conversion["expected_fields"].items():
if field not in service:
if type(value) is str:
service[field] = "Valeur par défaut"
elif type(value) is int:
service[field] = "1"
return services
# Synthèse des conversions :
def convertSchema(input) -> dict:
"""Maxi-conversion entre le schéma de la Tx et le schéma entraide"""
return nodeify( # Structure node
exploseChatonServices( # Explosion par service
convertValue(input, "chaton") # Conversion valeur/clé JSON
return nodeify( # Structure node
addMissingValues( # Tous les champs nécessaires
exploseChatonServices( # Explosion par service
convertValue(input, "chaton") # Conversion valeur/clé JSON
)
)
)
# Le dictionnaire qui sert à passer de nos valeurs à celles de entraide
conversion = {
"expected_fields": {
"chaton": "",
"type": "",
"software": "",
"open": "",
"weight": 0,
"consent": 0,
"degradability": "",
"endpoint": "",
"edit_link": "",
"chaton_website": "",
},
"keys": {
"chaton": {
"name": "chaton",
......@@ -7,14 +19,14 @@ conversion = {
"services": "services",
},
"services": {
"software": "software", # list → str
# "": "type", # Ajouté après coup
"public": "open",
"url": "endpoint",
"software": "software",
"type": "type",
"account": "open",
"weight": "weight",
"consent": "consent", # Todo
"degradability": "degradability",
"url": "endpoint",
"magie_noire": "edit_link", # Kececé ?
"consent": "consent", # Todo
"node_link": "edit_link" # Todo
}
},
"values": {
......@@ -42,33 +54,67 @@ conversion = {
"strut": "Strut",
# ajoutés main :
"mattermost": "Mattermost",
}
},
"descriptions": {
"software": {
# Parsés depuis les données du framagit le 24/05/2020
"Lufi": "Partage temporaire de fichiers (alternative à WeTransfer, DropSend)",
"Draw.io": "Création de schémas et diagrammes (alternative à Visio)",
"Privatebin": "Transfert de messages chiffrés (alternative à PasteBin)",
"Etherpad": "Rédaction collaborative (alternative à Google Docs)",
"Framadate": "Aide à la prise de rendez-vous (alternative à Doodle)",
"Plik": "Partage temporaire de fichiers (alternative à WeTransfer, DropSend)",
"EasyRTC": "Visioconférence (alternative à Skype, Hangouts, etc.)",
"Cryptpad": "Rédaction collaborative (alternative à Google Docs)",
"Filetolink": "Partage temporaire de fichiers (alternative à WeTransfer, DropSend)",
"Lutim": "Stockage/partage d'images (alternative à Img.ur)",
"FirefoxSend": "Partage temporaire de fichiers (alternative à WeTransfer, DropSend)",
"Polr": "Raccourcisseur d'URL (alternative à Bit.ly, tinyurl, etc.)",
"LSTU": "Raccourcisseur d'URL (alternative à Bit.ly, tinyurl, etc.)",
"Jitsi Meet": "Visioconférence (alternative à Skype, Hangouts, etc.)",
"MyCryptoChat": "Chat IRC ou Jabber (alternative à MSN)",
"Libreto": "Rédaction collaborative (alternative à Google Docs)",
"Darkwire.io": "Chat IRC ou Jabber (alternative à MSN)",
"Strut": "Présentation collaborative (alternative à Google Drive)",
"Scrumblr": "Tableau blanc collaboratif (alternative à Stoodle)",
"Ethercalc": "Tableur collaboratif (alternative à Google Sheets)",
"rs-short": "Raccourcisseur d'URL (alternative à Bit.ly, tinyurl, etc.)",
# Ajoutés à la main :
},
"account": {
"sans_inscription": "Ouvert à tou⋅te⋅s sans inscription",
"sur_inscription": "Ouvert à tou⋅te⋅s sur inscription",
"cercle_prive": "Restreint"
},
"type": {
"mail": "Courrier électronique / mail (alternative à Gmail, Hotmail, YahooMail, etc.)",
"contacts": "Carnet d'adresse (alternative à Google Contacts)",
"mailing_list": "Liste de diffusion (alternative à Google Groupes)",
"newsletter": "Lettres d'information (alternative à MailChimp)",
"audioconference": "Audioconférence (alternative à Discord)",
"visioconference": "Visioconférence (alternative à Skype, Hangouts, etc.)",
"messagerie_instantanee": "Messagerie instantanée (alternative à Slack)",
"serveur_messagerie_instantanee": "Serveur de messagerie instantaneé (type Matrix)",
"client_messagerie_instantanee": "Client de messagerie instantanée (type Riot)",
"chat": "Chat IRC ou Jabber (alternative à MSN)",
"reseau_social": "Réseau social (alternative à Facebook)",
"microblogging": "Microblogging (alternative à Twitter)",
"client_microblogging": "Frontend alternatif pour du microblogging (type Nitter)",
"moteur_recherche": "Moteur de recherche (alternative à Google Search)",
"cartographie": "Cartographie (alternative à Google Maps, Mappy, etc.)",
"sondage": "Outils de sondage (alternative à SurveyMonkey)",
"reduc_url": "Raccourcisseur d'URL (alternative à Bit.ly, tinyurl, etc.)",
"transfert_chiffre": "Transfert de messages chiffrés (alternative à PasteBin)",
"favoris": "Gestionnaire de marques-pages / favoris (alternative à Del.icio.us, Diigo, Pearltrees, etc.)",
"rss": "Agrégateur de flux RSS (alternative à Netvibes, Feedly, InoReader, etc.)",
"lire_plus_tard": "Sauvegarde de contenus web (alternative à Pocket, Instapaper, etc.)",
"mots_de_passe": "Gestionnaire de mots de passe (alternative à LastPass, Dashlane, etc.)",
"forge_logicielle": "Forge logicielle (alternative à Github)",
"agenda": "Agenda partagé (alternative à Google Agenda)",
"doc_collaboratif": "Rédaction collaborative (alternative à Google Docs)",
"tab_collaboratif": "Tableur collaboratif (alternative à Google Sheets)",
"whiteboard_collaboratif": "Tableau blanc collaboratif (alternative à Stoodle)",
"diapo_collaboratif": "Présentation collaborative (alternative à Google Drive)",
"questionnaire": "Questionnaire en ligne (alternative à Google Forms)",
"rdv": "Aide à la prise de rendez-vous (alternative à Doodle)",
"schema": "Création de schémas et diagrammes (alternative à Visio)",
"outils_svg": "Outils de compression et de création SVG",
"carte_heuristique": "Carte heuristique / mentale (alternative à Mindmeister)",
"taches": "Gestionnaire de tâches (alternative à Google Tasks)",
"pad_collaboratif": "Prise de note (alternative à Evernote, OneNote, etc.)",
"gestion_projet": "Gestion de projets (alternative à Trello, Asana, etc.)",
"prise_decision": "Outils de prise de décision (alternative à Klaxoon)",
"stockage_fichiers": "Stockage/ partage de documents (alternative à Dropbox, Google Drive, OneDrive, etc.)",
"partage_temporaire_fichier": "Partage temporaire de fichiers (alternative à WeTransfer, DropSend)",
"partage_image": "Stockage/partage d'images (alternative à Img.ur)",
"partage_album_photo": "Stockage/partage d'albums de photos (alternative à Google Photos, Flickr, etc.)",
"diffusion_video": "Diffusion de fichiers vidéos (alternative à YouTube, DailyMotion, Viméo, etc.)",
"diffusion_audio": "Diffusion de fichiers audio (alternative à Soundcloud)",
"diffusion_direct": "Diffusion en direct de flux audio et vidéo",
"blog": "Hébergement de sites web / blogs",
"comptabilite": "Gestionnaire de finances personnelles",
"facturation": "Gestionnaire de facturation / paiement",
"progiciel_gestion": "Progiciel de Gestion Intégré (PGI, ERP en anglais)",
"mutualise": "Hébergement sur serveur(s) mutualisé(s)",
"vps": "Location de serveur(s)virtuel(s) (VPS)",
"dedie": "Location de serveur(s) dédié(s)",
"vpn": "VPN",
"resolveur_doh": "Résolveur DNS over HTTPS",
"autre": "Autre"
}
}
}
python3 convert.py -o ../sortie/entraide.json ../sortie/chatons.json
python3 convert.py -o ../sortie/chaton-services.json ../sortie/chatons.json
......@@ -52,7 +52,7 @@ Voici les liens vers les dernières données obtenues :
- [Chercher un Chaton](http://chatons.picasoft.net/search/recherche.html)
- [Télécharger le JSON de tous les Chatons](http://chatons.picasoft.net/exports/chatons.json)
- [Télécharger le JSON des services](http://chatons.picasoft.net/exports/entraide.json)
- [Télécharger le JSON des services](http://chatons.picasoft.net/exports/chatons-services.json)
- [Les logs](http://chatons.picasoft.net/logs/log.txt) (pour vérifier si votre Chaton est bien
inclus dans l'export par exemple)
......
......@@ -16,7 +16,7 @@
<li><a href="http://chatons.picasoft.net/documentation/contribuer/#ajouter-son-chaton">Le tutoriel pour ajouter son Chaton</a></li>
<li><a href="http://chatons.picasoft.net/gen/json_gen.html">L'outil de génération de fiche</a></li>
<li><a href="http://chatons.picasoft.net/exports/chatons.json">Le fichier regroupant tous les Chatons</a></li>
<li><a href="http://chatons.picasoft.net/exports/entraide.json">Le fichier des services au format entraide</a></li>
<li><a href="http://chatons.picasoft.net/exports/chatons-services.json">Le fichier des services au format entraide</a></li>
<li><a href="http://chatons.picasoft.net/search/recherche.html">L'outil de recherche d'un Chaton</a></li>
</ul>
</p>
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment