merge bdd
ajout d'un début d'interface on peut maintenant créer un objet filmSQ à partir de i
This commit is contained in:
commit
900ca78994
5 changed files with 196 additions and 31 deletions
3
TODO.md
3
TODO.md
|
@ -1,3 +1,4 @@
|
||||||
* débug -> bien avancé
|
* débug -> bien avancé
|
||||||
* rendre plus joli
|
* rendre plus joli
|
||||||
* corriger remplissage
|
* corriger remplissage
|
||||||
|
|
||||||
|
|
BIN
baseFilms.db
BIN
baseFilms.db
Binary file not shown.
144
ccInterface.py
Normal file
144
ccInterface.py
Normal file
|
@ -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()
|
|
@ -10,6 +10,7 @@ TODO :
|
||||||
* remplir
|
* remplir
|
||||||
* débug
|
* débug
|
||||||
* documenter
|
* documenter
|
||||||
|
* publication FB
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
|
@ -23,6 +24,24 @@ class filmSQ():
|
||||||
"""ceci est une aide"""
|
"""ceci est une aide"""
|
||||||
if type(dic) == type(""):
|
if type(dic) == type(""):
|
||||||
self.idN = dic
|
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:
|
else:
|
||||||
conn = sqlite3.connect("baseFilms.db")
|
conn = sqlite3.connect("baseFilms.db")
|
||||||
conn.row_factory = sqlite3.Row
|
conn.row_factory = sqlite3.Row
|
||||||
|
@ -245,6 +264,35 @@ class filmSQ():
|
||||||
conn.close()
|
conn.close()
|
||||||
pass
|
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):
|
def strListe(liste):
|
||||||
res = ""
|
res = ""
|
||||||
for l in liste[:-1]:
|
for l in liste[:-1]:
|
||||||
|
@ -252,32 +300,4 @@ def strListe(liste):
|
||||||
if liste != []:
|
if liste != []:
|
||||||
res += liste[-1]
|
res += liste[-1]
|
||||||
return res
|
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
|
|
||||||
|
|
||||||
|
|
|
@ -99,7 +99,7 @@ Avec la caisse et tout, on a 4658,5€
|
||||||
* **13/3** *Le trésor* DVD
|
* **13/3** *Le trésor* DVD
|
||||||
* **20/3** *Barbara* 35
|
* **20/3** *Barbara* 35
|
||||||
|
|
||||||
* **27/2** *Los Olvidados*
|
* **27/3** *Los Olvidados*
|
||||||
* **03/4** *5 obstructions*
|
* **03/4** *5 obstructions*
|
||||||
* **10/4** *semaine arabe*
|
* **10/4** *semaine arabe*
|
||||||
* **17/4** *The saddest music in the world*
|
* **17/4** *The saddest music in the world*
|
||||||
|
@ -110,4 +110,4 @@ Avec la caisse et tout, on a 4658,5€
|
||||||
* **22/5** *Tangerine*
|
* **22/5** *Tangerine*
|
||||||
* **29/5** *On achève bien les chevaux*
|
* **29/5** *On achève bien les chevaux*
|
||||||
* **12/6** *Drôle de danse*
|
* **12/6** *Drôle de danse*
|
||||||
* **26/6** *Songe d'une nuit d'été*
|
* **26/6** *Songe d'une nuit d'été*
|
||||||
|
|
Loading…
Reference in a new issue