[py3] Pass bytes as "msg" to smtplib.SMTP.sendmail()
When passing a unicode string to smtplib.SMTP.sendmail() as "msg"
argument, there is an implicit bytes encoding using "ascii" encoding in
python3. Of course this does not work if the string contains non-ASCII
characters. In fact, config's sendmails method intent to pass bytes to
smtplib.SMTP.sendmail() as it uses msg.as_string() method.
Unfortunately, in python3, this method returns a unicode string whereas
it returns a bytes string in python2; we thus fix this by calling
as_bytes() method on python3.
As there is no "as_bytes" method in python2, we need to handle python2
compatibility by hand and either call as_string() or as_bytes().
In testlib, where we mock smtplib.SMTP, we need to keep the "msg"
argument of Email class (defined in testlib as well) a unicode string.
Otherwise, it fails to be parsed by email.message_from_string() (from
stdlib) if it is bytes on python3.
.. -*- coding: utf-8 -*-
Formation Python-CubicWeb 5 jours
==================================
Bases Python
------------
Syntaxe de base
~~~~~~~~~~~~~~~
:durée: 1j
Modèle objet
~~~~~~~~~~~~
:durée: 0.5j
Traitement de chaînes
~~~~~~~~~~~~~~~~~~~~~
:durée: 0.3j
Formattage de chaînes
Unicode
Entrées/Sorties
~~~~~~~~~~~~~~~
:durée: 0.2j
Fichiers
`StringIO`
Structures avancées
~~~~~~~~~~~~~~~~~~~
:durée: 0.5j
`object`, `super`
iterateurs
générateurs
list comprehension / generator expression
descripteurs, properties (`classmethod`, `property`)
décorateurs
Développement CubicWeb
-----------------------
Mise en place d'un environnement de développement CubicWeb
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:durée: 0.5j
Introduction mercurial
Installation de CubicWeb et de ses dépendances (debian !)
Postgres
Notion de template et d'instance
L'outil `cubicweb-ctl`
Création du modèle
Création d'une instance de développement
Fondements CubicWeb
~~~~~~~~~~~~~~~~~~~
:durée: 0.1j
Vocabulaire
Le langage RQL
Client/Serveur
Définition du modèle de données
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:durée: 0.4j
Définition d'entité
Définition de relation
Persistence du schéma
Migration de schéma
Fondements du framework CubicWeb
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:durée: 0.1j
La classe `appobject`
La base de registres
Chargement dynamique des classes
Manipulation des données stockées
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:durée: 0.4j
Les classes `Entity` et `AnyEntity`
Paramétrages et extensions spécifiques
Écriture de tests unitaires
Définition de vues
~~~~~~~~~~~~~~~~~~
:durée: 0.5j
Les classes de base des vues
Les vues prédéfinies dans la librairie
Les patrons
Vues binaires ou autre
Écriture de tests unitaires
Tests automatiques
Autres composants de l'interface web
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:durée: 0.5j
Actions
Component, VComponent
Forms, Controller
Eproperty