goa/doc/quickstart.txt
changeset 0 b97547f5f1fa
child 2789 39712da6f397
equal deleted inserted replaced
-1:000000000000 0:b97547f5f1fa
       
     1 Introduction
       
     2 =============
       
     3 
       
     4 
       
     5 Concepts et vocabulaire
       
     6 -----------------------
       
     7 
       
     8 *schéma*
       
     9   le schéma définit le modèle de données d'une application sous forme
       
    10   d'entités et de relations. C'est l'élément central d'une
       
    11   application.
       
    12 
       
    13 *result set*
       
    14   objet qui encaspule les résultats d'une requête adressée à l'entrepôt 
       
    15   de données et des informations sur cette requête.
       
    16 
       
    17 *vue*
       
    18   une vue est une manière de représenter les données d'un `result set`
       
    19   sous forme HTML, CSV, JSON, etc.
       
    20 
       
    21 
       
    22 
       
    23 Définition d'une application de Blog
       
    24 ====================================
       
    25 
       
    26 La première chose à faire est de copier le squelette depuis le répertoire 
       
    27 ``lax/skel`` vers un nouveau répertoire qui sera votre application 
       
    28 ``Google AppEngine``::
       
    29 
       
    30   $ cp -r lax/skel myapp
       
    31 
       
    32 Définition du schéma
       
    33 --------------------
       
    34 
       
    35 Ouvrir le fichier ``myapp/schema.py`` afin de définir le schéma des
       
    36 données manipulées. La syntaxe de la définition est la même que celle
       
    37 proposée par `Google AppEngine`_ mais il faut remplacer la ligne
       
    38 d'import::
       
    39   
       
    40   from google.appengine.ext import db
       
    41 
       
    42 par celle-ci::
       
    43 
       
    44   from cubicweb.goa import db
       
    45 
       
    46 
       
    47 Un exemple de schéma de données pour un ``Blog`` pourrait être::
       
    48 
       
    49   from cubicweb.goa import db
       
    50   
       
    51   class Blog(db.Model):
       
    52       # un titre à donner à l'entrée
       
    53       title = db.StringProperty(required=True)
       
    54       # la date à laquelle le blog est créé
       
    55       diem = db.DateProperty(required=True, auto_now_add=True)
       
    56       # le contenu de l'entrée
       
    57       content = db.TextProperty()
       
    58       # une entrée peut en citer une autre
       
    59       cites = db.SelfReferenceProperty() 
       
    60       
       
    61 
       
    62 Personnalisation des vues
       
    63 -------------------------
       
    64 
       
    65 ``LAX`` permet de générer directement, à partir de la définition
       
    66 du schéma, des vues de consultation, d'ajout et de modification 
       
    67 pour tous les types de donées manipulés. Il est toutefois 
       
    68 généralement souhaitable de personnaliser les vues de consultations.
       
    69 
       
    70 Dans ``LAX``, les vues sont représentées par des classes Python.
       
    71 
       
    72 Une vue se caractérise par :
       
    73 
       
    74 - un identifiant (tous les objets dans ``LAX`` sont enregistrés
       
    75   dans un registre et cet identifiant sert de clé pour y retrouver
       
    76   la vue)
       
    77   
       
    78 - une description des types de données auxquels elle s'applique
       
    79 
       
    80 Il existe dans ``LAX`` des vues prédéfinies et utilisées par le moteur
       
    81 d'affichage. Pour avoir une liste exhaustive de ces vues prédéfinies,
       
    82 vous pouvez consulter cette page. (XXX mettre le lien vers la liste).
       
    83 Par exemple, la vue ``primary`` est la vue utilisée pour générer la
       
    84 page principale de consultation d'un objet.
       
    85 
       
    86 Par exemple, si on souhaite modifier la page principale d'une entrée de
       
    87 blog, il faut surcharger la vue ``primary`` des objets ``Blog`` dans
       
    88 le fichier ``myapp/views.py``::
       
    89   
       
    90   from cubicweb.web.views import baseviews
       
    91   
       
    92   class BlogPrimaryView(baseviews.PrimaryView):
       
    93       accepts = ('Blog',)
       
    94       
       
    95       def cell_call(self, row, col):
       
    96           entity = self.entity(row, col)
       
    97           self.w(u'<h1>%s</h1>' % entity.title)
       
    98           self.w(u'<div>%s</div>' entity.content)
       
    99     
       
   100 
       
   101 Génération du graphique de schéma
       
   102 ---------------------------------
       
   103 
       
   104 Il existe une vue ``schema`` qui permet d'afficher un graphique
       
   105 représantant les différents types d'entités définis dans le schéma
       
   106 ainsi que les relations entre ces types. Ce graphique doit être généré
       
   107 statiquement. Le script à utiliser pour générer ce schéma est 
       
   108 dans ``myapp/tools``. Ce script nécessite d'avoir accès aux
       
   109 bibliothèques fournies par le SDK de ``Google AppEngine``. Il faut
       
   110 donc modifier son PYTHONPATH::
       
   111 
       
   112   $ export PYTHONPATH=GAE_ROOT/google:GAE_ROOT/lib/yaml
       
   113   $ python tools/generate_schema_img.py 
       
   114 
       
   115 
       
   116 Génération des fichiers de traduction
       
   117 -------------------------------------
       
   118 
       
   119 Des catalogues de traduction se trouvent dans `myapp/i18n`. Il faut
       
   120 pour l'instant les mettre à jour à la main (et/ou avec les outils
       
   121 ``GNU`` comme ``xgettext``) et ensuite les compiler grâce au script
       
   122 ``myapp/tools/i18ncompile.py``::
       
   123 
       
   124   $ python tools/i18ncompile.py
       
   125 
       
   126 .. _`Google AppEngine` :: http://code.google.com/appengine/docs/datastore/overview.html