15 Entièrement développée en Python, `CubicWeb` publie des données provenant |
15 Entièrement développée en Python, `CubicWeb` publie des données provenant |
16 de plusieurs sources telles que des bases de données SQL, des répertoire |
16 de plusieurs sources telles que des bases de données SQL, des répertoire |
17 LDAP et des systèmes de gestion de versions tels que subversion. |
17 LDAP et des systèmes de gestion de versions tels que subversion. |
18 |
18 |
19 |
19 |
20 L'interface utilisateur de Logilab SDW a été spécialement conçue pour laisser à l'utilisateur final toute latitude pour sélectionner puis présenter les données. Elle permet d'explorer aisément la base de connaissances et d'afficher les résultats avec la présentation la mieux adaptée à la tâche en cours. La flexibilité de cette interface redonne à l'utilisateur le contrôle de paramètres d'affichage et de présentation qui sont habituellement réservés aux développeurs. |
20 L'interface utilisateur de Logilab SDW a été spécialement conçue pour laisser |
|
21 à l'utilisateur final toute latitude pour sélectionner puis présenter les données. |
|
22 Elle permet d'explorer aisément la base de connaissances et d'afficher les |
|
23 résultats avec la présentation la mieux adaptée à la tâche en cours. |
|
24 La flexibilité de cette interface redonne à l'utilisateur le contrôle de |
|
25 paramètres d'affichage et de présentation qui sont habituellement réservés |
|
26 aux développeurs. |
21 |
27 |
22 En 2008, `CubicWeb` a été porté pour un nouveau type de source: le datastore |
28 En 2008, `CubicWeb` a été porté pour un nouveau type de source: le datastore |
23 de GoogleAppEngine_. |
29 de GoogleAppEngine_. |
24 |
30 |
25 .. _GoogleAppEngine: http://code.google.com/appengine/ |
31 .. _GoogleAppEngine: http://code.google.com/appengine/ |
26 |
32 |
|
33 |
|
34 Créez votre cube |
|
35 ---------------- |
|
36 |
|
37 Après avoir installé votre environement de développement `CubicWeb`, vous pouvez |
|
38 commencer à construire votre premier cube: :: |
|
39 |
|
40 cubicweb-ctl newcube blog |
|
41 |
|
42 Cela va créer dans ``/path/to/forest/cubes`` une répertoire contenant :: |
|
43 |
|
44 blog/ |
|
45 | |
|
46 |-- data/ |
|
47 | |-- cubes.blog.css |
|
48 | |-- cubes.blog.js |
|
49 | |-- external_resources |
|
50 | |
|
51 |-- debian/ |
|
52 | |-- changelog |
|
53 | |-- compat |
|
54 | |-- control |
|
55 | |-- copyright |
|
56 | |-- cubicweb-blog.prerm |
|
57 | |-- rules |
|
58 | |
|
59 |-- entities.py |
|
60 | |
|
61 |-- i18n/ |
|
62 | |-- en.po |
|
63 | |-- fr.po |
|
64 | |
|
65 |-- __init__.py |
|
66 | |
|
67 |-- MANIFEST.in |
|
68 | |
|
69 |-- migration/ |
|
70 | |-- postcreate.py |
|
71 | |-- precreate.py |
|
72 | |
|
73 |-- __pkginfo__.py |
|
74 | |
|
75 |-- schema.py |
|
76 | |
|
77 |-- setup.py |
|
78 | |
|
79 |-- site_cubicweb.py |
|
80 | |
|
81 |-- sobjects.py |
|
82 | |
|
83 |-- test/ |
|
84 | |-- data/ |
|
85 | |-- bootstrap_cubes |
|
86 | |-- pytestconf.py |
|
87 | |-- realdb_test_blog.py |
|
88 | |-- test_blog.py |
|
89 | |
|
90 |-- views.py |
|
91 |
|
92 Toute modification apportée à votre modele de données devra |
|
93 etre effectue dans ce répertoire. |
|
94 |
|
95 |
|
96 Créez votre instance |
|
97 -------------------- |
|
98 |
|
99 :: |
|
100 |
|
101 cubicweb-ctl create blogdemo |
|
102 |
|
103 Cette commande va créer un répertoire ``~/etc/cubicweb.d/blogdemo`` |
|
104 contenant tous les fichiers de configuration nécessaire au lancement |
|
105 de votre application web. |
|
106 |
|
107 Définissez votre schéma de données |
|
108 ---------------------------------- |
|
109 |
|
110 Votre modele de données est défini dans le fichier ``schema.py`` de votre cube |
|
111 ``blog`` comme suit. |
|
112 |
|
113 :: |
|
114 |
|
115 from cubicweb.schema import format_constraint |
|
116 class Blog(EntityType): |
|
117 title = String(maxsize=50, required=True) |
|
118 description = String() |
|
119 |
|
120 class BlogEntry(EntityType): |
|
121 title = String(required=True, fulltextindexed=True, maxsize=256) |
|
122 content_format = String(meta=True, internationalizable=True, maxsize=50, |
|
123 default='text/rest', constraints=[format_constraint]) |
|
124 content = String(required=True, fulltextindexed=True) |
|
125 entry_of = SubjectRelation('Blog', cardinality='?*') |
|
126 |
|
127 |
|
128 |
|
129 Définissez les vues de vos données |
|
130 ---------------------------------- |
|
131 |
|
132 Les vues correspondantes au modele de données sont définies dans ``views.py`` |
|
133 de votre cube ``blog``. |
|
134 |
|
135 :: |
|
136 |
|
137 __docformat__ = "restructuredtext en" |
|
138 |
|
139 from mx.DateTime import DateTime |
|
140 from logilab.mtconverter import html_escape |
|
141 |
|
142 from cubicweb.common.uilib import text_cut |
|
143 from cubicweb.common.view import EntityView |
|
144 from cubicweb.web.views import baseviews |
|
145 from cubicweb.web.views.boxes import BoxTemplate, BoxHtml |
|
146 from cubicweb.web.views.calendar import MONTHNAMES |
|
147 from cubicweb.web.htmlwidgets import BoxLink, BoxWidget |
|
148 |
|
149 |
|
150 class BlogPrimaryView(baseviews.PrimaryView): |
|
151 accepts = ('Blog',) |
|
152 skip_attrs = baseviews.PrimaryView.skip_attrs + ('title',) |
|
153 |
|
154 def render_entity_title(self, entity): |
|
155 self.w(u'<h1>%s</h1>' % html_escape(entity.dc_title())) |
|
156 |
|
157 def render_entity_relations(self, entity, siderelations): |
|
158 rset = entity.related('entry_of', 'object') |
|
159 self.pagination(self.req, rset, self.w) |
|
160 self.wview('list', rset, 'null', title='') |
|
161 |
|
162 |
|
163 class BlogEntryPrimaryView(baseviews.PrimaryView): |
|
164 accepts = ('BlogEntry',) |
|
165 skip_attrs = baseviews.PrimaryView.skip_attrs + ('title',) |
|
166 show_attr_label = False |
|
167 |
|
168 def render_entity_title(self, entity): |
|
169 self.w(u'<h1>%s</h1>' % html_escape(entity.dc_title())) |
|
170 |
|
171 def content_format(self, entity): |
|
172 return entity.view('reledit', rtype='content_format') |
|
173 |
|
174 |
|
175 Bienvenue dans votre application web |
|
176 ------------------------------------ |
|
177 |
|
178 Lancez votre application en exécutant : :: |
|
179 |
|
180 cubicweb-ctl start -D blogdemo |
|
181 |
|
182 |
|
183 Vous pouvez à présent accéder a votre application web vous permettant de |
|
184 créer des blogs et d'y poster des messages en visitant l'URL http://localhost:8080/. |
|
185 Un premier formulaire d'authentification va vous être proposé. Par défaut, |
|
186 l'application n'autorisera pas d'utilisateur anonyme à accéder a votre |
|
187 application. Vous devrez donc utiliser l'utilisateur administrateur que |
|
188 vous aurez crée lors de l'initialisation de votre base de données via |
|
189 ``cubicweb-ctl create``. |
|
190 |
|
191 .. image:: ../images/login-form.png |
|
192 |
|
193 |
|
194 Une fois authentifié, vous pouvez commencer à jouer avec votre |
|
195 application. Bravo ! |
|
196 |
|
197 .. image:: ../images/blog-demo-first-page.png |
|
198 |
|
199 |
|
200 |