# HG changeset patch # User Sandrine Ribeau # Date 1226537915 28800 # Node ID c1a51436db9c1aec98e9a83a93d6cb88ea8e89ae # Parent 298df3d3116cb5febb10d593afe3b1d7a375d203 Add references chapter and lax-book-fr but this is temporary, until content is sorted. diff -r 298df3d3116c -r c1a51436db9c doc/devmanual_fr/references.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/devmanual_fr/references.txt Wed Nov 12 16:58:35 2008 -0800 @@ -0,0 +1,22 @@ +.. -*- coding: utf-8 -*- + +.. _contents: + +Références +========== + +Détails d'implémentations +------------------------- +.. toctree:: + :maxdepth: 1 + + ../cubicweb-uml.txt + +Détail sur l'éxécution d'une requête complexe en multi-sources +-------------------------------------------------------------- + +.. toctree:: + :maxdepth: 1 + + ../querier.txt + diff -r 298df3d3116c -r c1a51436db9c doc/laxmanual_fr/01-intro.fr.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/laxmanual_fr/01-intro.fr.txt Wed Nov 12 16:58:35 2008 -0800 @@ -0,0 +1,127 @@ +.. -*- coding: utf-8 -*- + +Introduction à `LAX` +==================== + + +Concepts et vocabulaire +----------------------- + +*schéma* + le schéma définit le modèle de données d'une application sous forme + d'entités et de relations. C'est l'élément central d'une + application. + +*result set* + objet encaspulant les résultats d'une requête à l'entrepôt de données + et des informations sur cette requête. + +*vue* + une vue est une manière de représenter les données d'un `result set` + sous forme HTML, CSV, JSON, etc. + + + +Définition d'une application de Blog +==================================== + +La première chose à faire est de copier le répertoire ``lax`` +vers un nouveau répertoire qui sera votre application ``Google AppEngine``:: + + $ cp -r lax myapp + +Définition du schéma +-------------------- + +Ouvrir le fichier ``myapp/schema.py`` afin de définir le schéma des +données manipulées. La syntaxe de la définition est la même que celle +proposée par `Google AppEngine` mais il faut remplacer la ligne +d'import:: + + from google.appengine.ext import db + +par celle-ci:: + + from ginco.goa import db + + +Un exemple de schéma de données pour un ``Blog`` pourrait être:: + + from ginco.goa import db + + class BlogEntry(db.Model): + # un titre à donner à l'entrée + title = db.StringProperty(required=True) + # la date à laquelle le blog est créé + diem = db.DateProperty(required=True, auto_now_add=True) + # le contenu de l'entrée + content = db.TextProperty() + # une entrée peut en citer une autre + cites = db.SelfReferenceProperty() + + +Personnalisation des vues +------------------------- + +`LAX` permet d'obtenir directement, à partir de la définition +du schéma, de générer des vues de consultation, d'ajout et +de modification pour tous les types de donées manipulés. +Il est toutefois généralement souhaitable de personnaliser +les vues de consultations. + +Dans `LAX`, les vues sont représentées par des classes Python. +Une vue se caractèrise par : + +- un identifiant (tous les objets dans `LAX` sont enregistrés + dans un registre et cet identifiant sert de clé pour y retrouver + la vue) + +- une description des types de données auxquels elle s'applique + +Il existe dans `LAX` des vues prédéfinies et utilisées par le moteur +d'affichage. Pour avoir une liste exhaustive de ces vues prédéfinies, +vous pouvez consulter cette page. (XXX mettre le lien vers la liste). +Par exemple, la vue ``primary`` est la vue utilisée pour générer la +page principale de consultation d'un objet. + +Par exemple, si on souhaite modifier la page principale d'une entrée de +blog, il faut surcharger la vue ``primary`` des objets ``BlogEntry`` dans +le fichier ``myapp/views.py``:: + + from ginco.web.views import baseviews + + class BlogEntryPrimaryView(baseviews.PrimaryView): + accepts = ('BlogEntry',) + + def cell_call(self, row, col): + entity = self.entity(row, col) + self.w(u'

%s

' % entity.title) + self.w(u'
%s
' entity.content) + + +Génération du graphique de schéma +--------------------------------- + +Il existe une vue ``schema`` qui permet d'afficher un graphique +représantant les différents types d'entités définis dans le schéma +ainsi que les relations entre ces types. Ce graphique doit être généré +statiquement. Le script à utiliser pour générer ce schéma est +dans ``myapp/tools``. Ce script nécessite d'avoir accès aux +bibliothèques fournies par le SDK de ``Google AppEngine``. Il faut +donc modifier son PYTHONPATH:: + + $ export PYTHONPATH=GAE_ROOT/google:GAE_ROOT/lib/yaml + $ python tools/generate_schema_img.py + + +Génération des fichiers de traduction +------------------------------------- + +Des catalogues de traduction se trouvent dans `myapp/i18n`. Il faut +pour l'instant les mettre à jour à la main (et/ou avec les outils +``GNU`` comme ``xgettext``) et ensuite les compiler grâce au script +``myapp/tools/i18ncompile.py``:: + + $ export PYTHONPATH=GAE_ROOT/google:GAE_ROOT/lib/yaml + $ python tools/i18ncompile.py + diff -r 298df3d3116c -r c1a51436db9c doc/laxmanual_fr/02-install.fr.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/laxmanual_fr/02-install.fr.txt Wed Nov 12 16:58:35 2008 -0800 @@ -0,0 +1,77 @@ +.. -*- coding: utf-8 -*- + +Installation de `LAX` +===================== + +Qu'est-ce que `LAX` ? +======================= + +`LAX` (Logilab Appengine eXtension) est un framework d'application +web basé sur `Google AppEngine`. + +`LAX` est un portage de la partie web de la plate-forme applicative +développée par Logilab depuis 2001. Cette plate-forme publie des +données tirées de bases SQL, d'annuaires LDAP et de systèmes de +gestion de version. En avril 2008, elle a été portée pour fonctionner +sur le "datastore" de `Google AppEngine`. + +XXX: faire un parallèle entre Django/GAE et LAX/GAE + + +Téléchargement des sources +========================== + +- Les sources de `Google AppEngine` peuvent être récupérées à l'adresse + suivante : http://code.google.com/appengine/downloads.html + +- Les sources de `LAX` se trouvent à l'adresse suivante : + http://lax.logilab.org/ + + +Installation +============ + +Une fois décompactée, l'archive `lax-0.1.0-alpha.tar.gz`, on obtient +l'arborescence suivante:: + + . + |-- app.yaml + |-- custom.py + |-- data + |-- ginco/ + |-- i18n/ + |-- logilab/ + |-- main.py + |-- mx/ + |-- rql/ + |-- schema.py + |-- simplejson/ + |-- tools/ + | |-- generate_schema_img.py + | `-- i18ncompile.py + |-- views.py + |-- yams/ + `-- yapps/ + + +On retrouve le squelette d'une application web de `Google AppEngine` +(fichiers ``app.yaml``, ``main.py`` en particulier) avec les dépendances +supplémentaires nécessaires à l'utilisation du framework `LAX` + + +Lancement de l'application de base +================================== + +Plusieurs répertoires doivent être accessibles via la variable +d'environnement ``PYTHONPATH`` :: + + $ export PYTHONPATH=/path/to/google_appengine:/path/to/google_appengine/lib/yaml/lib:/path/to/myapp/ + +Le répertoire yaml n'est nécessaire que pour le lancement des scripts +qui se trouvent dans lax/tools et pour l'exécution des tests unitaires. + +Pour démarrer:: + + $ python /path/to/google_appengine/dev_appserver.py /path/to/lax + + diff -r 298df3d3116c -r c1a51436db9c doc/laxmanual_fr/03-create-app.fr.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/laxmanual_fr/03-create-app.fr.txt Wed Nov 12 16:58:35 2008 -0800 @@ -0,0 +1,6 @@ +.. -*- coding: utf-8 -*- + +Créer une application simple +============================ + +[TRADUISEZ-MOI] diff -r 298df3d3116c -r c1a51436db9c doc/laxmanual_fr/04-develop-views.fr.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/laxmanual_fr/04-develop-views.fr.txt Wed Nov 12 16:58:35 2008 -0800 @@ -0,0 +1,103 @@ +.. -*- coding: utf-8 -*- + +Définir l'interface utilisateur avec des vues +============================================= + +`LAX` provides out-of-the-box a web interface that is generated from +the schema definition: entities can be created, displayed, updated and +deleted. As display views are not very fancy, it is usually necessary +to develop your own. + + +With `LAX`, views are defined by Python classes. A view includes : + +- an identifier (all objects in `LAX` are entered in a registry + and this identifier will be used as a key) + +- a filter to select the resulsets it can be applied to + +`LAX` provides a lot of standard views, for a complete list, you +will have to read the code in directory views (XXX improve doc). +For example, the view named ``primary`` is the one used to display +a single entity. + +If you want to change the way a ``BlogEntry`` is displayed, just +override the view ``primary`` in ``BlogDemo/views.py`` :: + + from ginco.web.views import baseviews + + class BlogEntryPrimaryView(baseviews.PrimaryView): + + accepts = ('BlogEntry',) + + def cell_call(self, row, col): + entity = self.entity(row, col) + self.w(u'

%s

' % entity.title) + self.w(u'
%s
' % entity.publish_date) + self.w(u'
%s
' % entity.category) + self.w(u'
%s
' entity.content) + +[WRITE ME] + +* Defining views with selection/views + +* implementing interfaces, calendar for blog entries + +* show that a calendar view can export data to ical + +* create view "blogentry table" with title, publish_date, category + +* in view blog, select blogentries and apply view "blogentry table" + +* demo ajax by filtering blogentry table on category + +Components +=========== + +[WRITE ME] + +* explain the component architecture + +* add comments to the blog by importing the comments component + +MainTemplate +============ + +[WRITE ME] + +* customize MainTemplate and show that everything in the user + interface can be changed + + +RSS Channel +=========== + +[WRITE ME] + +* show that the RSS view can be used to display an ordered selection + of blog entries, thus providing a RSS channel + +* show that a different selection (by category) means a different channel + +RQL +==== + +[WRITE ME] + +* talk about the Relation Query Language + +URL Rewriting +============= + +[WRITE ME] + +* show how urls are mapped to selections and views and explain URLRewriting + +Security +========= + +[WRITE ME] + +* talk about security access rights and show that security is defined + using RQL + diff -r 298df3d3116c -r c1a51436db9c doc/laxmanual_fr/05-components.fr.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/laxmanual_fr/05-components.fr.txt Wed Nov 12 16:58:35 2008 -0800 @@ -0,0 +1,7 @@ +.. -*- coding: utf-8 -*- + + +Composants +=========== + +[TRADUISEZ-MOI] diff -r 298df3d3116c -r c1a51436db9c doc/laxmanual_fr/06-maintemplate.fr.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/laxmanual_fr/06-maintemplate.fr.txt Wed Nov 12 16:58:35 2008 -0800 @@ -0,0 +1,6 @@ +.. -*- coding: utf-8 -*- + +MainTemplate +============ + +[TRADUISEZ-MOI] diff -r 298df3d3116c -r c1a51436db9c doc/laxmanual_fr/07-rss-xml.fr.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/laxmanual_fr/07-rss-xml.fr.txt Wed Nov 12 16:58:35 2008 -0800 @@ -0,0 +1,7 @@ +.. -*- coding: utf-8 -*- + + +Canaux RSS et exports XML +========================= + +[TRADUISEZ-MOI] diff -r 298df3d3116c -r c1a51436db9c doc/laxmanual_fr/08-rql.fr.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/laxmanual_fr/08-rql.fr.txt Wed Nov 12 16:58:35 2008 -0800 @@ -0,0 +1,6 @@ +.. -*- coding: utf-8 -*- + +RQL +=== + +[TRADUISEZ-MOI] diff -r 298df3d3116c -r c1a51436db9c doc/laxmanual_fr/09-urlrewrite.fr.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/laxmanual_fr/09-urlrewrite.fr.txt Wed Nov 12 16:58:35 2008 -0800 @@ -0,0 +1,8 @@ +.. -*- coding: utf-8 -*- + +Ré-écriture d'URLs +================== + +[TRANSLATE ME] + + diff -r 298df3d3116c -r c1a51436db9c doc/laxmanual_fr/10-security.fr.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/laxmanual_fr/10-security.fr.txt Wed Nov 12 16:58:35 2008 -0800 @@ -0,0 +1,7 @@ +.. -*- coding: utf-8 -*- + +Securité +========= + +[TRADUISEZ-MOI] + diff -r 298df3d3116c -r c1a51436db9c doc/laxmanual_fr/11-faq.fr.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/laxmanual_fr/11-faq.fr.txt Wed Nov 12 16:58:35 2008 -0800 @@ -0,0 +1,6 @@ +.. -*- coding: utf-8 -*- + +LAX Foire Aux Questions +======================= + +[TRADUISEZ-MOI] \ No newline at end of file diff -r 298df3d3116c -r c1a51436db9c doc/laxmanual_fr/lax-book.fr.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/laxmanual_fr/lax-book.fr.txt Wed Nov 12 16:58:35 2008 -0800 @@ -0,0 +1,30 @@ +.. -*- coding: utf-8 -*- + +===================================================== +Tout ce que vous avez toujours voulu savoir sur `LAX` +===================================================== + +:authors: - Nicolas Chauvat + - Sylvain Thénault + - Adrien Di Mascio +:date: 2008-06-14 +:version: 0.1 +:organisation: Logilab +:copyright: © 2008 Logilab +:contact: contact@logilab.fr + +.. sectnum:: +.. contents:: + +.. include:: 01-intro.fr.txt +.. include:: 02-install.fr.txt +.. include:: 03-create-app.fr.txt +.. include:: 04-develop-views.fr.txt +.. include:: 05-components.fr.txt +.. include:: 06-maintemplate.fr.txt +.. include:: 07-rss-xml.fr.txt +.. include:: 08-rql.fr.txt +.. include:: 09-urlrewrite.fr.txt +.. include:: 10-security.fr.txt +.. include:: 11-faq.fr.txt +