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:
Alice 2018-03-26 00:49:47 +02:00
commit 900ca78994
5 changed files with 196 additions and 31 deletions

View file

@ -1,3 +1,4 @@
* débug -> bien avancé
* rendre plus joli
* corriger remplissage

Binary file not shown.

144
ccInterface.py Normal file
View 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()

View file

@ -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,14 +264,6 @@ class filmSQ():
conn.close()
pass
def strListe(liste):
res = ""
for l in liste[:-1]:
res += l +', '
if liste != []:
res += liste[-1]
return res
def newFilm():
"""Interface d'ajout d'un nouveau film"""
dic = {}
@ -281,3 +292,12 @@ def newFilm():
seance = filmSQ(dic)
return seance
def strListe(liste):
res = ""
for l in liste[:-1]:
res += l +', '
if liste != []:
res += liste[-1]
return res

View file

@ -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*