doc/plan_formation_python_cubicweb.txt
author Denis Laxalde <denis.laxalde@logilab.fr>
Tue, 06 Aug 2019 14:26:17 +0200
branch3.26
changeset 12719 9fb4a71f119d
parent 36 f6bcad5c6dfe
child 12792 e2cdb1be6bd9
permissions -rw-r--r--
[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