le ciné-club n'a plus lieu les mardi

This commit is contained in:
Ciné-club Ulm 2019-11-21 18:10:15 +00:00
parent 069668e084
commit 394f0e0674

View file

@ -5,7 +5,7 @@ Created on Thu Feb 1 22:49:56 2018
@author: alice @author: alice
TODO : TODO :
* simplifier l'input autant que possible * simplifier l'input autant que possible
* remplir * remplir
* débug * débug
@ -14,7 +14,7 @@ TODO :
""" """
import sqlite3 import sqlite3
import datetime import datetime
from datetime import date from datetime import date
import locale import locale
locale.setlocale(locale.LC_ALL, 'fr_FR.utf8') locale.setlocale(locale.LC_ALL, 'fr_FR.utf8')
@ -25,7 +25,7 @@ locale.setlocale(locale.LC_ALL, 'fr_FR.utf8')
#sqlite3.register_adapter(datetime.date, adapt_datetime) #sqlite3.register_adapter(datetime.date, adapt_datetime)
class filmSQ(): class filmSQ():
def __init__(self, dic): def __init__(self, dic):
"""ceci est une aide""" """ceci est une aide"""
if type(dic) == type(""): if type(dic) == type(""):
@ -41,7 +41,7 @@ class filmSQ():
self.i = r[0] self.i = r[0]
conn.commit() conn.commit()
except Exception as e: except Exception as e:
conn.rollback() conn.rollback()
raise e raise e
@ -73,13 +73,13 @@ class filmSQ():
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()
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' : dic['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: except Exception as e:
conn.rollback() conn.rollback()
@ -87,10 +87,10 @@ class filmSQ():
finally: finally:
conn.close() conn.close()
#id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT [PRIMARY KEY] #id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT [PRIMARY KEY]
self.__setattr__('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':
object.__setattr__(self, 'idN', val_attr) object.__setattr__(self, 'idN', val_attr)
@ -99,7 +99,7 @@ class filmSQ():
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()
if nom_attr == 'acteurs': if nom_attr == 'acteurs':
c.execute("""DELETE FROM acteurs WHERE iFilm =?""", (self.i,)) c.execute("""DELETE FROM acteurs WHERE iFilm =?""", (self.i,))
acteursToSq = [{'iFilm' : self.i, 'acteur' : a} for a in val_attr] acteursToSq = [{'iFilm' : self.i, 'acteur' : a} for a in val_attr]
@ -112,7 +112,7 @@ class filmSQ():
raise e raise e
finally: finally:
conn.close() conn.close()
def __getattr__(self, nom): def __getattr__(self, nom):
conn = sqlite3.connect("baseFilms.db", detect_types=sqlite3.PARSE_DECLTYPES) conn = sqlite3.connect("baseFilms.db", detect_types=sqlite3.PARSE_DECLTYPES)
conn.row_factory = sqlite3.Row conn.row_factory = sqlite3.Row
@ -133,9 +133,9 @@ class filmSQ():
raise e raise e
finally: finally:
conn.close() conn.close()
return res return res
def __str__(self): def __str__(self):
try: try:
conn = sqlite3.connect("baseFilms.db") conn = sqlite3.connect("baseFilms.db")
@ -150,7 +150,7 @@ class filmSQ():
raise e raise e
finally: finally:
conn.close() conn.close()
return s return s
@ -173,17 +173,17 @@ 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.strftime("mardi %d %B %Y") res += u'<div class="entry-resume"> Et pour résumer : <div class="resume-bloc"><span class="resume-date">Rendez-vous le ' + self.date.strftime("%A %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">'
res += u"<h2>Proposition d'analyse</h2>Bientôt…</div>-->" res += u"<h2>Proposition d'analyse</h2>Bientôt…</div>-->"
return res return res
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="alignnone size-full wp-image-1963" src="'+self.image+'" alt="" width="150" height="150"/></div>' res += '<img class="alignnone size-full wp-image-1963" src="'+self.image+'" alt="" width="150" height="150"/></div>'
res += '<div class="entry-text-info"><br /><br /><b>' + self.date.strftime("mardi %d %B %Y") +', 20h30 <br /><i>' res += '<div class="entry-text-info"><br /><br /><b>' + self.date.strftime("%A %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 += str(self.duree) + ' minutes . ' res += str(self.duree) + ' minutes . '
if self.couleur: if self.couleur:
@ -220,9 +220,9 @@ class filmSQ():
finally: finally:
conn.close() conn.close()
return res return res
def bocal(self): def bocal(self):
res = "\centerline{\date{" + self.date.strftime("mardi %d %B %Y") + ", 20h30}} \n" res = "\centerline{\date{" + self.date.strftime("%A %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"
@ -232,11 +232,11 @@ class filmSQ():
if len(self.acteurs) >= 2 : if len(self.acteurs) >= 2 :
res += "\centerline{" + self.acteurs[0]+ ', ' + self.acteurs[1] + "}\n" res += "\centerline{" + self.acteurs[0]+ ', ' + self.acteurs[1] + "}\n"
if len(self.acteurs) > 2 : if len(self.acteurs) > 2 :
res += "\centerline{" + self.acteurs[2] + "}\n" res += "\centerline{" + self.acteurs[2] + "}\n"
res += "\medskip \n" res += "\medskip \n"
res += "\centerline{" + self.langST + ' . ' + self.formatCopie + "}\n" res += "\centerline{" + self.langST + ' . ' + self.formatCopie + "}\n"
res += "\medskip \n" res += "\medskip \n"
res += "\centerline{\\textit{" + str(self.duree) + " minutes}}\n \n" res += "\centerline{\\textit{" + str(self.duree) + " minutes}}\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 "
res += "\centerline{\includegraphics[width=5cm]{cine}}\n \n" res += "\centerline{\includegraphics[width=5cm]{cine}}\n \n"
@ -247,13 +247,13 @@ 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.strftime("mardi %d %B %Y") + ', 20h30)</title> \n \t' res += '<title>[cine-info] ' + self.nom + ' de ' + self.realisateur + ' (' + self.date.strftime("%A %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.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 += '\n <p style="text-align:justify">Retrouvez-nous en salle Dussane <b>' + self.date.strftime("%A %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>: '+ str(self.duree) + ' minutes.<br> \n' res += '<b>Durée </b>: '+ str(self.duree) + ' minutes.<br> \n'
@ -273,7 +273,7 @@ class filmSQ():
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>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 += '<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>' res += '</div> </div> </body> </html>'
return res return res
def facebook(self): def facebook(self):
res = self.nom + " - " + self.realisateur res = self.nom + " - " + self.realisateur
@ -298,7 +298,7 @@ class filmSQ():
def maxId(): def maxId():
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 MAX(i) FROM films') c.execute('SELECT MAX(i) FROM films')
@ -308,13 +308,13 @@ class filmSQ():
raise e 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, nom, date, i FROM films ORDER BY i ASC') c.execute('SELECT idN, nom, date, i FROM films ORDER BY i ASC')
@ -327,11 +327,11 @@ class filmSQ():
finally: finally:
conn.close() conn.close()
pass pass
def makeListActors(): def makeListActors():
l = [] l = []
new = input("Entrez le nom des acteurs en appuyant sur Entrée entre chaque.gccPour terminer, appuyer sur Entrée avec une ligne vide.\n") new = input("Entrez le nom des acteurs en appuyant sur Entrée entre chaque.gccPour terminer, appuyer sur Entrée avec une ligne vide.\n")
if (new == -1): if (new == -1):
return -1 return -1
while(new != ""): while(new != ""):
l += [new] l += [new]
@ -350,7 +350,7 @@ class filmSQ():
except IndexError: except IndexError:
print("Veuillez entrer la date au format JJ/MM/AAA") print("Veuillez entrer la date au format JJ/MM/AAA")
return res return res
def input_duree(): def input_duree():
ok = False ok = False
while not ok: while not ok:
@ -378,7 +378,7 @@ class filmSQ():
def newFilm(): def newFilm():
"""Interface d'ajout d'un nouveau film""" """Interface d'ajout d'un nouveau film"""
dic = {} dic = {}
i = filmSQ.maxId() i = filmSQ.maxId()
ok = False ok = False
dic['i'] = i+1 dic['i'] = i+1
@ -396,8 +396,8 @@ class filmSQ():
dic['couleur'] = filmSQ.input_color(); dic['couleur'] = filmSQ.input_color();
dic['formatCopie'] = input("format de la copie ? ") dic['formatCopie'] = input("format de la copie ? ")
dic['langST'] = input("langue et sous-titre : VF/VOSTFR ? ") dic['langST'] = input("langue et sous-titre : VF/VOSTFR ? ")
seance = filmSQ(dic) seance = filmSQ(dic)
return seance return seance