goa/doc/quickstart.txt
changeset 0 b97547f5f1fa
child 2789 39712da6f397
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/goa/doc/quickstart.txt	Wed Nov 05 15:52:50 2008 +0100
@@ -0,0 +1,126 @@
+Introduction
+=============
+
+
+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 qui encaspule les résultats d'une requête adressée à 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 squelette depuis le répertoire 
+``lax/skel`` vers un nouveau répertoire qui sera votre application 
+``Google AppEngine``::
+
+  $ cp -r lax/skel 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 cubicweb.goa import db
+
+
+Un exemple de schéma de données pour un ``Blog`` pourrait être::
+
+  from cubicweb.goa import db
+  
+  class Blog(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 de générer directement, à partir de la définition
+du schéma, 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 ``Blog`` dans
+le fichier ``myapp/views.py``::
+  
+  from cubicweb.web.views import baseviews
+  
+  class BlogPrimaryView(baseviews.PrimaryView):
+      accepts = ('Blog',)
+      
+      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``::
+
+  $ python tools/i18ncompile.py
+
+.. _`Google AppEngine` :: http://code.google.com/appengine/docs/datastore/overview.html