merge
authorNicolas Chauvat <nicolas.chauvat@logilab.fr>
Thu, 13 Nov 2008 02:14:41 +0100
changeset 48 0adf4d507ede
parent 47 54087a269bdd (current diff)
parent 45 94635e6f5bcb (diff)
child 49 3d1f3e5246ff
child 50 d642f43eb87d
merge
--- a/doc/devmanual_fr/gae.txt	Thu Nov 13 02:07:53 2008 +0100
+++ b/doc/devmanual_fr/gae.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -2,16 +2,19 @@
 
 .. _contents:
 
-==================================
-LAX - Logilab App engine eXtension
-==================================
-:authors: Nicolas Chauvat, Sylvain Thénault, Adrien Di Mascio
-:date: 2008-07-12
-:version: 0.4
-:organisation: Logilab
-:copyright: © 2008 Logilab
-:contact: contact@logilab.fr
+==========================
+Google AppEngine Datastore
+==========================
 
 
-Voir la `documentation de LAX <file:///home/sandrine/src/lax/doc/html-en/lax-book.en.html>`_ .
-
+.. include:: ../laxmanual_fr/01-intro.fr.txt
+.. include:: ../laxmanual_fr/02-install.fr.txt
+.. include:: ../laxmanual_fr/03-create-app.fr.txt
+.. include:: ../laxmanual_fr/04-develop-views.fr.txt
+.. include:: ../laxmanual_fr/05-components.fr.txt
+.. include:: ../laxmanual_fr/06-maintemplate.fr.txt
+.. include:: ../laxmanual_fr/07-rss-xml.fr.txt
+.. include:: ../laxmanual_fr/08-rql.fr.txt
+.. include:: ../laxmanual_fr/09-urlrewrite.fr.txt
+.. include:: ../laxmanual_fr/10-security.fr.txt
+.. include:: ../laxmanual_fr/11-faq.fr.txt
--- a/doc/devmanual_fr/index.txt	Thu Nov 13 02:07:53 2008 +0100
+++ b/doc/devmanual_fr/index.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -11,9 +11,28 @@
 :Organization: Logilab
 
 .. toctree::
-   :maxdepth: 2
+   :maxdepth: 1
   
-   chap_developper_application.txt
-   chap_addons.txt
+   chap_fondements_cubicweb.txt
+   chap_mise_en_place_environnement.txt
+   chap_configuration_instance.txt
+   chap_definition_schema.txt
+   chap_definition_workflows.txt
+   chap_visualisation_donnees.txt
+   chap_manipulation_donnees.txt
+   chap_ui_gestion_formulaire.txt
+   chap_ui_js_json.txt
+   chap_autres_composants_ui.txt
+   chap_securite.txt
+   chap_serveur_crochets.txt
+   chap_serveur_notification.txt
+  
+   chap_rql.txt
+   chap_migration.txt
+   chap_tests.txt
+   chap_i18n.txt
+   gae.txt
+
+
 
 XXX: XXX FILLME, CSS, API sécurité
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/devmanual_fr/references.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -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
+
--- a/doc/faq.fr.txt	Thu Nov 13 02:07:53 2008 +0100
+++ b/doc/faq.fr.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -21,5 +21,36 @@
   de l'autre, mais vous avez la possibilite de choisir.
 
 
+HOW TO
+======
+
+* Comment mettre à jour une base de données après avoir modifié le schéma?
+  
+  Cela dépend de ce qui a été modifié dans le schéma. 
+  
+  * Modification d'une relation non finale
+
+  * Modification d'une relation finale 
+
+[TO COMPLETE]
+
+* Comment créer un utilisateur anonyme?
+  
+  Cela vous permet d'acceder a votre site sans avoir besoin de vous authentifier.
+  Dans le fichier ``all-in-one.conf`` de votre instance, définir l'utilisateur
+  anonyme en initilisant les valeurs des variables suivantes ::
+  
+    # login of the Erudi user account to use for anonymous user (if you want to
+    # allow anonymous)
+    anonymous-user=anon
+
+    # password of the Erudi user account matching login
+    anonymous-password=anon
+
+  Vous devez aussi vous assurer que cet utilisateur `anon` existe dans la base
+  de données, le plus simple étant de s'identifier sur votre application en
+  administrateur et de rajouter l'utilisateur `anon` via l'interface d'administration.
+
+* 
 
 
--- a/doc/index-content.txt	Thu Nov 13 02:07:53 2008 +0100
+++ b/doc/index-content.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -2,30 +2,33 @@
 
 .. _contents:
 
-Développement d'applications CubicWeb
-=====================================
 
 .. toctree::
    :maxdepth: 1
 
-   devmanual_fr/index.txt
+   devmanual_fr/chap_fondements_cubicweb.txt
+   devmanual_fr/chap_mise_en_place_environnement.txt
+   devmanual_fr/chap_configuration_instance.txt
+   devmanual_fr/chap_definition_schema.txt
+   devmanual_fr/chap_definition_workflows.txt
+   devmanual_fr/chap_visualisation_donnees.txt
+   devmanual_fr/chap_manipulation_donnees.txt
+   devmanual_fr/chap_ui_gestion_formulaire.txt
+   devmanual_fr/chap_ui_js_json.txt
+   devmanual_fr/chap_autres_composants_ui.txt
+   devmanual_fr/chap_securite.txt
+   devmanual_fr/chap_serveur_crochets.txt
+   devmanual_fr/chap_serveur_notification.txt
+  
+   devmanual_fr/chap_rql.txt
+   devmanual_fr/chap_migration.txt
+   devmanual_fr/chap_tests.txt
+   devmanual_fr/chap_i18n.txt
    devmanual_fr/gae.txt
 
+   tutmanual_fr/tut-create-app.fr.txt
+   devmanual_fr/references.txt
+
 
 
-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
-
--- a/doc/index.txt	Thu Nov 13 02:07:53 2008 +0100
+++ b/doc/index.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -6,15 +6,17 @@
 `CubicWeb`, plate-forme logicielle de développement d'application web 
 =====================================================================
 
+
+
 `CubicWeb` est une plate-forme logicielle de développement d'application web
-qui est développée par Logilab_ depuis 2001. Entièrement développée en Python,
-`CubicWeb` publie des données provenant de plusieurs sources telles que des
-bases de données SQL, des répertoire LDAP et des systèmes de gestion de versions
-tels que subversion.
+qui est développée par Logilab_ depuis 2001. 
 
-`CubicWeb` concurrence les autres plate-formes de développement d'application web 
-pour attirer l'attention et le support des développeurs. C'est le résultat
-de presque dix années d'expérience dans le développement de larges applications web.
+`CubicWeb` permet de déployer rapidement des applications Web de gestion de 
+connaissances, à partir du schéma des données manipulées.
+
+
+Parmi les applications déjà réalisées, on dénombre un annuaire en ligne pour le grand public (voir http://www.118000.fr/), un système de gestion d'études numériques et de simulations pour un bureau d'études, un service de garde partagée d'enfants (voir http://garde-partagee.atoukontact.fr/), la gestion des compétences du personnel et de l'historique des projets d'une entreprise d'ingénierie, la gestion du développement de projets logiciels d'un éditeur, la gestion de la scolarité d'un institut de formation, un intranet de travail collaboratif, la gestion de la relation client, etc.
+
 
 Ce qui nous rend unique? Un moteur piloté par un modèle de données, un
 véritable langage de requête, un mécanisme de sélection des vues pour la
@@ -25,7 +27,7 @@
 http://garde-partagee.atoukontact.fr/ et http://www.logilab.org/
 
 Si vous aimez Python et sa librairie standard, vous avez des chances d'aimer
-`CubicWeb` qui inclut sa propre librairie standard de composants.
+`CubicWeb` qui inclut sa propre librairie standard de cubes.
 
 
 En 2008, `CubicWeb` a été porté pour GoogleAppEngine_ et a donné naissance
@@ -38,21 +40,16 @@
 .. _GoogleAppEngine: http://code.google.com/appengine/
 
 
-Documentation générale de Cubicweb
-==================================
 
-.. toctree::
-   :maxdepth: 3
+Table des matieres
+==================
 
-   index-content.txt
-
-Tutoriel : créer votre première application web
-===============================================
 
 .. toctree::
    :maxdepth: 1
 
-   tutmanual_fr/tut-create-app.fr.txt
+   index-content.txt
+
 
 FAQ
 ===
@@ -62,18 +59,6 @@
    faq.fr.txt
 
 
-HOW TO
-======
-.. toctree::
-   :maxdepth: 1
-
-   howto.fr.txt
-
-Références API
-==============
-
-
-
 Indices and tables
 ==================
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/laxmanual_fr/01-intro.fr.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -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'<h1>%s</h1>' % entity.title)
+          self.w(u'<div>%s</div>' 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
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/laxmanual_fr/02-install.fr.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -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
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/laxmanual_fr/03-create-app.fr.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -0,0 +1,6 @@
+.. -*- coding: utf-8 -*-
+
+Créer une application simple
+============================
+
+[TRADUISEZ-MOI]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/laxmanual_fr/04-develop-views.fr.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -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'<h1>%s</h1>' % entity.title)
+          self.w(u'<div>%s</div>' % entity.publish_date)
+          self.w(u'<div>%s</div>' % entity.category)
+          self.w(u'<div>%s</div>' 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
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/laxmanual_fr/05-components.fr.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -0,0 +1,7 @@
+.. -*- coding: utf-8 -*-
+
+
+Composants
+===========
+
+[TRADUISEZ-MOI]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/laxmanual_fr/06-maintemplate.fr.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -0,0 +1,6 @@
+.. -*- coding: utf-8 -*-
+
+MainTemplate
+============
+
+[TRADUISEZ-MOI]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/laxmanual_fr/07-rss-xml.fr.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -0,0 +1,7 @@
+.. -*- coding: utf-8 -*-
+
+
+Canaux RSS et exports XML
+=========================
+
+[TRADUISEZ-MOI]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/laxmanual_fr/08-rql.fr.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -0,0 +1,6 @@
+.. -*- coding: utf-8 -*-
+
+RQL
+===
+
+[TRADUISEZ-MOI]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/laxmanual_fr/09-urlrewrite.fr.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -0,0 +1,8 @@
+.. -*- coding: utf-8 -*-
+
+Ré-écriture d'URLs
+==================
+
+[TRANSLATE ME]
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/laxmanual_fr/10-security.fr.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -0,0 +1,7 @@
+.. -*- coding: utf-8 -*-
+
+Securité
+=========
+
+[TRADUISEZ-MOI]
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/laxmanual_fr/11-faq.fr.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -0,0 +1,6 @@
+.. -*- coding: utf-8 -*-
+
+LAX Foire Aux Questions
+=======================
+
+[TRADUISEZ-MOI]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/laxmanual_fr/lax-book.fr.txt	Thu Nov 13 02:14:41 2008 +0100
@@ -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
+