refacto: format file and clean up files

This commit is contained in:
Alice 2021-11-28 03:00:46 +01:00 committed by cartoonnerie
parent 703b08ad4e
commit 07e2bb4e3e
8 changed files with 46 additions and 305 deletions

Binary file not shown.

View file

@ -1,266 +0,0 @@
# -*- coding: utf-8 -*-
"""
Created on Mon Aug 21 13:54:39 2017
@author: alice
"""
import shelve
import pickle
class film():
def __init__(self, _i, _idN, _date, _nom, _acteurs, _realisateur, _duree, _synopsis, _pays, _annee, _youtube, _couleur):
"""ceci est une aide"""
self.i = _i
self.idN = _idN
self.date = _date
self.nom = _nom
self.acteurs = _acteurs
self.realisateur = _realisateur
self.duree = _duree
self.synopsis = _synopsis
self.pays = _pays
self.annee = _annee
self.youtube = _youtube
self.couleur = _couleur
self.formatCopie = "35mm"
self.langST = "VOSTFR"
self.image = ""
# def __init__(self, dic):
# """ceci est une aide"""
# self.i = dic['id']
# self.idN = dic['idN']
# self.date = dic['date']
# self.nom =dic['nom']
# self.acteurs = dic['acteurs']
# self.realisateur = dic['realisateur']
# self.duree =dic['duree']
# self.synopsis = dic['synopsis']
# self.pays = dic['pays']
# self.annee = dic['annee']
# self.youtube = dic['youtube']
# self.couleur = dic['couleur']
# self.formatCopie = dic['formatCopie']
# self.langST = dic['langST']
def blog(self):
res = u'<div class="entry-trailer"><iframe src="'
res += self.youtube
res += u'" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div><br />'
res += u'<!-- Commentaire pertinent quelconque vis-à-vis du film --> <div class="entry-mainblock"> \
<div class="entry-separator"><a href="http://www.cineclub.ens.fr/wp-content/uploads/2017/08/toujoursReveGangster.jpg"><img class="alignnone wp-image-1873 size-medium" src="http://www.cineclub.ens.fr/wp-content/uploads/2017/08/toujoursReveGangster-300x300.jpg" alt="" width="300" height="300" /></a></div> \
<div class="entry-text-info"><b> Durée </b>:'
res += self.duree
if self.couleur:
res += u'<br /><b>Couleur</b>'
else:
res += u'<br /><b>Noir et blanc</b>'
res += u'<br /><b>Pays :</b>' + self.pays
res += u'<br /><b>' + self.formatCopie + ' . ' + self.langST +'</b>'
res += u'<br /><b>Année :</b>' + str(self.annee)
res += u'<br /><b>Avec :</b>' + strListe(self.acteurs)
res += u'<br /><div class="entry-text-info"><strong>Synopsis</strong> : ' + self.synopsis + '</div>'
res += u"<br /></div>"
res += u"Comme d'habitude, l'entrée coûte 4 euros, 3 pour les membres du COF et vous avez la possibilité d'acheter des cartes de 10 places pour respectivement 30 et 20 euros. L'entrée est gratuite pour les étudiant.e.s invité.e.s."
res += u'<div class="entry-resume"> Et pour résumer : <div class="resume-bloc"><span class="resume-date">Rendez-vous le ' + self.date
res += u', 20h30</span><br /><span class="resume-place">en salle Dussane, au 45 rue ' + "d'Ulm</span><br />" + '<span class="resume-see">pour voir et revoir</span> <br /><span class="resume-title">'
res += self.nom + u'</span><br /><span class="resume-director"> de ' + self.realisateur
res += u"</span><br /></div></div><!-- Balise de commentaire à retirer lors de l'insertion de l'analyse" + u'<div class="entry-analyse">'
res += u"<h2>Proposition d'analyse</h2>Bientôt…</div>-->"
return res
def calendrier(self):
res = '<!-- Film #' + str(self.i) + ' --> \n \n <div class="entry-mainblock"> <div class="entry-separator">'
res += '<img class="entry-poster" src="http://www.cof.ens.fr/cineclub/blogImages/2016-2017/affiche-1-thumbnail200.jpg" alt="" /></div>'
res += '<div class="entry-text-info"><br /><br /><b>' + self.date +', 20h30 <br /><i>'
res += self.nom + '</i> de ' + self.realisateur +' (' +str(self.annee) + ')</b><br /><br />'
res += self.duree + ' . '
if self.couleur:
res += "Couleurs"
else:
res += "Noir & Blanc"
res += " . " + self.pays + ". <br /> Avec : " + strListe(self.acteurs) + ".<br/>"
res += self.langST + ' . ' + self.formatCopie + ".<br/><br/>"
res += '<span class="entry-synopsis">' + self.synopsis + '</span><br/><br/></div>'
res += '</div><br/><a style="float: right;" href="#haut">Retour en haut de page</a>'
res += "<br/>\n \n<!-- END OF POST --><br/>"
return res
def bocal(self):
res = "\centerline{\date{" + self.date + ", 20h30}} \n"
res += "\centerline{Salle Dussane} \n"
res += "\centerline{\emph{\Large " + self.nom + "}} \n"
res += "\centerline{" + self.realisateur + " (" + str(self.annee) + ") } \n"
res += "\medskip \n"
if len(self.acteurs) == 1 :
res += "\centerline{" + self.acteurs[0] + "}\n"
if len(self.acteurs) >= 2 :
res += "\centerline{" + self.acteurs[0]+ ', ' + self.acteurs[1] + "}\n"
if len(self.acteurs) > 2 :
res += "\centerline{" + self.acteurs[2] + "}\n"
res += "\medskip \n"
res += "\centerline{" + self.langST + ' . ' + self.formatCopie + "}\n"
res += "\medskip \n"
res += "\centerline{\\textit{" + self.duree + "}}\n \n"
res += "\medskip\n"
res += "\medskip \n \centerline{4~€~/~3~€ COF} \n \medskip \n \n "
res += "\centerline{\includegraphics[width=5cm]{cine}}\n \n"
res += "\medskip\n"
res += self.synopsis
print(res)
def mail(self):
res = '<html> \n \t <head> \n \n <meta http-equiv="content-type" content="text/html; charset=utf-8"> \n \t \t'
res += '<style type="text/css">p { margin: 0; }</style> \n \t \t'
res += '<title>[cine-info] ' + self.nom + ' de ' + self.realisateur + ' (' + self.date + ', 20h30)</title> \n \t'
res += '</head> \n \t <body text="#000000" bgcolor="#FFFFFF"> \n \t \t <div style="font-family: arial,helvetica,sans-serif; font-size: 12pt; color: #000000">'
res += '\n \t \t \t<style>p { margin: 0; }</style> \n \t\t\t'
res += '<div style="font-family: arial,helvetica,sans-serif; font-size: 12pt; color: #000000"> \n <style>p { margin: 0; }</style> \n <div style="font-family: arial,helvetica,sans-serif; font-size: 12pt; color: #000000">'
res += '\n \t\t\t\t\t <style>p { margin: 0; }</style> \n\t\t\t\t <div style="font-family: arial,helvetica,sans-serif;font-size: 12pt; color: #000000"> \n'
res += '<p>Bonjour à toutes et à tous,</p> \n <p><i>Ce mail contient du HTML. Si vous ne pouvez pas le lire, allez sur notre site : <a class="moz-txt-link-freetext" href="http://www.cineclub.ens.fr" target="_blank">http://www.cineclub.ens.fr</a></i></p>'
res += '\n <p style="text-align:justify">Retrouvez-nous en salle Dussane <b>' + self.date + ", 20h30</b> ! Comme d'habitude, l'entrée coûte <b>4€, 3€</b> pour les membres du COF et vous avez la possibilité d'acheter des cartes de 10 places pour respectivement 30€ et 20€. L'entrée est gratuite pour les étudiants invités.<br>"
res += '</p> <div style="border:grey 1px solid; padding:5px; text-align:justify;">'
res += '<center><b><i>'+ self.nom +'</i></b> \n de <b>' + self.realisateur + '<br>\n </b></center>\n <br>'
res += '<b>Durée </b>: '+ self.duree + '.<br> \n'
if self.couleur:
res +'<b>Couleur</b>. <br> \n'
else:
res += '<b>Noir et blanc</b> <br> \n'
res += '<b>Pays :</b> ' + self.pays + '<br> \n'
res += '<b>Format de la copie :</b> ' + self.formatCopie + '<br> \n'
res += '<b>' + self.langST + '</b> <br> \n'
res += '<b>Année :</b> ' + str(self.annee) + '<br> \n'
res += '<b>Avec :</b> ' + strListe(self.acteurs) + '...<br> \n'
res += '<b>Rapide synopsis :</b> ' + self.synopsis + '<br> <br>'
res += '<span class="entry-synopsis"> </span> <br> <center><a href="http://cineclub.ens.fr" title="Plus d\'informations (bande-annonce, synopsis, etc.) sur notre blog !" target="_blank">Plus d\'informations (bande-annonce, etc.) sur notre blog !</a></center>'
res += '</div> <p style="text-align:justify">Vous ne pouvez pas venir à cette séance mais vous aimeriez aller au ciné-club une prochaine fois ?<br>'
res += '<a href="http://cineclub.ens.fr/calendrier" title="Découvrez le calendrier de nos prochaines séances." target="_blank">Découvrez le calendrier de nos prochaines séances.</a></p>'
res += '<p>À très bientôt en salle Dussane !<br> L\'équipe du ciné-club<br> <a href="http://cineclub.ens.fr" title="http://cineclub.ens.fr" target="_blank">http://cineclub.ens.fr</a></p>'
res += '<p>Toutes les séances du ciné-club se déroulent en salle Dussane, au 45 rue d\'Ulm, Paris. <br> Métro : Luxembourg, Place Monge. Bus: Feuillantine.</p>'
res += '<p style="text-align:center"><small>Vous ne souhaitez plus recevoir notre newsletter ? <a href="http://www.cineclub.ens.fr/newsletter-desinscription/" target="_blank"> Désinscrivez-vous</a></small></p>'
res += '</div> </div> </body> </html>'
return res
def strListe(liste):
res = ""
for l in liste[:-1]:
res += l +', '
if liste != []:
res += liste[-1]
return res
i = 38
def nouveauFilmIn(dicFilms, index = {}):
if index == {}:
with open('index', 'rb') as index:
pickler = pickle.Unpickler(index)
dicIndex = pickler.load()
i = pickler.load() + 1
ind = False
idN = input("identifiant du film ? ")
date = input("date de la séance (format mardi JJ MOIS AAAA) ")
nom = input("titre ? ")
acteurs = eval(input("acteurs (format [acteur1, acteur2, ..]) ? "))
realisateur = input("realisateur ? ")
duree = input("durée du film ? ")
synopsis = input("Donnez ici un synopsis rapide du film ")
pays = input("pays de diffusion du film ? ")
annee = input("année de sortie du film (format AAAA) ? ")
youtube = input("adresse youtube de la bande-annonce ? ")
couleur = eval(input("le film est-il en couleur (format True/False) ? "))
seance = film(i, idN, date, nom, acteurs, realisateur, duree, synopsis, pays, annee, youtube, couleur)
dicIndex[i] = idN
dicFilms[idN] = seance
if not(ind) :
with open('index', 'wb') as index:
pickler = pickle.Pickler(index)
pickler.dump(dicIndex)
pickler.dump(i)
return seance
def updateFilmIn(dicFilms, key, index = {}):
if index == {}:
with open('index', 'rb') as index:
pickler = pickle.Unpickler(index)
dicIndex = pickler.load()
ind = False
i = dicFilms[key].i
idN = input("identifiant du film ? ")
date = input("date de la séance (format mardi JJ MOIS AAAA) ")
nom = input("titre ? ")
acteurs = eval(input("acteurs (format [acteur1, acteur2, ..]) ? "))
realisateur = input("realisateur ? ")
duree = input("durée du film ? ")
synopsis = input("Donnez ici un synopsis rapide du film ")
pays = input("pays de diffusion du film ? ")
annee = input("année de sortie du film (format AAAA) ? ")
youtube = input("adresse youtube de la bande-annonce ? ")
couleur = eval(input("le film est-il en couleur (format True/False) ? "))
seance = film(i, idN, date, nom, acteurs, realisateur, duree, synopsis, pays, annee, youtube, couleur)
dicIndex[i] = key
dicFilms[idN] = seance
dicFilms.remove(key)
if not(ind) :
with open('index', 'wb') as index:
pickler = pickle.Pickler(index)
pickler.dump(dicIndex)
pickler.dump(i)
return seance
def nouveauFilm():
with shelve.open('filmsShelve') as db:
seance = nouveauFilmIn(db)
return seance
def updateFilm(key):
with shelve.open('filmsShelve') as db:
seance = updateFilmIn(db, key)
return seance
def getIndex():
with open('index', 'rb') as index:
pickler = pickle.Unpickler(index)
dicIndex = pickler.load()
return dicIndex
def getFilms():
res = {}
with shelve.open('filmsShelve') as db:
for f in db:
res[f] = updateFilm(db[f])
return res
def setFilms(dico):
with shelve.open('filmsShelve', writeback = True) as db:
for f in dico:
db[f] = updateFilm(dico[f])
def correctFilm(a):
res = film(a.i, a.idN, a.date, a.nom, a.acteurs, a.realisateur, a.duree, a.synopsis, a.pays, a.annee, a.youtube, a.couleur)
return res
def correctShelf():
with shelve.open('filmsShelve') as db:
for f in db:
db[f] = correctFilm(db[f])
def liste(db):
lis = [(db[k].i, k) for k in db.keys()]
lis = sorted(lis)
for tup in lis:
k = tup[1]
print(k, ' : ', db[k].i, db[k].nom)
return None
#print(enqSex.mail())

BIN
filmsCode

Binary file not shown.

Binary file not shown.

BIN
index

Binary file not shown.

View file

@ -6,25 +6,26 @@ 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)
# Enhancements :
# * utiliser un dictionnaire pour les menus, afin 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
import readline
DEBUG = True
class FilmInterface():
def __init__(self):
self.filmCharge = None
def menu(self):
self.filmEnCours()
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""")
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:
@ -47,20 +48,20 @@ class FilmInterface():
self.menu()
pass
def filmEnCours(self):
def filmEnCours(self):
if self.filmCharge:
print("\nLe film couramment chargé est", self.filmCharge.nom, "\n")
def initBDD(self):
fichier = open("dumpFile","r")
fichier = open("../db/dumpFile", "r")
instruction = fichier.read()
fichier.close()
conn = sqlite3.connect('baseFilms.db')
conn = sqlite3.connect('../db/baseFilms.db')
c = conn.cursor()
c.executescript(instruction)
conn.commit()
conn.close()
conn.close()
def selectFilm(self):
f.printAll()
@ -80,7 +81,8 @@ class FilmInterface():
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"))
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:
@ -93,32 +95,33 @@ class FilmInterface():
def corrigerFilm(self):
if self.filmCharge:
#recuperer les cles possibles
conn = sqlite3.connect("baseFilms.db")
# recuperer les cles possibles
conn = sqlite3.connect("../db/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)
raise (e)
finally:
conn.close()
#faire la modification
# faire la modification
if keys:
keys += ['acteurs']
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 )
nomAttr = input("Choisissez l'attribut que vous souhaitez modifier chez %s \n" % self.filmCharge.nom)
if nomAttr == "acteurs":
print("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)))
newValue = f.makeListActors()
print(
"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)))
newValue = f.makeListActors()
elif nomAttr == "durée":
self.filmCharge.__setattr__(nomAttr, f.input_duree())
elif nomAttr == "couleur":
@ -126,7 +129,9 @@ class FilmInterface():
elif nomAttr == "date":
self.filmCharge.__setattr__(nomAttr, f.input_date())
else:
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)))
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":
iStill = self.filmCharge.__getattr__(nomAttr)
@ -138,21 +143,22 @@ class FilmInterface():
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)
# 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")
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()
@ -175,7 +181,7 @@ class FilmInterface():
self.selectFilm()
elif rep == "0":
self.menu()
def finAction(self):
self.menu()
pass
@ -184,12 +190,13 @@ class FilmInterface():
self.menu()
pass
fi = FilmInterface()
try:
fi.main()
except EOFError:
print("\nCtrl-D : Sortie du programme")
pass
except:
fi.main()
pass
#except:
# fi.main()
# pass

View file

@ -31,7 +31,7 @@ class filmSQ():
if type(dic) == type(""):
self.idN = dic
conn = sqlite3.connect("baseFilms.db")
conn = sqlite3.connect("../db/baseFilms.db")
conn.row_factory = sqlite3.Row
c = conn.cursor()
@ -52,7 +52,7 @@ class filmSQ():
elif type(dic) == type(1):
self.i = dic
conn = sqlite3.connect("baseFilms.db")
conn = sqlite3.connect("../db/baseFilms.db")
conn.row_factory = sqlite3.Row
c = conn.cursor()
@ -70,7 +70,7 @@ class filmSQ():
conn.close()
else:
conn = sqlite3.connect("baseFilms.db")
conn = sqlite3.connect("../db/baseFilms.db")
conn.row_factory = sqlite3.Row
c = conn.cursor()
@ -95,7 +95,7 @@ class filmSQ():
object.__setattr__(self, 'idN', val_attr)
else:
try:
conn = sqlite3.connect("baseFilms.db")
conn = sqlite3.connect("../db/baseFilms.db")
conn.row_factory = sqlite3.Row
c = conn.cursor()
@ -113,7 +113,7 @@ class filmSQ():
conn.close()
def __getattr__(self, nom):
conn = sqlite3.connect("baseFilms.db", detect_types=sqlite3.PARSE_DECLTYPES)
conn = sqlite3.connect("../db/baseFilms.db", detect_types=sqlite3.PARSE_DECLTYPES)
conn.row_factory = sqlite3.Row
c = conn.cursor()
try:
@ -137,7 +137,7 @@ class filmSQ():
def __str__(self):
try:
conn = sqlite3.connect("baseFilms.db")
conn = sqlite3.connect("../db/baseFilms.db")
#conn.row_factory = sqlite3.Row
c = conn.cursor()
c.execute('SELECT idN, nom, date FROM films WHERE idN = ?', (self.idN))
@ -296,7 +296,7 @@ class filmSQ():
def maxId():
try:
conn = sqlite3.connect("baseFilms.db")
conn = sqlite3.connect("../db/baseFilms.db")
conn.row_factory = sqlite3.Row
c = conn.cursor()
@ -312,7 +312,7 @@ class filmSQ():
def printAll():
try:
conn = sqlite3.connect("baseFilms.db")
conn = sqlite3.connect("../db/baseFilms.db")
conn.row_factory = sqlite3.Row
c = conn.cursor()