53 text = String(fulltextindexed=True) |
53 text = String(fulltextindexed=True) |
54 category = String(vocabulary=('important','business')) |
54 category = String(vocabulary=('important','business')) |
55 entry_of = SubjectRelation('Blog', cardinality='?*') |
55 entry_of = SubjectRelation('Blog', cardinality='?*') |
56 |
56 |
57 |
57 |
58 Un ``Blog`` a un titre et une description. Le titre est une chaîne |
58 Un ``Blog`` a un titre et une description. Le titre est une chaîne |
59 de caractères requise par la classe parente EntityType and ne doit |
59 de caractères requise par la classe parente EntityType and ne doit |
60 pas excéder 50 caractères. La description est une chaîne de |
60 pas excéder 50 caractères. La description est une chaîne de |
61 caractères sans contraintes. |
61 caractères sans contraintes. |
62 |
62 |
63 Une ``BlogEntry`` a un titre, une date de publication et du texte |
63 Une ``BlogEntry`` a un titre, une date de publication et du texte |
64 étant son contenu. Le titre est une chaîne de caractères qui ne |
64 étant son contenu. Le titre est une chaîne de caractères qui ne |
65 doit pas excéder 100 caractères. La date de publication est de type Date et a |
65 doit pas excéder 100 caractères. La date de publication est de type Date et a |
66 pour valeur par défaut TODAY, ce qui signifie que lorsqu'une |
66 pour valeur par défaut TODAY, ce qui signifie que lorsqu'une |
67 ``BlogEntry`` sera créée, sa date de publication sera la date |
67 ``BlogEntry`` sera créée, sa date de publication sera la date |
68 courante a moins de modifier ce champ. Le texte est une chaîne de |
68 courante a moins de modifier ce champ. Le texte est une chaîne de |
69 caractères qui sera indexée en plein texte et sans contraintes. |
69 caractères qui sera indexée en plein texte et sans contraintes. |
70 |
70 |
71 Une ``BlogEntry`` a aussi une relation nommée ``entry_of`` qui la |
71 Une ``BlogEntry`` a aussi une relation nommée ``entry_of`` qui la |
72 relie à un ``Blog``. La cardinalité ``?*`` signifie que BlogEntry |
72 relie à un ``Blog``. La cardinalité ``?*`` signifie que BlogEntry |
73 peut faire partie de zero a un Blog (``?`` signifie `zero ou un`) et |
73 peut faire partie de zero a un Blog (``?`` signifie `zero ou un`) et |
74 qu'un Blog peut avoir une infinité de BlogEntry (``*`` signifie |
74 qu'un Blog peut avoir une infinité de BlogEntry (``*`` signifie |
75 `n'importe quel nombre incluant zero`). |
75 `n'importe quel nombre incluant zero`). |
76 Par soucis de complétude, nous rappellerons que ``+`` signifie |
76 Par soucis de complétude, nous rappellerons que ``+`` signifie |
77 `un ou plus`. |
77 `un ou plus`. |
78 |
78 |
79 Lancez l'application |
79 Lancez l'application |
80 -------------------- |
80 -------------------- |
81 |
81 |
82 Définir ce simple schéma est suffisant pour commencer. Assurez-vous |
82 Définir ce simple schéma est suffisant pour commencer. Assurez-vous |
83 que vous avez suivi les étapes décrites dans la section installation |
83 que vous avez suivi les étapes décrites dans la section installation |
84 (en particulier visitez http://localhost:8080/_load en tant qu'administrateur |
84 (en particulier visitez http://localhost:8080/_load en tant qu'administrateur |
85 afin d'initialiser le datastore), puis lancez votre application avec la commande :: |
85 afin d'initialiser le datastore), puis lancez votre application avec la commande :: |
86 |
86 |
87 python dev_appserver.py BlogDemo |
87 python dev_appserver.py BlogDemo |
88 |
88 |
89 puis dirigez vous vers http://localhost:8080/ (ou si c'est plus facile |
89 puis dirigez vous vers http://localhost:8080/ (ou si c'est plus facile |
90 vous pouvez utiliser la démo en ligne http://lax.appspot.com/). |
90 vous pouvez utiliser la démo en ligne http://lax.appspot.com/). |
91 [FIXME] -- changer la demo en ligne en quelque chose qui marche (!) |
91 [FIXME] -- changer la demo en ligne en quelque chose qui marche (!) |
92 |
92 |
93 .. image:: images/lax-book.00-login.en.png |
93 .. image:: images/lax-book.00-login.en.png |
94 :alt: login screen |
94 :alt: login screen |
95 |
95 |
96 Après vous être authentifié, vous arrivez sur la page d'accueil de votre |
96 Après vous être authentifié, vous arrivez sur la page d'accueil de votre |
97 application. Cette page liste les types d'entités accessibles dans votre |
97 application. Cette page liste les types d'entités accessibles dans votre |
98 application, en l'occurrence : Blog et Articles. Si vous lisez ``blog_plural`` |
98 application, en l'occurrence : Blog et Articles. Si vous lisez ``blog_plural`` |
99 et ``blogentry_plural`` cela signifie que l'internationalisation (i18n) |
99 et ``blogentry_plural`` cela signifie que l'internationalisation (i18n) |
100 n'a pas encore fonctionné. Ignorez cela pour le moment. |
100 n'a pas encore fonctionné. Ignorez cela pour le moment. |
101 |
101 |
128 |
128 |
129 .. image:: images/lax-book.02-create-blog.en.png |
129 .. image:: images/lax-book.02-create-blog.en.png |
130 :alt: from to create blog |
130 :alt: from to create blog |
131 |
131 |
132 En cliquant sur le logo situé dans le coin gauche de la fenêtre, |
132 En cliquant sur le logo situé dans le coin gauche de la fenêtre, |
133 vous allez être redirigé vers la page d'accueil. Ensuite, si vous allez |
133 vous allez être redirigé vers la page d'accueil. Ensuite, si vous allez |
134 sur le lien Blog, vous devriez voir la liste des entités Blog, en particulier |
134 sur le lien Blog, vous devriez voir la liste des entités Blog, en particulier |
135 celui que vous venez juste de créer ``Tech-Blog``. |
135 celui que vous venez juste de créer ``Tech-Blog``. |
136 |
136 |
137 .. image:: images/lax-book.03-list-one-blog.en.png |
137 .. image:: images/lax-book.03-list-one-blog.en.png |
138 :alt: displaying a list of a single blog |
138 :alt: displaying a list of a single blog |
158 Revenons sur la page d'accueil et cliquons sur `[+]` à droite du lien |
158 Revenons sur la page d'accueil et cliquons sur `[+]` à droite du lien |
159 `articles`. Appellons cette nouvelle entité ``Hello World`` et introduisons |
159 `articles`. Appellons cette nouvelle entité ``Hello World`` et introduisons |
160 un peut de texte avant de ``Valider``. Vous venez d'ajouter un article |
160 un peut de texte avant de ``Valider``. Vous venez d'ajouter un article |
161 sans avoir précisé à quel Blog il appartenait. Dans la colonne de gauche |
161 sans avoir précisé à quel Blog il appartenait. Dans la colonne de gauche |
162 se trouve une boite intitulé ``actions``, cliquez sur le menu ``modifier``. |
162 se trouve une boite intitulé ``actions``, cliquez sur le menu ``modifier``. |
163 Vous êtes de retour sur le formulaire d'édition de l'article que vous |
163 Vous êtes de retour sur le formulaire d'édition de l'article que vous |
164 venez de créer, à ceci près que ce formulaire a maintenant une nouvelle |
164 venez de créer, à ceci près que ce formulaire a maintenant une nouvelle |
165 section intitulée ``ajouter relation``. Choisissez ``entry_of`` dans ce menu, |
165 section intitulée ``ajouter relation``. Choisissez ``entry_of`` dans ce menu, |
166 cela va faire apparaitre une deuxième menu déroulant dans lequel vous |
166 cela va faire apparaitre une deuxième menu déroulant dans lequel vous |
167 allez pouvoir séléctionner le Blog ``MyLife``. |
167 allez pouvoir séléctionner le Blog ``MyLife``. |
168 |
168 |