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
"""
2021-11-28 03:00:46 +01:00
# Enhancements :
# * utiliser un dictionnaire pour les menus, afin d'avoir un menu de fond (quitter, corriger etc)
2018-03-26 00:49:47 +02:00
# * mettre en place une file d'instruction pour anticiper
# * vérifier les eval et les types donnés
2021-11-28 03:09:29 +01:00
from genCom import GenerateurComm
2018-03-25 19:17:48 +02:00
from cineclubBlogSQ import filmSQ as f
2021-11-28 03:07:41 +01:00
from config import dump_path , db_path
2018-03-26 00:49:47 +02:00
import sqlite3
DEBUG = True
2018-03-25 19:17:48 +02:00
2021-11-28 03:00:46 +01:00
2018-03-26 00:49:47 +02:00
class FilmInterface ( ) :
2021-11-28 03:00:46 +01:00
2018-03-26 00:49:47 +02:00
def __init__ ( self ) :
self . filmCharge = None
2021-11-28 03:09:29 +01:00
self . generateur_com = GenerateurComm ( )
2018-03-26 00:49:47 +02:00
def menu ( self ) :
self . filmEnCours ( )
2021-11-28 03:00:46 +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 """ )
2019-03-23 10:52:02 +01:00
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
2021-11-28 03:00:46 +01:00
def filmEnCours ( self ) :
2018-03-26 00:49:47 +02:00
if self . filmCharge :
print ( " \n Le film couramment chargé est " , self . filmCharge . nom , " \n " )
2021-11-28 03:00:46 +01:00
2019-03-09 03:43:35 +01:00
def initBDD ( self ) :
2021-11-28 03:07:41 +01:00
fichier = open ( dump_path , " r " )
2019-03-09 03:43:35 +01:00
instruction = fichier . read ( )
fichier . close ( )
2021-11-28 03:07:41 +01:00
conn = sqlite3 . connect ( db_path )
2019-03-09 03:43:35 +01:00
c = conn . cursor ( )
c . executescript ( instruction )
conn . commit ( )
2021-11-28 03:00:46 +01:00
conn . close ( )
2018-03-26 00:49:47 +02:00
def selectFilm ( self ) :
2022-03-03 18:03:17 +01:00
f . list_all ( )
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 ) :
2022-03-03 18:03:17 +01:00
self . filmCharge = f . new_film ( )
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 " )
2021-11-28 03:00:46 +01:00
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 " ) )
2018-03-26 00:49:47 +02:00
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 :
2021-11-28 03:00:46 +01:00
# recuperer les cles possibles
conn = sqlite3 . connect ( " ../db/baseFilms.db " )
2018-03-26 00:49:47 +02:00
conn . row_factory = sqlite3 . Row
c = conn . cursor ( )
try :
c . execute ( " SELECT * FROM films " )
keys = [ a [ 0 ] for a in c . description ]
2021-11-28 03:00:46 +01:00
2018-03-26 00:49:47 +02:00
except Exception as e :
conn . rollback ( )
if DEBUG :
2021-11-28 03:00:46 +01:00
raise ( e )
2018-03-26 00:49:47 +02:00
finally :
conn . close ( )
2021-11-28 03:00:46 +01:00
# faire la modification
2018-03-26 00:49:47 +02:00
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 )
2021-11-28 03:00:46 +01:00
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 " :
2021-11-28 03:00:46 +01:00
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 ) ) )
2022-03-03 18:03:17 +01:00
newValue = f . make_actors_list ( )
elif nomAttr == " duree " :
newValue = f . input_duration ( )
2019-03-23 10:52:02 +01:00
elif nomAttr == " couleur " :
2022-03-03 18:02:53 +01:00
newValue = f . input_color ( )
2019-03-23 10:52:02 +01:00
elif nomAttr == " date " :
2022-03-03 18:02:53 +01:00
newValue = f . input_date ( )
2019-03-09 03:43:35 +01:00
else :
2021-11-28 03:00:46 +01:00
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 ) ) )
2019-03-09 03:43:35 +01:00
2018-03-26 00:49:47 +02:00
if newValue != " -1 " :
2019-03-09 03:43:35 +01:00
if nomAttr == " idN " :
2022-03-03 18:02:53 +01:00
iStill = self . filmCharge . __getattr__ ( nomAttr )
self . filmCharge . __setattr__ ( nomAttr , newValue )
2019-03-09 03:43:35 +01:00
self . filmCharge = f ( iStill )
2022-03-03 18:02:53 +01:00
else :
self . filmCharge . __setattr__ ( nomAttr , newValue )
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 " )
2021-11-28 03:00:46 +01:00
# 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 )
2018-03-26 00:49:47 +02:00
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 ( )
2021-11-28 03:00:46 +01:00
2018-03-26 00:49:47 +02:00
def communication ( self ) :
self . filmEnCours ( )
2021-11-28 03:00:46 +01:00
rep = input (
2022-03-12 17:36:30 +01:00
" 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 texte ics du film courant \n 7: le calendrier des films à partir du film courant \n 8: changer le film sélectionné \n 0: revenir au menu principal \n " )
2018-03-26 00:49:47 +02:00
if rep == " 1 " :
2021-11-28 03:09:29 +01:00
print ( self . generateur_com . bocal ( self . filmCharge ) )
2018-03-26 00:49:47 +02:00
self . finAction ( )
elif rep == " 2 " :
2021-11-28 03:09:29 +01:00
print ( self . generateur_com . blog ( self . filmCharge ) )
2018-03-26 00:49:47 +02:00
self . finAction ( )
elif rep == " 3 " :
2021-11-28 03:09:29 +01:00
print ( self . generateur_com . calendrier ( self . filmCharge ) )
2018-03-26 00:49:47 +02:00
self . finAction ( )
elif rep == " 4 " :
2021-11-28 03:09:29 +01:00
print ( self . generateur_com . facebook ( self . filmCharge ) )
2018-03-26 00:49:47 +02:00
self . finAction ( )
elif rep == " 5 " :
2021-11-28 03:09:29 +01:00
print ( self . generateur_com . mail ( self . filmCharge ) )
2018-03-26 00:49:47 +02:00
self . finAction ( )
elif rep == " 6 " :
2022-03-12 17:36:30 +01:00
print ( self . generateur_com . ics_text ( self . filmCharge ) )
2018-03-26 00:49:47 +02:00
self . finAction ( )
elif rep == " 7 " :
2022-03-12 17:36:30 +01:00
print ( self . generateur_com . allCalendars ( self . filmCharge ) )
self . finAction ( )
elif rep == " 8 " :
2018-03-26 00:49:47 +02:00
self . selectFilm ( )
elif rep == " 0 " :
self . menu ( )
2021-11-28 03:00:46 +01:00
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
2021-11-28 03:00:46 +01:00
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
2021-11-28 03:00:46 +01:00
#except:
# fi.main()
# pass