débuggage et tests
This commit is contained in:
parent
46216b6507
commit
fdd0df21db
5 changed files with 102 additions and 80 deletions
3
TODO.md
3
TODO.md
|
@ -1,3 +1,2 @@
|
||||||
* mise en forme date
|
* débug -> bien avancé
|
||||||
* débug
|
|
||||||
* remplissage
|
* remplissage
|
||||||
|
|
Binary file not shown.
BIN
baseFilms.db
BIN
baseFilms.db
Binary file not shown.
|
@ -8,6 +8,8 @@ Created on Thu Feb 1 22:49:56 2018
|
||||||
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
from datetime import date
|
from datetime import date
|
||||||
|
import locale
|
||||||
|
locale.setlocale(locale.LC_ALL, 'fr_FR.utf8')
|
||||||
|
|
||||||
"""TODO :
|
"""TODO :
|
||||||
gérer liste acteurs : une autre table (id, idFilm, String acteur)
|
gérer liste acteurs : une autre table (id, idFilm, String acteur)
|
||||||
|
@ -16,14 +18,11 @@ from datetime import date
|
||||||
|
|
||||||
class filmSQ():
|
class filmSQ():
|
||||||
|
|
||||||
def __init__(self, idN):
|
|
||||||
"""ceci est une aide"""
|
|
||||||
self.idN = idN
|
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, dic):
|
def __init__(self, dic):
|
||||||
"""ceci est une aide"""
|
"""ceci est une aide"""
|
||||||
|
if type(dic) == type(""):
|
||||||
|
self.idN = dic
|
||||||
|
else:
|
||||||
conn = sqlite3.connect("baseFilms.db")
|
conn = sqlite3.connect("baseFilms.db")
|
||||||
conn.row_factory = sqlite3.Row
|
conn.row_factory = sqlite3.Row
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
|
@ -31,20 +30,23 @@ class filmSQ():
|
||||||
try:
|
try:
|
||||||
c.execute('INSERT INTO films VALUES (:i, :idN, :date, :nom, :realisateur, :duree, :synopsis, :pays, :annee, :youtube, :couleur, :image, :formatCopie, :langST)', dic)
|
c.execute('INSERT INTO films VALUES (:i, :idN, :date, :nom, :realisateur, :duree, :synopsis, :pays, :annee, :youtube, :couleur, :image, :formatCopie, :langST)', dic)
|
||||||
|
|
||||||
acteursToSq = [{'idFilm' : self.i, 'acteur' : a} for a in dic['acteurs']]
|
acteursToSq = [{'idFilm' : dic['i'], 'acteur' : a} for a in dic['acteurs']]
|
||||||
c.executemany('INSERT INTO acteurs VALUES (NULL, :idFilm, :acteur)', acteursToSq)
|
c.executemany('INSERT INTO acteurs VALUES (NULL, :idFilm, :acteur)', acteursToSq)
|
||||||
|
|
||||||
conn.commit()
|
conn.commit()
|
||||||
|
except Exception as e:
|
||||||
|
conn.rollback()
|
||||||
|
raise e
|
||||||
finally:
|
finally:
|
||||||
c.close()
|
conn.close()
|
||||||
#id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT [PRIMARY KEY]
|
#id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT [PRIMARY KEY]
|
||||||
|
|
||||||
self.idN = dic['idN']
|
self.__setattr__('idN', dic['idN'])
|
||||||
|
|
||||||
|
|
||||||
def __setattr__(self, nom_attr, val_attr):
|
def __setattr__(self, nom_attr, val_attr):
|
||||||
if nom_attr == 'idN':
|
if nom_attr == 'idN':
|
||||||
res= object.__setattr__(self, 'idN', val_attr)
|
object.__setattr__(self, 'idN', val_attr)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
conn = sqlite3.connect("baseFilms.db")
|
conn = sqlite3.connect("baseFilms.db")
|
||||||
|
@ -56,28 +58,39 @@ class filmSQ():
|
||||||
acteursToSq = [{'idFilm' : self.i, 'acteur' : a} for a in val_attr]
|
acteursToSq = [{'idFilm' : self.i, 'acteur' : a} for a in val_attr]
|
||||||
c.executemany('INSERT INTO acteurs VALUES (NULL, :idFilm, :acteur)', acteursToSq)
|
c.executemany('INSERT INTO acteurs VALUES (NULL, :idFilm, :acteur)', acteursToSq)
|
||||||
else:
|
else:
|
||||||
c.execute('UPDATE films SET ? = ? WHERE idN = ?', (nom_attr, val_attr, self.idN))
|
c.execute('UPDATE films SET %s = ? WHERE idN = ?' % nom_attr, (val_attr, self.idN))
|
||||||
|
conn.commit()
|
||||||
|
except Exception as e:
|
||||||
|
conn.rollback()
|
||||||
|
raise e
|
||||||
finally:
|
finally:
|
||||||
c.commit()
|
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def __getattr__(self, nom):
|
def __getattr__(self, nom):
|
||||||
try:
|
conn = sqlite3.connect("baseFilms.db", detect_types=sqlite3.PARSE_DECLTYPES)
|
||||||
conn = sqlite3.connect("baseFilms.db")
|
#conn.row_factory = sqlite3.Row
|
||||||
conn.row_factory = sqlite3.Row
|
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
|
try:
|
||||||
if nom == 'acteurs':
|
if nom == 'acteurs':
|
||||||
c.execute('SELECT :acteur FROM acteurs WHERE idFilms=?', (self.i))
|
c.execute("""SELECT name FROM acteurs WHERE iFilm=?""", (self.i,))
|
||||||
r = c.fetchall()
|
r = c.fetchall()
|
||||||
res = [a[0] for a in r]
|
res = [a[0] for a in r]
|
||||||
else:
|
else:
|
||||||
c.execute('SELECT :nom_attr FROM films WHERE idN=:idN', {"idN":self.idN, "nom_attr":nom})
|
c.execute("""SELECT %s FROM films WHERE idN=:idN""" % nom, {"idN":self.idN})
|
||||||
r = c.fetchone()
|
r = c.fetchone()
|
||||||
res = r[0]
|
res = r[0]
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
conn.rollback()
|
||||||
|
raise e
|
||||||
finally:
|
finally:
|
||||||
c.commit()
|
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
@ -85,11 +98,15 @@ class filmSQ():
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
try:
|
try:
|
||||||
conn = sqlite3.connect("baseFilms.db")
|
conn = sqlite3.connect("baseFilms.db")
|
||||||
conn.row_factory = sqlite3.Row
|
#conn.row_factory = sqlite3.Row
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
c.execute('SELECT (?,?,?) FROM films WHERE idN = ?', ('idN', 'nom', 'date', self.idN))
|
c.execute('SELECT idN, nom, date FROM films WHERE idN = ?', (self.idN))
|
||||||
r = c.fetchone()
|
r = c.fetchone()
|
||||||
s = r[0] + ' : ' + r[1] + ' le ' + r[2]
|
s = r[0] + ' : ' + r[1] + ' le ' + r[2]
|
||||||
|
conn.commit()
|
||||||
|
except Exception as e:
|
||||||
|
conn.rollback()
|
||||||
|
raise e
|
||||||
finally:
|
finally:
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
@ -101,9 +118,9 @@ class filmSQ():
|
||||||
res += self.youtube
|
res += self.youtube
|
||||||
res += u'" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div><br />'
|
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"> \
|
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-separator"><img class="alignnone wp-image-1873 size-medium" src="'+self.image+'" alt="" width="300" height="300" /></a></div> \
|
||||||
<div class="entry-text-info"><b> Durée </b>:'
|
<div class="entry-text-info"><b> Durée </b>:'
|
||||||
res += self.duree
|
res += str(self.duree)
|
||||||
if self.couleur:
|
if self.couleur:
|
||||||
res += u'<br /><b>Couleur</b>'
|
res += u'<br /><b>Couleur</b>'
|
||||||
else:
|
else:
|
||||||
|
@ -116,7 +133,7 @@ class filmSQ():
|
||||||
res += u'<br /><div class="entry-text-info"><strong>Synopsis</strong> : ' + self.synopsis + '</div>'
|
res += u'<br /><div class="entry-text-info"><strong>Synopsis</strong> : ' + self.synopsis + '</div>'
|
||||||
res += u"<br /></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"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'<div class="entry-resume"> Et pour résumer : <div class="resume-bloc"><span class="resume-date">Rendez-vous le ' + self.date.strftime("mardi %d %B %Y")
|
||||||
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 += 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 += 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"</span><br /></div></div><!-- Balise de commentaire à retirer lors de l'insertion de l'analyse" + u'<div class="entry-analyse">'
|
||||||
|
@ -125,10 +142,10 @@ class filmSQ():
|
||||||
|
|
||||||
def calendrier(self):
|
def calendrier(self):
|
||||||
res = '<!-- Film #' + str(self.i) + ' --> \n \n <div class="entry-mainblock"> <div class="entry-separator">'
|
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 += '<img class="entry-poster" src="'+self.date.strftime("mardi %d %B %Y")+'" alt="" /></div>'
|
||||||
res += '<div class="entry-text-info"><br /><br /><b>' + self.date +', 20h30 <br /><i>'
|
res += '<div class="entry-text-info"><br /><br /><b>' + self.date.strftime("mardi %d %B %Y") +', 20h30 <br /><i>'
|
||||||
res += self.nom + '</i> de ' + self.realisateur +' (' +str(self.annee) + ')</b><br /><br />'
|
res += self.nom + '</i> de ' + self.realisateur +' (' +str(self.annee) + ')</b><br /><br />'
|
||||||
res += self.duree + ' . '
|
res += str(self.duree) + ' . '
|
||||||
if self.couleur:
|
if self.couleur:
|
||||||
res += "Couleurs"
|
res += "Couleurs"
|
||||||
else:
|
else:
|
||||||
|
@ -141,7 +158,7 @@ class filmSQ():
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def bocal(self):
|
def bocal(self):
|
||||||
res = "\centerline{\date{" + self.date + ", 20h30}} \n"
|
res = "\centerline{\date{" + self.date.strftime("mardi %d %B %Y") + ", 20h30}} \n"
|
||||||
res += "\centerline{Salle Dussane} \n"
|
res += "\centerline{Salle Dussane} \n"
|
||||||
res += "\centerline{\emph{\Large " + self.nom + "}} \n"
|
res += "\centerline{\emph{\Large " + self.nom + "}} \n"
|
||||||
res += "\centerline{" + self.realisateur + " (" + str(self.annee) + ") } \n"
|
res += "\centerline{" + self.realisateur + " (" + str(self.annee) + ") } \n"
|
||||||
|
@ -154,7 +171,7 @@ class filmSQ():
|
||||||
res += "\centerline{" + self.acteurs[2] + "}\n"
|
res += "\centerline{" + self.acteurs[2] + "}\n"
|
||||||
res += "\medskip \n"
|
res += "\medskip \n"
|
||||||
res += "\centerline{" + self.langST + ' . ' + self.formatCopie + "}"
|
res += "\centerline{" + self.langST + ' . ' + self.formatCopie + "}"
|
||||||
res += "\centerline{\\textit{" + self.duree + "}}\n \n"
|
res += "\centerline{\\textit{" + str(self.duree) + "}}\n \n"
|
||||||
res += "\medskip\n"
|
res += "\medskip\n"
|
||||||
res += "\medskip \n \centerline{4~€~/~3~€ COF} \n \medskip \n \n "
|
res += "\medskip \n \centerline{4~€~/~3~€ COF} \n \medskip \n \n "
|
||||||
|
|
||||||
|
@ -166,16 +183,16 @@ class filmSQ():
|
||||||
def mail(self):
|
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 = '<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 += '<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 += '<title>[cine-info] ' + self.nom + ' de ' + self.realisateur + ' (' + self.date.strftime("mardi %d %B %Y") + ', 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 += '</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 += '\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 += '<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 += '\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 += '<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 += '\n <p style="text-align:justify">Retrouvez-nous en salle Dussane <b>' + self.date.strftime("mardi %d %B %Y") + ", 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 += '</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 += '<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'
|
res += '<b>Durée </b>: '+ str(self.duree) + '.<br> \n'
|
||||||
if self.couleur:
|
if self.couleur:
|
||||||
res +'<b>Couleur</b>. <br> \n'
|
res +'<b>Couleur</b>. <br> \n'
|
||||||
else:
|
else:
|
||||||
|
@ -195,7 +212,7 @@ class filmSQ():
|
||||||
res += '</div> </div> </body> </html>'
|
res += '</div> </div> </body> </html>'
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def maxId():
|
def maxId():
|
||||||
try:
|
try:
|
||||||
conn = sqlite3.connect("baseFilms.db")
|
conn = sqlite3.connect("baseFilms.db")
|
||||||
|
|
||||||
|
@ -203,21 +220,27 @@ class filmSQ():
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
c.execute('SELECT MAX(i) FROM films')
|
c.execute('SELECT MAX(i) FROM films')
|
||||||
r = c.fetchone()
|
r = c.fetchone()
|
||||||
|
except Exception as e:
|
||||||
|
conn.rollback()
|
||||||
|
raise e
|
||||||
finally:
|
finally:
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
return r[0]
|
return r[0]
|
||||||
|
|
||||||
def printAll():
|
def printAll():
|
||||||
try:
|
try:
|
||||||
conn = sqlite3.connect("baseFilms.db")
|
conn = sqlite3.connect("baseFilms.db")
|
||||||
|
|
||||||
conn.row_factory = sqlite3.Row
|
conn.row_factory = sqlite3.Row
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
c.execute('SELECT idN FROM films ORDER_BY i')
|
c.execute('SELECT idN, nom, date FROM films ORDER BY i DESC')
|
||||||
r = c.fetchall()
|
r = c.fetchall()
|
||||||
for movie in r:
|
for movie in r:
|
||||||
print(r[0] + ' : ' + r[1] + ' le ' + r[2])
|
print(movie[0], ' : ', movie[1], ' le ', movie[2])
|
||||||
|
except Exception as e:
|
||||||
|
conn.rollback()
|
||||||
|
raise e
|
||||||
finally:
|
finally:
|
||||||
conn.close()
|
conn.close()
|
||||||
pass
|
pass
|
||||||
|
|
Loading…
Reference in a new issue