diff --git a/TODO.md b/TODO.md index 58a5e98..62f317d 100644 --- a/TODO.md +++ b/TODO.md @@ -1,3 +1,4 @@ * débug -> bien avancé * rendre plus joli -* corriger remplissage +* corriger remplissage + diff --git a/baseFilms.db b/baseFilms.db index 0ab7fef..47e5d1d 100644 Binary files a/baseFilms.db and b/baseFilms.db differ diff --git a/ccInterface.py b/ccInterface.py new file mode 100644 index 0000000..a5bfa2f --- /dev/null +++ b/ccInterface.py @@ -0,0 +1,144 @@ +#!/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 main(self): + self.menu() + pass + +fi = FilmInterface() +fi.main() diff --git a/cineclubBlogSQ.py b/cineclubBlogSQ.py index e174a25..ea07a5a 100644 --- a/cineclubBlogSQ.py +++ b/cineclubBlogSQ.py @@ -10,6 +10,7 @@ TODO : * remplir * débug * documenter + * publication FB """ import sqlite3 @@ -23,6 +24,24 @@ class filmSQ(): """ceci est une aide""" if type(dic) == type(""): self.idN = dic + elif type(dic) == type(1): + conn = sqlite3.connect("baseFilms.db") + conn.row_factory = sqlite3.Row + c = conn.cursor() + + try: + c.execute("""SELECT idN FROM films WHERE i = ?""",(dic,)) + r = c.fetchone() + self.idN = r[0] + + conn.commit() + + except Exception as e: + conn.rollback() + raise e + finally: + conn.close() + else: conn = sqlite3.connect("baseFilms.db") conn.row_factory = sqlite3.Row @@ -245,6 +264,35 @@ class filmSQ(): conn.close() pass + def newFilm(): + """Interface d'ajout d'un nouveau film""" + dic = {} + i = filmSQ.maxId() + + dic['i'] = i+1 + dic['idN'] = input("identifiant du film ? ") + d = input("date de la séance (format JJ/MM/AAAA ) ") + d = d.split("/") + dic['date'] = date(int(d[2]), int(d[1]), int(d[0])) + dic['nom'] = input("titre ? ") + dic['acteurs'] = eval(input("acteurs (format [acteur1, acteur2, ..]) ? ")) + dic['realisateur'] = input("realisateur ? ") + dic['duree'] = eval(input("durée du film (en minutes)? ")) + dic['synopsis'] = input("Donnez ici un synopsis rapide du film ") + dic['pays'] = input("pays de diffusion du film ? ") + dic['annee'] = input("année de sortie du film (format AAAA) ? ") + dic['youtube'] = input("adresse youtube de la bande-annonce ? ") + dic['image'] = input("url d'une affiche du film ? ") + dic['couleur'] = eval(input("le film est-il en couleur (format True/False) ? ")) + dic['formatCopie'] = input("format de la copie ? ") + dic['langST'] = input("langue et sous-titre : VF/VOSTFR ? ") + + + print(dic) + seance = filmSQ(dic) + return seance + + def strListe(liste): res = "" for l in liste[:-1]: @@ -252,32 +300,4 @@ def strListe(liste): if liste != []: res += liste[-1] return res - -def newFilm(): - """Interface d'ajout d'un nouveau film""" - dic = {} - i = filmSQ.maxId() - - dic['i'] = i+1 - dic['idN'] = input("identifiant du film ? ") - d = input("date de la séance (format JJ/MM/AAAA ) ") - d = d.split("/") - dic['date'] = date(int(d[2]), int(d[1]), int(d[0])) - dic['nom'] = input("titre ? ") - dic['acteurs'] = eval(input("acteurs (format [acteur1, acteur2, ..]) ? ")) - dic['realisateur'] = input("realisateur ? ") - dic['duree'] = eval(input("durée du film (en minutes)? ")) - dic['synopsis'] = input("Donnez ici un synopsis rapide du film ") - dic['pays'] = input("pays de diffusion du film ? ") - dic['annee'] = input("année de sortie du film (format AAAA) ? ") - dic['youtube'] = input("adresse youtube de la bande-annonce ? ") - dic['image'] = input("url d'une affiche du film ? ") - dic['couleur'] = eval(input("le film est-il en couleur (format True/False) ? ")) - dic['formatCopie'] = input("format de la copie ? ") - dic['langST'] = input("langue et sous-titre : VF/VOSTFR ? ") - - - print(dic) - seance = filmSQ(dic) - return seance diff --git a/reunion/prograS2.md b/reunion/prograS2.md index 874c66c..2c7a729 100644 --- a/reunion/prograS2.md +++ b/reunion/prograS2.md @@ -99,7 +99,7 @@ Avec la caisse et tout, on a 4658,5€ * **13/3** *Le trésor* DVD * **20/3** *Barbara* 35 -* **27/2** *Los Olvidados* +* **27/3** *Los Olvidados* * **03/4** *5 obstructions* * **10/4** *semaine arabe* * **17/4** *The saddest music in the world* @@ -110,4 +110,4 @@ Avec la caisse et tout, on a 4658,5€ * **22/5** *Tangerine* * **29/5** *On achève bien les chevaux* * **12/6** *Drôle de danse* -* **26/6** *Songe d'une nuit d'été* \ No newline at end of file +* **26/6** *Songe d'une nuit d'été*