#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Sun Mar 25 18:20:49 2018 @author: alice """ #Enhancements : # * utiliser un dictionnaire pour les menus, afins d'avoir un menu de fond (quitter, corriger etc) # * mettre en place une file d'instruction pour anticiper # * vérifier les eval et les types donnés from cineclubBlogSQ import filmSQ as f import sqlite3 DEBUG = True class FilmInterface(): def __init__(self): self.filmCharge = None def menu(self): self.filmEnCours() champ = eval(input("""Voulez-vous \n 1: consulter la liste des films de la base de données \n 2: ajouter un film à la base de données \n 3: afficher une communication\n 4: modifier une séance\n""")) if champ == 1: self.selectFilm() elif champ == 2: self.newFilm() elif champ == 3: self.communication() pass elif champ == 4: self.corrigerFilm() pass def filmEnCours(self): if self.filmCharge: print("\nLe film couramment chargé est", self.filmCharge.nom, "\n") def selectFilm(self): f.printAll() rep = input("Entrez le code identifiant du film\n") self.filmCharge = f(rep) #TODO fix when wrong idN self.menu() def newFilm(self): f.newFilm() def afficherFilm(self): if self.filmCharge: self.filmCharge.show() else: print("Vous n'avez aucun film chargé pour le moment.\n") rep = eval(input("Tapez \n 1: Charger un film à partir de la base de données \n 2: ajouter un nouveau film à la base de données \n 0: revenir au menu principal \n")) if rep == 1: self.selectFilm() elif rep == 2: self.newFilm() elif rep == 0: self.menu() else: print("Votre entrée n'est pas valide. Merci d'entrer quelque chose de possible.\n") self.afficherFilm() def corrigerFilm(self): if self.filmCharge: #recuperer les cles possibles conn = sqlite3.connect("baseFilms.db") conn.row_factory = sqlite3.Row c = conn.cursor() try: c.execute("SELECT * FROM films") keys = [a[0] for a in c.description] except Exception as e: conn.rollback() if DEBUG: raise(e) finally: conn.close() #faire la modification if keys: print("Les champs possibles sont : ") for k in keys: print(k) nomAttr = input("Choisissez l'attribut que vous souhaitez modifier chez %s \n" % self.filmCharge.nom ) newValue = input("La valeur actuelle du champ %s est %s.\nVeuillez entrer la nouvelle valeur pour ce champ (et -1 si vous ne souhaitez finalement pas modifier le champ)\n" % (nomAttr, self.filmCharge.__getattr__(nomAttr))) if newValue != "-1": self.filmCharge.__setattr__(nomAttr, newValue) else: print("\nVous n'avez finalement pas modifié cet attribut.") else: print("\nLa connexion avec la base de données a planté, la modification n'a pas été effectuée") #on retourne au reste de la navigation rep = input("\nVoulez-vous\n 1: modifier une nouvelle fois le film %s \n 0: retourner au menu principal\n" % self.filmCharge.nom) if rep == "1": self.corrigerFilm() elif rep == "0": self.menu() else: print("\nVous n'avez pas de film chargé à corriger. Veuillez en sélectionner un") self.menu() def communication(self): self.filmEnCours() rep = input("Voulez-vous afficher \n 1: l'article du bocal du film courant \n 2: l'article de blog du film courant \n 3: le calendrier du film courant \n 4: la communication Facebook du film courant \n 5: l'email du film courant \n 6: le calendrier des films à partir du film courant \n 7: changer le film sélectionné \n 0: revenir au menu principal \n") if rep == "1": print(self.filmCharge.bocal()) self.finAction() elif rep == "2": print(self.filmCharge.blog()) self.finAction() elif rep == "3": print(self.filmCharge.calendrier()) self.finAction() elif rep == "4": print(self.filmCharge.facebook()) self.finAction() elif rep == "5": print(self.filmCharge.mail()) self.finAction() elif rep == "6": print("Fonction non implémentée pour le moment") self.finAction() elif rep == "7": self.selectFilm() elif rep == "0": self.menu() def finAction(self): self.menu() pass def main(self): self.menu() pass fi = FilmInterface() fi.main()