diff -r 000000000000 -r b97547f5f1fa goa/doc/quickstart.txt --- /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'

%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``:: + + $ python tools/i18ncompile.py + +.. _`Google AppEngine` :: http://code.google.com/appengine/docs/datastore/overview.html