Esempio n. 1
0
def entretien(species):
    ent = db_dealer.get_attributes(db_dealer.PLANT_TABLE, ["careLevel"], "species", "=", species)["careLevel"]["S"]
    if ent == "Facile":
        return f'Ne vous inquiétez pas, votre {species} n\'a pas énormément besoin de vous. Vérifier son état une fois par semaine devrait suffire.'
    elif ent == "Modéré":
        return f'Votre {species} a besoin d\'un peu d\'attention de votre part ! Pensez à vous en occuper 2 à 3 fois par semaine.'
    else:
        return f'Vous feriez mieux de vous occuper de votre {species} comme d\'un bébé ! Pensez à vérifiez son état tous les jours.'
Esempio n. 2
0
def arrosage(species):
    arr = db_dealer.get_attributes(db_dealer.PLANT_TABLE, ["waterNeed"], "species", "=", species)["waterNeed"]["S"]
    if arr == "Moyen":
        return f'Votre {species} a besoin d\'une quantité d\'eau normale. Arrosez 2 à 3 fois par semaine.'
    elif arr == "Faible":
        return f'Très peu d\'eau nécéssaire. Pour une plante d\'intérieur, arroser tous les mois. Pour une plante d\'extérieur, elle supporte bien la sécheresse.'
    else:
        return f'Si votre {species} est à l\'intérieur, vous pouvez l\'arroser plusieurs fois par semaine. \
Esempio n. 3
0
def soleil(species): 
    sun = db_dealer.get_attributes(db_dealer.PLANT_TABLE, ["sunNeed"], "species", "=", species)["sunNeed"]["S"]
    if sun == "Soleil": 
        return f'Votre {species} doit avoir du soleil direct toute la journée. En intérieur, c’est directement (moins d’1 m) devant une fenêtre orientée sud ou ouest.'
    elif sun == "Ombre":
        return f'Votre {species} doit être à l\'ombre d\'autres plantes. En intérieur, c’est le cas des pièces en hiver, des fenêtres au nord ou en partie occultées et quand la plante est loin de la fenêtre (+ de 2 m).'
    else:
        return f'Votre {species}  doit avoir du soleil une partie de la journée seulement. En intérieur, c’est devant une fenêtre à l’est ou plus éloignée d’une fenêtre orientée sud ou ouest.'
Esempio n. 4
0
def planter(species):
    plant = db_dealer.get_attributes(db_dealer.PLANT_TABLE, ["plantationMonths", "soilType"], "species", "=", species)
    response = ""
    if "soilType" in plant:
        response = plant["soilType"]["S"]

    response += f' Pour une meilleure pousse, il est préférable de planter votre {species} de \
        {plant["plantationMonths"]["SS"][0]} à {plant["plantationMonths"]["SS"][-1]}'
    return response
Esempio n. 5
0
def temperature(species):
    cold = db_dealer.get_attributes(db_dealer.PLANT_TABLE, ["coldResistance"], "species", "=", species)["coldResistance"]["S"]
    if cold == "Fragile":
        return f'Votre {species} est très fragile et supporte mal le froid. Placez votre plante dans un environnement assez chaud. ' + soleil(species)
    elif cold == "Moyenne":
        return f'Votre {species} supporte assez bien le froid, vous pouvez placer votre plante dans une pièce à température ambiante \
            et la sortir par beau temps. ' + soleil(species)
    else:
        return f'Votre {species} résiste au gel ! Rien ne lui fait peur ! ' + soleil(species)
Esempio n. 6
0
def get_plant_infos(species):
    """Checks if species parameter has completed infos in Plant table.
    If not it completes the plant infos by web-scrapping method and returns the plant ID.
    Else it returns the plant ID without web-scrapping"""

    try:
        item = db_dealer.get_attributes(db_dealer.PLANT_TABLE,
                                        ["id", "picUrl"], "species", "=",
                                        species)

        # Espèce de plante non renseignée dans la table informative
        if not item:

            returned_url = db_dealer.get_item(
                db_dealer.SUPPORTED_PLANT_TABLE, species, "", "",
                ["websiteUrl"])["websiteUrl"]["S"]

            def f(return_list):
                def collect_items(signal, sender, item, response, spider):
                    return_list.append(item)

                dispatcher.connect(collect_items, signal=signals.item_passed)
                runner = crawler.CrawlerRunner()
                deferred = runner.crawl(PlantInfoSpider, url=returned_url)
                deferred.addBoth(lambda _: reactor.stop())
                reactor.run()

            manager = Manager()
            return_list = manager.list()
            p = Process(target=f, args=(return_list, ))
            p.start()
            p.join()

            items = return_list[0]
            picUrl = items.get('picUrl')
            # Ajout de la plante dans la table informative et retour de son ID.

            try:
                plant_id = plant_services.add_plant(items)
                return plant_id, picUrl

            except ClientError as error:
                raise error

        # Espèce déjà renseignée dans la table informative

        return item["id"]["S"], item["picUrl"]["S"]

    except ClientError as error:
        raise error
Esempio n. 7
0
def anecdote(species):
    plant = db_dealer.get_attributes(db_dealer.PLANT_TABLE, ["ecologicalTips", "history"], "species", "=", species)
    if not plant:
        return f'Je n\'ai aucune anecdote à raconter sur votre {species}...'

    item_history = plant.get("history", None)
    item_tips = plant.get("ecologicalTips", None)

    history = item_history["S"] if item_history else "NULL"
    tips = item_tips["S"] if item_tips else "NULL"

    if history == "NULL" and tips == "NULL":
        return f'Je n\'ai aucune anecdote à raconter sur votre {species}...'

    response = f'Mmh oui j\'ai quelques anecdotes en stock pour votre {species} !\n'

    if tips != "NULL":
        response += plant["ecologicalTips"]["S"]

    else:
        response += plant["history"]["S"]

    return response
Esempio n. 8
0
def maladies(species):
    plant = db_dealer.get_attributes(db_dealer.PLANT_TABLE, ["pest"], "species", "=", species)
    if "pest" in plant:
        return plant["pest"]["S"]

    return ""
Esempio n. 9
0
def hauteur(species):
    height = db_dealer.get_attributes(db_dealer.PLANT_TABLE, ["height"], "species", "=", species)["height"]["S"]
    return f'Votre {species} peut atteindre une hauteur de {height} à maturité !'