feat: use templates to generate com
This commit is contained in:
parent
a47c5df213
commit
d29173d14b
9 changed files with 212 additions and 152 deletions
10
config.py
10
config.py
|
@ -1,7 +1,9 @@
|
|||
PRICE_ONE_COF = 4
|
||||
PRICE_ONE_EXTE = 5
|
||||
PRICE_CARD_COF = 30
|
||||
PRICE_CARD_EXTE = 35
|
||||
prices = {
|
||||
'one_cof': 4,
|
||||
'one_exte': 5,
|
||||
'card_cof': 30,
|
||||
'card_exte': 35
|
||||
}
|
||||
|
||||
db_path = '../db/baseFilms.db'
|
||||
dump_path = '../db/dumpFile'
|
||||
|
|
|
@ -11,6 +11,7 @@ Created on Sun Mar 25 18:20:49 2018
|
|||
# * mettre en place une file d'instruction pour anticiper
|
||||
# * vérifier les eval et les types donnés
|
||||
|
||||
from genCom import GenerateurComm
|
||||
from cineclubBlogSQ import filmSQ as f
|
||||
from config import dump_path, db_path
|
||||
import sqlite3
|
||||
|
@ -22,6 +23,7 @@ class FilmInterface():
|
|||
|
||||
def __init__(self):
|
||||
self.filmCharge = None
|
||||
self.generateur_com = GenerateurComm()
|
||||
|
||||
def menu(self):
|
||||
self.filmEnCours()
|
||||
|
@ -161,22 +163,22 @@ class FilmInterface():
|
|||
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())
|
||||
print(self.generateur_com.bocal(self.filmCharge))
|
||||
self.finAction()
|
||||
elif rep == "2":
|
||||
print(self.filmCharge.blog())
|
||||
print(self.generateur_com.blog(self.filmCharge))
|
||||
self.finAction()
|
||||
elif rep == "3":
|
||||
print(self.filmCharge.calendrier())
|
||||
print(self.generateur_com.calendrier(self.filmCharge))
|
||||
self.finAction()
|
||||
elif rep == "4":
|
||||
print(self.filmCharge.facebook())
|
||||
print(self.generateur_com.facebook(self.filmCharge))
|
||||
self.finAction()
|
||||
elif rep == "5":
|
||||
print(self.filmCharge.mail())
|
||||
print(self.generateur_com.mail(self.filmCharge))
|
||||
self.finAction()
|
||||
elif rep == "6":
|
||||
print(self.filmCharge.allCalendars())
|
||||
print(self.generateur_com.allCalendars(self.filmCharge))
|
||||
self.finAction()
|
||||
elif rep == "7":
|
||||
self.selectFilm()
|
||||
|
|
|
@ -152,148 +152,6 @@ class filmSQ():
|
|||
|
||||
return s
|
||||
|
||||
|
||||
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"><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>:'
|
||||
res += str(self.duree) + " minutes"
|
||||
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 += f"Comme d'habitude, l'entrée coûte {config.PRICE_ONE_EXTE} euros, {config.PRICE_ONE_COF} pour les membres du COF et vous avez la possibilité d'acheter des cartes de 10 places pour respectivement {config.PRICE_CARD_EXTE} et {config.PRICE_CARD_COF} 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("%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 += 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="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("%A %d %B %Y") +', 20h30 <br /><i>'
|
||||
res += self.nom + '</i> de ' + self.realisateur +' (' +str(self.annee) + ')</b><br /><br />'
|
||||
res += str(self.duree) + ' minutes . '
|
||||
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 class="entry-break"></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 allCalendars(self):
|
||||
conn = sqlite3.connect("baseFilms.db", detect_types=sqlite3.PARSE_DECLTYPES)
|
||||
conn.row_factory = sqlite3.Row
|
||||
c = conn.cursor()
|
||||
res = ""
|
||||
try:
|
||||
conn = sqlite3.connect("baseFilms.db")
|
||||
#conn.row_factory = sqlite3.Row
|
||||
c = conn.cursor()
|
||||
c.execute('SELECT idN FROM films WHERE date>=? ', (self.date,))
|
||||
#c.executemany('INSERT INTO acteurs VALUES (NULL, :iFilm, :acteur)', acteursToSq)
|
||||
r = c.fetchall()
|
||||
listFilms = [filmSQ(a[0]) for a in r]
|
||||
conn.commit()
|
||||
for film in listFilms:
|
||||
res += film.calendrier() + "\n\n"
|
||||
except Exception as e:
|
||||
conn.rollback()
|
||||
raise e
|
||||
finally:
|
||||
conn.close()
|
||||
return res
|
||||
|
||||
def bocal(self):
|
||||
res = f"\\centerline{{\\date{{{self.date.strftime('%A %d %B %Y')}, 20h30}} \n"
|
||||
res += "\\centerline{Salle Dussane} \n"
|
||||
res += f"\\centerline{{\\emph{{\\Large {self.nom}}}}} \n"
|
||||
res += f"\\centerline{{{self.realisateur} ({str(self.annee)}) }} \n"
|
||||
res += "\\medskip \n"
|
||||
if len(self.acteurs) == 1 :
|
||||
res += f"\\centerline{{{self.acteurs[0]}}}\n"
|
||||
if len(self.acteurs) >= 2 :
|
||||
res += f"\\centerline{{{self.acteurs[0]}, {self.acteurs[1]}}}\n"
|
||||
if len(self.acteurs) > 2 :
|
||||
res += f"\\centerline{{{self.acteurs[2]}}}\n"
|
||||
res += "\\medskip \n"
|
||||
res += f"\\centerline{{" + self.langST + ' . ' + self.formatCopie + "}}\n"
|
||||
res += "\\medskip \n"
|
||||
res += f"\\centerline{{\\textit{{{str(self.duree)} minutes}}}}\n \n"
|
||||
res += "\\medskip\n"
|
||||
res += f"\\medskip \n \\centerline{{~{config.PRICE_ONE_EXTE}€~/~{config.PRICE_ONE_COF}~€ COF}} \n \\medskip \n \n "
|
||||
res += "\\centerline{\\includegraphics[width=5cm]{cine}}\n \n"
|
||||
res += "\\medskip\n"
|
||||
res += self.synopsis
|
||||
return 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 += f'<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 += '\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.strftime("%A %d %B %Y") + f", 20h30</b> ! Comme d'habitude, l'entrée coûte <b>{config.PRICE_ONE_EXTE}€, {config.PRICE_ONE_COF}€</b> pour les membres du COF et vous avez la possibilité d'acheter des cartes de 10 places pour respectivement {config.PRICE_CARD_EXTE}€ et {config.PRICE_CARD_COF}€. 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 += f'<center><b><i>{self.nom}</i></b> \n de <b>{self.realisateur}<br>\n </b></center>\n <br>'
|
||||
res += f'<b>Durée </b>: {str(self.duree)} minutes.<br> \n'
|
||||
if self.couleur:
|
||||
res +'<b>Couleur</b>. <br> \n'
|
||||
else:
|
||||
res += '<b>Noir et blanc</b> <br> \n'
|
||||
res += f'<b>Pays :</b> {self.pays}<br> \n'
|
||||
res += f'<b> {self.formatCopie} . {self.langST}</b> <br> \n'
|
||||
res += f'<b>Année :</b> {str(self.annee)}<br> \n'
|
||||
res += f'<b>Avec :</b> {strListe(self.acteurs)}...<br> \n'
|
||||
res += f'<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="mailto:sympa@lists.ens.psl.eu?subject=UNSUBSCRIBE%20cineclub-informations&body=Envoyez%20ce%20mail%20pour%20terminer%20de%20vous%20d%C3%A9sinscrire" target="_blank"> Désinscrivez-vous</a></small></p>'
|
||||
res += '</div> </div> </body> </html>'
|
||||
return res
|
||||
|
||||
def facebook(self):
|
||||
res = self.nom + " - " + self.realisateur
|
||||
res += " \n \n"
|
||||
res += self.synopsis
|
||||
res += " \n \n"
|
||||
res += f"Durée : {str(self.duree)} minutes \n"
|
||||
if self.couleur:
|
||||
res += 'Couleur \n'
|
||||
else:
|
||||
res += 'Noir et blanc\n'
|
||||
res += f"Pays : {self.pays}\n"
|
||||
res += f"{self.formatCopie} . {self.langST}\n"
|
||||
res += f"Année : {str(self.annee)}\n"
|
||||
res += f'Avec : {strListe(self.acteurs)}...\n'
|
||||
|
||||
res += "Plus d'informations sur notre site Internet http://www.cineclub.ens.fr/category/seances/ \n"
|
||||
res += f"\nComme d’habitude, l’entrée coûte {config.PRICE_ONE_EXTE}€, {config.PRICE_ONE_COF}€ pour les membres du COF (association d'élèves de l'ENS). L’entrée est gratuite pour les membres du Programme Étudiant⋅e⋅s Invité⋅e⋅s."
|
||||
res += " \nL'accès est ouvert à tous ; pas besoin d'être à l'ENS !"
|
||||
return res
|
||||
|
||||
def maxId():
|
||||
try:
|
||||
conn = sqlite3.connect(db_path)
|
||||
|
|
63
scripts/genCom.py
Normal file
63
scripts/genCom.py
Normal file
|
@ -0,0 +1,63 @@
|
|||
from jinja2 import Environment, FileSystemLoader
|
||||
from config import prices
|
||||
|
||||
|
||||
def str_list(liste):
|
||||
return f'{", ".join(liste)}...'
|
||||
|
||||
|
||||
def str_couleur(est_en_couleur):
|
||||
return 'Couleur' if est_en_couleur else 'Noir et blanc'
|
||||
|
||||
|
||||
latex_jinja_env_params = {
|
||||
'block_start_string': '\\BLOCK{',
|
||||
'block_end_string': '}',
|
||||
'variable_start_string': '\\VAR{',
|
||||
'variable_end_string': '}',
|
||||
'comment_start_string': '\\#{',
|
||||
'comment_end_string': '}',
|
||||
'line_statement_prefix': '%%',
|
||||
'line_comment_prefix': '%#',
|
||||
'trim_blocks': True,
|
||||
'autoescape': False
|
||||
}
|
||||
|
||||
filtres_jinja = {
|
||||
'strListe': str_list,
|
||||
'couleurStr': str_couleur
|
||||
}
|
||||
|
||||
class GenerateurComm:
|
||||
def __init__(self):
|
||||
self.env_jinja = Environment(loader=FileSystemLoader('../templates'))
|
||||
self.env_jinja.filters.update(filtres_jinja)
|
||||
|
||||
self.latex_env_jinja = Environment(loader=FileSystemLoader('../templates'), **latex_jinja_env_params)
|
||||
self.latex_env_jinja.filters.update(filtres_jinja)
|
||||
|
||||
def build_com(self, film, nom_template, latex=False):
|
||||
env = self.latex_env_jinja if latex else self.env_jinja
|
||||
|
||||
template = env.get_template(nom_template)
|
||||
out = template.render({'prices': prices, 'film': film})
|
||||
return out
|
||||
|
||||
def bocal(self, film):
|
||||
return self.build_com(film, 'bocal.tex', latex=True)
|
||||
|
||||
def blog(self, film):
|
||||
return self.build_com(film, 'blog.html.jinja2')
|
||||
|
||||
def calendrier(self, film):
|
||||
return self.build_com(film, 'calendrier.html.jinja2')
|
||||
|
||||
def facebook(self, film):
|
||||
return self.build_com(film, 'facebook.txt.jinja2')
|
||||
|
||||
def mail(self, film):
|
||||
return self.build_com(film, 'mail.html.jinja2')
|
||||
|
||||
def allCalendars(self, film):
|
||||
pass
|
||||
|
43
templates/blog.html.jinja2
Normal file
43
templates/blog.html.jinja2
Normal file
|
@ -0,0 +1,43 @@
|
|||
<div class="entry-trailer">
|
||||
<iframe src="{{ film.youtube }}" width="560" height="315"
|
||||
frameborder="0" allowfullscreen="allowfullscreen">
|
||||
</iframe>
|
||||
</div>
|
||||
<!-- Commentaire pertinent quelconque vis-à-vis du film -->
|
||||
<div class="entry-mainblock">
|
||||
<div class="entry-separator">
|
||||
<img class="alignnone wp-image-1873 size-medium"
|
||||
src="{{ film.image }}"
|
||||
alt="affiche du film" width="300"
|
||||
height="300"/>
|
||||
</div>
|
||||
<div class="entry-text-info">
|
||||
<b>Durée</b> : {{ film.duree }} minutes<br/>
|
||||
<b>{{ film.couleur|couleurStr }}</b><br/>
|
||||
<b>Pays</b> : {{ film.pays|capitalize }}<br/>
|
||||
<b>{{ film.formatCopie }} . {{ film.langST }}</b><br/>
|
||||
<b>Année :</b>{{ film.annee }}<br/>
|
||||
<b>Avec :</b>{{ film.acteurs|strListe }}<br/>
|
||||
<div class="entry-text-info">
|
||||
<b>Synopsis</b> : {{ film.synopsis }}
|
||||
</div>
|
||||
<br/>
|
||||
</div>
|
||||
Comme d'habitude, l'entrée coûte {{ prices.one_exte }} euros, {{ prices.one_cof }} pour les membres du COF et vous avez la possibilité d'acheter des cartes de 10 places pour respectivement {{ prices.card_exte }} et {{ prices.card_cof }} euros. L'entrée est gratuite pour les étudiant⋅e⋅s invité⋅e⋅s.
|
||||
<div class="entry-resume">
|
||||
Et pour résumer :
|
||||
<div class="resume-bloc">
|
||||
<span class="resume-date">Rendez-vous le {{ film.date.strftime("%A %d %B %Y") }}, 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">{{ film.nom }}</span><br/>
|
||||
<span class="resume-director">de {{ film.realisateur }}</span><br/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Balise de commentaire à retirer lors de l'insertion de l'analyse
|
||||
<div class="entry-analyse">
|
||||
<h2>Proposition d'analyse</h2>
|
||||
Bientôt…
|
||||
</div>
|
||||
-->
|
||||
</div>
|
20
templates/bocal.tex
Normal file
20
templates/bocal.tex
Normal file
|
@ -0,0 +1,20 @@
|
|||
\centerline{\date{\VAR{film.date.strftime('%A %d %B %Y')}, 20h30}
|
||||
\centerline{Salle Dussane}
|
||||
\centerline{\emph{\Large \VAR{ film.nom } }}
|
||||
\centerline{\VAR{ film.realisateur } (\VAR{ film.annee }) }
|
||||
\medskip
|
||||
\centerline{\VAR{ film.acteurs|strListe }}
|
||||
\medskip
|
||||
\centerline{\VAR{ film.formatCopie } . \VAR{ film.langST }}
|
||||
\medskip
|
||||
\centerline{\textit{\VAR{ film.duree } minutes}}
|
||||
|
||||
\medskip
|
||||
\medskip
|
||||
\centerline{~\VAR{ prices.one_exte }€~/~\VAR{ prices.one_cof }~€ COF}
|
||||
\medskip
|
||||
|
||||
\centerline{\includegraphics[width=5cm]{cine}}
|
||||
|
||||
\medskip \medskip
|
||||
\VAR{ film.synopsis }
|
27
templates/calendrier.html.jinja2
Normal file
27
templates/calendrier.html.jinja2
Normal file
|
@ -0,0 +1,27 @@
|
|||
<!-- Film #{{ film.i }} -->
|
||||
<div class="entry-mainblock">
|
||||
<div class="entry-separator">
|
||||
<img class="alignnone size-full wp-image-1963"
|
||||
src="{{ film.image }}"
|
||||
alt="" width="150" height="150">
|
||||
</div>
|
||||
<div class="entry-text-info">
|
||||
<b>
|
||||
{{ film.date.strftime("%A %d %B %Y") }}, 20h30
|
||||
<i>{{ film.nom }}</i> de {{ film.realisateur }} ({{ film.annee }})
|
||||
</b>
|
||||
|
||||
{{ film.duree }} minutes . {{ film.couleur|couleurStr }} . {{ film.pays }} .
|
||||
Avec : {{ film.acteurs|strListe }}.
|
||||
{{ film.langST }} . {{ film.formatCopie }}.
|
||||
|
||||
<!-- Commentaire pertinent quelconque vis-à-vis du film -->
|
||||
|
||||
<span class="entry-synopsis">
|
||||
{{ film.synopsis }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="entry-break"></div>
|
||||
</div>
|
||||
<a style="float: right;" href="#haut">Retour en haut de page</a>
|
||||
<!-- END OF POST -->
|
11
templates/facebook.txt.jinja2
Normal file
11
templates/facebook.txt.jinja2
Normal file
|
@ -0,0 +1,11 @@
|
|||
{{ film.nom }} - {{ film.realisateur }}
|
||||
{{ film.synopsis }}
|
||||
Durée : {{ film.duree }} minutes
|
||||
{{ film.couleur|couleurStr }}
|
||||
Pays : {{ film.pays }}
|
||||
{{ film.formatCopie }} . {{ film.langST }}
|
||||
Année : {{ film.annee }}
|
||||
Avec : {{ film.acteurs|strListe }}
|
||||
Plus d'informations sur notre site Internet http://www.cineclub.ens.fr/category/seances/
|
||||
Comme d’habitude, l’entrée coûte {{ prices.one_exte }}€, {{ prices.one_cof }}€ pour les membres du COF (association d'élèves de l'ENS). L’entrée est gratuite pour les membres du Programme Étudiant⋅e⋅s Invité⋅e⋅s.
|
||||
L'accès est ouvert à tous ; pas besoin d'être à l'ENS !
|
34
templates/mail.html.jinja2
Normal file
34
templates/mail.html.jinja2
Normal file
|
@ -0,0 +1,34 @@
|
|||
<html><body text="#000000" bgcolor="#FFFFFF"><div style="font-family: arial,helvetica,sans-serif;font-size: 12pt; color: #000000 ">
|
||||
<small><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></small>
|
||||
<p>Bonjour à toutes et à tous,</p>
|
||||
<p style="text-align:justify">
|
||||
Retrouvez-nous en salle Dussane <b>{{ film.date.strftime("%A %d %B %Y") }}, 20h30</b> ! Comme d'habitude, l'entrée coûte <b>{{ prices.one_exte }}€, {{ prices.one_cof }}€</b> pour les membres du COF et vous avez la possibilité d'acheter des cartes de 10 places pour respectivement {{ prices.card_exte }}€ et {{ prices.card_cof }}€. L'entrée est gratuite pour les étudiants invités.</p>
|
||||
|
||||
<div style="border:grey 1px solid; padding:5px; text-align:justify; margin-top:15px; margin-bottom:15px">
|
||||
<center>
|
||||
<b><i>{{ film.nom }}</i></b> de <b>{{ film.realisateur }}</b><br>
|
||||
</center>
|
||||
<!-- Commentaire pertinent quelconque vis-à-vis du film -->
|
||||
<br><b>Durée </b>: {{ film.duree }} minutes.<br>
|
||||
<b>{{ film.couleur|couleurStr }}</b> <br>
|
||||
<b>Pays :</b> {{ film.pays }}<br>
|
||||
<b>{{ film.formatCopie }} . {{ film.langST }}</b><br>
|
||||
<b>Année :</b>{{ film.annee }}<br>
|
||||
<b>Avec :</b>{{ film.acteurs|strListe }}<br>
|
||||
<b>Rapide synopsis :</b>
|
||||
<span class="entry-synopsis">{{ film.synopsis }}</span><br>
|
||||
<!-- Commentaire pertinent quelconque vis-à-vis du film -->
|
||||
</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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<small style="text-align:center">Vous ne souhaitez plus recevoir notre newsletter ? <a
|
||||
href="mailto:sympa@lists.ens.psl.eu?subject=UNSUBSCRIBE%20cineclub-informations&body=Envoyez%20ce%20mail%20pour%20terminer%20de%20vous%20d%C3%A9sinscrire"
|
||||
target="_blank">Désinscrivez-vous</a></small>
|
||||
</div></body></html>
|
Loading…
Reference in a new issue