Code source de NaoSensor.Script_BDD_Plante

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
GNU AFFERO GENERAL PUBLIC LICENSE
    Version 3, 19 November 2007
"""
from __future__ import unicode_literals
import sys
import codecs
import NaoSensor.plant as p
import json
import os


template = {
    "nom": None,
    "nom latin": None,
    "difficulte": None,
    "hauteur minimum": None,
    "hauteur maximum": None,
    "type de sol": None,
    "plantation": {
        "date": None,
        "creuser": None,
        "engrais": None,
        "planter": None,
        "recouvrir": None,
        "arroser": None
    },
    "arrosage": None,
    "recolte": None,
    "humidite minimum": None,
    "humidite maximum": None,
    "ensoleillement minimum" : None,
    "ensoleillement maximum" : None,
    "temperature minimum" : None,
    "temperature maximum" : None,
    "taux engrais minimum" : None,
    "taux engrais maximum" : None,
    "faiblesse": None,
    "parasite": None,
    "maladie": None,
    "entretien": None,
    "determinant": None,
    "pluriel": None
}

def choix():
    choix = raw_input("Veux tu ajouter une nouvelle plante ou changer une plante déjà existante ? o pour l'ajout et n pour changer. \n")
    if choix == 'o':
        add_plante()
    else:
        modif_plante()

def get_file_name():
    file_name = raw_input("Quelle est la plante que tu veux ajouter ? \n")
    list = p.Plant.get_plantes(path="../datas/plants")
    while file_name in list:
        print "Fichier déjà existant"
        file_name = raw_input("Quelle est la plante que tu veux ajouter ? \n")
    return file_name

def get_file_name_existant():
    file_name = raw_input("Quelle est la plante que tu veux modifier ? \n")
    list = p.Plant.get_plantes(path="../datas/plants")
    while file_name not in list:
        print "Fichier non existant \n"
        file_name = raw_input("Quelle est la plante que tu veux modifier ? \n")
    return file_name

[docs]def add_plante(): """ :return: """ plante_name = get_file_name() template["nom"] = plante_name for k in template: if k != "nom": if type(template[k]) == dict: for k_sous_dict in template[k]: choix = raw_input(u"{} \n".format(k_sous_dict)).decode(sys.stdin.encoding) template[k][k_sous_dict] = choix else: choix = raw_input(u"{} \n".format(k)).decode(sys.stdin.encoding) template[k] = choix json.dump(template, codecs.open("../datas/plants/{}.json".format(plante_name), 'w', 'utf-8'))
[docs]def modif_plante(): """ :return: """ plante_name = get_file_name_existant() plante = open ("../datas/plants/{}.json".format(plante_name)) jp = json.load(plante) cle = raw_input("Quelle phrase veux tu changer ? (arrosage, recolte....) \n") directory = "../datas/plants" nom = False while cle not in jp: print("Rentre un mot parmi ces clés : nom, difficulte, hauteur minimum...") cle = raw_input(u"Quelle phrase veux tu changer ? (arrosage, recolte....) \n") if cle == "nom": print ("Voici ce que tu avais mis : \n") valeur = jp[cle] print (cle, valeur) choix = raw_input(u"{} \n".format(cle)).decode(sys.stdin.encoding) jp[cle] = choix nom = True elif cle == "plantation": cle2 = raw_input("Que veux tu modifier dans plantation ?(date, creuser, engrais, planter, recouvrir, arroser)") print ("Voici ce que tu avais mis : \n") valeur = jp[cle][cle2] print (cle2, valeur) choix = raw_input(u"{} \n".format(cle2)).decode(sys.stdin.encoding) jp[cle][cle2] = choix else: print ("Voici ce que tu avais mis : \n") valeur = jp[cle] print (cle, valeur) choix = raw_input(u"{} \n".format(cle)).decode(sys.stdin.encoding) jp[cle] = choix json.dump(jp, codecs.open("../datas/plants/{}.json".format(plante_name), 'w', 'utf-8')) plante.close() if nom == True: old = os.path.join(directory, valeur + ".json") new = os.path.join(directory, choix + ".json") os.rename(old, new)
if __name__ == "__main__": choix() answer = raw_input("Continuer ? <n/o> (n: non / o: oui) ") while answer != 'n': if answer == 'o': choix() answer = raw_input("Continuer ? <n/o> (n: non / o: oui) ")