2018-03-25 19:17:48 +02:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun Mar 25 18 : 20 : 49 2018
@author : alice
"""
2018-03-26 00:49:47 +02:00
#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
2018-03-25 19:17:48 +02:00
from cineclubBlogSQ import filmSQ as f
2018-03-26 00:49:47 +02:00
import sqlite3
2019-03-09 03:43:35 +01:00
import readline
2018-03-26 00:49:47 +02:00
DEBUG = True
2018-03-25 19:17:48 +02:00
2018-03-26 00:49:47 +02:00
class FilmInterface ( ) :
def __init__ ( self ) :
self . filmCharge = None
def menu ( self ) :
self . filmEnCours ( )
2019-03-23 10:52:02 +01:00
champ = 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 5: créer une base de données vierges \n """ )
try :
champ = eval ( champ )
except NameError :
pass
2018-03-26 00:49:47 +02:00
if champ == 1 :
self . selectFilm ( )
elif champ == 2 :
self . newFilm ( )
2019-03-09 03:43:35 +01:00
print ( " \n Film enregistré. \n " )
self . menu ( )
2018-03-26 00:49:47 +02:00
elif champ == 3 :
self . communication ( )
pass
elif champ == 4 :
self . corrigerFilm ( )
2019-03-09 03:43:35 +01:00
elif champ == 5 :
self . initBDD ( )
else :
print ( " \n Champ inconnu. Pour quitter, appuyer sur Ctrl-D \n " )
self . menu ( )
2018-03-26 00:49:47 +02:00
pass
2018-03-25 21:06:12 +02:00
2018-03-26 00:49:47 +02:00
def filmEnCours ( self ) :
if self . filmCharge :
print ( " \n Le film couramment chargé est " , self . filmCharge . nom , " \n " )
2019-03-09 03:43:35 +01:00
def initBDD ( self ) :
fichier = open ( " dumpFile " , " r " )
instruction = fichier . read ( )
fichier . close ( )
conn = sqlite3 . connect ( ' baseFilms.db ' )
c = conn . cursor ( )
c . executescript ( instruction )
conn . commit ( )
conn . close ( )
2018-03-26 00:49:47 +02:00
def selectFilm ( self ) :
2018-03-25 21:06:12 +02:00
f . printAll ( )
2018-03-26 00:49:47 +02:00
rep = input ( " Entrez le code identifiant du film \n " )
2019-03-09 03:43:35 +01:00
try :
self . filmCharge = f ( rep )
except TypeError :
print ( " L ' identifiant n ' est pas correct " )
finally :
self . menu ( )
2018-03-26 00:49:47 +02:00
def newFilm ( self ) :
2019-03-09 03:43:35 +01:00
self . filmCharge = f . newFilm ( )
2018-03-26 00:49:47 +02:00
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 :
2019-03-09 03:43:35 +01:00
keys + = [ ' acteurs ' ]
2018-03-26 00:49:47 +02:00
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 )
2019-03-09 03:43:35 +01:00
if nomAttr == " acteurs " :
print ( " La valeur actuelle du champ %s est %s . \n Veuillez entrer la nouvelle valeur pour ce champ (et -1 si vous ne souhaitez finalement pas modifier le champ) \n " % ( nomAttr , self . filmCharge . __getattr__ ( nomAttr ) ) )
newValue = f . makeListActors ( )
2019-03-23 10:52:02 +01:00
elif nomAttr == " durée " :
self . filmCharge . __setattr__ ( nomAttr , f . input_duree ( ) )
elif nomAttr == " couleur " :
self . filmCharge . __setattr__ ( nomAttr , f . input_color ( ) )
elif nomAttr == " date " :
self . filmCharge . __setattr__ ( nomAttr , f . input_date ( ) )
2019-03-09 03:43:35 +01:00
else :
newValue = input ( " La valeur actuelle du champ %s est %s . \n Veuillez entrer la nouvelle valeur pour ce champ (et -1 si vous ne souhaitez finalement pas modifier le champ) \n " % ( nomAttr , self . filmCharge . __getattr__ ( nomAttr ) ) )
2018-03-26 00:49:47 +02:00
if newValue != " -1 " :
2019-03-09 03:43:35 +01:00
iStill = self . filmCharge . __getattr__ ( nomAttr )
2018-03-26 00:49:47 +02:00
self . filmCharge . __setattr__ ( nomAttr , newValue )
2019-03-09 03:43:35 +01:00
if nomAttr == " idN " :
self . filmCharge = f ( iStill )
2018-03-26 00:49:47 +02:00
else :
print ( " \n Vous n ' avez finalement pas modifié cet attribut. " )
else :
print ( " \n La 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 ( " \n Voulez-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 ( " \n Vous n ' avez pas de film chargé à corriger. Veuillez en sélectionner un " )
self . menu ( )
2019-03-09 03:43:35 +01:00
2018-03-26 00:49:47 +02:00
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 " :
2019-03-09 03:43:35 +01:00
print ( self . filmCharge . allCalendars ( ) )
2018-03-26 00:49:47 +02:00
self . finAction ( )
elif rep == " 7 " :
self . selectFilm ( )
elif rep == " 0 " :
self . menu ( )
2018-04-25 21:43:00 +02:00
def finAction ( self ) :
self . menu ( )
pass
2018-03-26 00:49:47 +02:00
def main ( self ) :
self . menu ( )
2018-03-25 21:06:12 +02:00
pass
2018-03-26 00:49:47 +02:00
fi = FilmInterface ( )
2019-03-09 03:43:35 +01:00
try :
fi . main ( )
except EOFError :
print ( " \n Ctrl-D : Sortie du programme " )
pass
2019-03-23 10:52:02 +01:00
except :
fi . main ( )
pass