author | Sandrine Ribeau <sandrine.ribeau@logilab.fr> |
Thu, 20 Nov 2008 10:25:44 -0800 | |
changeset 112 | 52bf52e6fc77 |
parent 111 | 7a06f06de32f |
parent 110 | d3005cdc968f |
permissions | -rw-r--r-- |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
1 |
.. -*- coding: utf-8 -*- |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
2 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
3 |
`CubicWeb` concepts |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
4 |
=================== |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
5 |
|
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
6 |
A little history... |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
7 |
------------------- |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
8 |
|
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
9 |
`CubicWeb` is a web application framework developped by Logilab_ since 2001. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
10 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
11 |
Entirely written in Python, `CubicWeb` publishes data from all sorts |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
12 |
of sources such as SQL database, LDAP directory and versioning system such |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
13 |
as subversion. |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
14 |
|
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
15 |
`CubicWeb` user interface was designed to let the final user a huge flexibility |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
16 |
on how to select and how to display content. It allows to browse the knowledge |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
17 |
database and to display the results with the best rendering according to |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
18 |
the context. |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
19 |
This interface flexibility gives back the user the control of the |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
20 |
rendering parameters that are usually reserved for developpers. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
21 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
22 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
23 |
We can list a couple of web applications developped with `CubicWeb`, an online |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
24 |
public phone directory (see http://www.118000.fr/), a system for managing |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
25 |
digital studies and simulations for a research lab, a tool for shared children |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
26 |
babysitting (see http://garde-partagee.atoukontact.fr/), a tool to manage |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
27 |
software developpment (see http://www.logilab.org), etc. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
28 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
29 |
In 2008, `CubicWeb` was ported for a new type of source : the datastore |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
30 |
from GoogleAppEngine_. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
31 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
32 |
Global architecture |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
33 |
------------------- |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
34 |
.. image:: images/archi_globale.png |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
35 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
36 |
.. note:: |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
37 |
For real, the client and server sides are integrated in the same |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
38 |
process and interact directly, without the needs for distants |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
39 |
calls using Pyro. It is important to note down that those two |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
40 |
sides, client/server, are disjointed and it is possible to execute |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
41 |
a couple of calls in distincts processes to balance the load of |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
42 |
your web site on one or more machines. |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
43 |
|
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
44 |
.. _TermsVocabulary: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
45 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
46 |
Terms and vocabulary |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
47 |
-------------------- |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
48 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
49 |
*schema* |
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
50 |
The schema defines the data model of an application based on entities |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
51 |
and relations, modeled with a comprehensive language made of Python |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
52 |
classes based on `yams`_ library. This is the core piece |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
53 |
of an application. It is initially defined in the file system and is |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
54 |
stored in the database at the time an instance is created. `CubicWeb` |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
55 |
provides a certain number of system entities included automatically as |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
56 |
it is necessarry for the core of `CubicWeb` and a library of |
110
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
57 |
cubes that can be explicitely included if necessary. |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
58 |
|
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
59 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
60 |
*entity type* |
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
61 |
An entity is a set of attributes; the essential attribute of |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
62 |
an entity is its key, named eid |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
63 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
64 |
*relation type* |
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
65 |
Entities are linked to each others by relations. In `CubicWeb` |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
66 |
relations are binary: by convention we name the first item of |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
67 |
a relation the `subject` and the second the `object`. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
68 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
69 |
*final entity type* |
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
70 |
Final types corresponds to the basic types such as string of characters, |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
71 |
integers... Those types have a main property which is that they can |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
72 |
only be used as `object` of a relation. The attributes of an entity |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
73 |
(non final) are entities (finals). |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
74 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
75 |
*final relation type* |
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
76 |
A relation is said final if its `object` is a final type. This is equivalent |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
77 |
to an entity attribute. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
78 |
|
110
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
79 |
*relation definition* |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
80 |
a relation definition is a 3-uple (subject entity type, relation type, object entity type), |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
81 |
with an associated set of property such as cardinality, constraints... |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
82 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
83 |
*repository* |
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
84 |
This is the RQL server side of `CubicWeb`. Be carefull not to get |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
85 |
confused with a Mercurial repository or a debian repository. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
86 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
87 |
*source* |
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
88 |
A data source is a container of data (SGBD, LDAP directory, `Google |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
89 |
App Engine`'s datastore ...) integrated in the |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
90 |
`CubicWeb` repository. This repository has at least one source, `system` which |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
91 |
contains the schema of the application, plain-text index and others |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
92 |
vital informations for the system. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
93 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
94 |
*configuration* |
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
95 |
It is possible to create differents configurations for an instance: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
96 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
97 |
- ``repository`` : repository only, accessible for clients using Pyro |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
98 |
- ``twisted`` : web interface only, access the repository using Pyro |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
99 |
- ``all-in-one`` : web interface and repository in a single process. |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
100 |
The repository could be or not accessible using Pyro. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
101 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
102 |
*cube* |
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
103 |
A cube is a model grouping one or multiple data types and/or views |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
104 |
to provide a specific functionnality or a complete `CubicWeb` application |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
105 |
potentially using other cubes. The available subes are located in the file |
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
106 |
system at `/path/to/forest/cubicweb/cubes`. |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
107 |
Larger applications can be built faster by importing cubes, |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
108 |
adding entities and relationships and overriding the |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
109 |
views that need to display or edit informations not provided by |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
110 |
cubes. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
111 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
112 |
*instance* |
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
113 |
An instance is a specific installation of a cube. All the required |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
114 |
configuration files necessarry for the well being of your web application |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
115 |
are grouped in an instance. This will refer to the cube(s) your application |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
116 |
is based on. |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
117 |
By example logilab.org and our intranet are two instances of a single |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
118 |
cube jpl, developped internally. |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
119 |
The instances are defined in the directory `~/etc/cubicweb.d`. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
120 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
121 |
*application* |
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
122 |
The term application is sometime used to talk about an instance |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
123 |
and sometimes to talk of a cube depending on the context. |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
124 |
So we would like to avoid using this term and try to use *cube* and |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
125 |
*instance* instead. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
126 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
127 |
*result set* |
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
128 |
This object contains the results of an RQL query sent to the source |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
129 |
and information on the query. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
130 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
131 |
*Pyro* |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
132 |
`Python Remote Object`_, distributed objects system similar to Java's RMI |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
133 |
(Remote Method Invocation), which can be used for the dialog between the web |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
134 |
side of the framework and the RQL repository. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
135 |
|
111
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
136 |
*query language* |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
137 |
A full-blown query language named RQL is used to formulate requests |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
138 |
to the database or any sources such as LDAP or `Google App Engine`'s |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
139 |
datastore. |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
140 |
|
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
141 |
*views* |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
142 |
A view is applied to a `result set` to present it as HTML, XML, |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
143 |
JSON, CSV, etc. Views are implemented as Python classes. There is no |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
144 |
templating language. |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
145 |
|
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
146 |
*generated user interface* |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
147 |
A user interface is generated on-the-fly from the schema definition: |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
148 |
entities can be created, displayed, updated and deleted. As display |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
149 |
views are not very fancy, it is usually necessary to develop your |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
150 |
own. Any generated view can be overridden by defining a new one with |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
151 |
the same identifier. |
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
152 |
|
7a06f06de32f
[doc] Merged GAE and foundations.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
96
diff
changeset
|
153 |
|
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
154 |
.. _`Python Remote Object`: http://pyro.sourceforge.net/ |
110
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
155 |
.. _`yams`: http://www.logilab.org/project/yams/ |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
156 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
157 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
158 |
`CubicWeb` engine |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
159 |
----------------- |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
160 |
|
110
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
161 |
The engine in `CubicWeb` is a set of classes managing a set of objects loaded |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
162 |
dynamically at the startup of `CubicWeb` (*appobjects*). Those dynamics objects, based on the schema |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
163 |
or the library, are building the final application. The differents dymanic components are |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
164 |
by example: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
165 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
166 |
* client and server side |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
167 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
168 |
- entities definition, containing the logic which enables application data manipulation |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
169 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
170 |
* client side |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
171 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
172 |
- *views*, or more specifically |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
173 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
174 |
- boxes |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
175 |
- header and footer |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
176 |
- forms |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
177 |
- page templates |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
178 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
179 |
- *actions* |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
180 |
- *controllers* |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
181 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
182 |
* server side |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
183 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
184 |
- notification hooks |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
185 |
- notification views |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
186 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
187 |
The components of the engine are: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
188 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
189 |
* a frontal web (only twisted is available so far), transparent for dynamic objects |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
190 |
* an object that encapsulates the configuration |
110
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
191 |
* a `registry` (`cubicweb.cwvreg`) containing the dynamic objects loaded automatically |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
192 |
|
110
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
193 |
Every *appobject* may access to the instance configuration using its *config* attribute |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
194 |
and to the registry using its *vreg* attribute. |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
195 |
|
110
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
196 |
Details of the recording process |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
197 |
-------------------------------- |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
198 |
|
110
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
199 |
At startup, the `registry` or registers base, inspects a number of directories |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
200 |
looking for compatible classes definition. After a recording process, the objects |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
201 |
are assigned to registers so that they can be selected dynamically while the |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
202 |
application is running. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
203 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
204 |
The base class of those objects is `AppRsetObject` (module `cubicweb.common.appobject`). |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
205 |
|
110
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
206 |
XXX registers example |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
207 |
XXX actual details of the recording process! |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
208 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
209 |
Runtime objects selection |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
210 |
------------------------- |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
211 |
XXX tell why it's a cw foundation! |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
212 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
213 |
Application objects are stored in the registry using a two level hierarchy : |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
214 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
215 |
object's `__registry__` : object's `id` : [list of app objects] |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
216 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
217 |
The following rules are applied to select an object given a register and an id and an input context: |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
218 |
* each object has a selector |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
219 |
- its selector may be derivated from a set of basic (or not :) |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
220 |
selectors using `chainall` or `chainfirst` combinators |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
221 |
* a selector return a score >= 0 |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
222 |
* a score of 0 means the objects can't be applied to the input context |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
223 |
* the object with the greatest score is selected. If multiple objects have an |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
224 |
identical score, one of them is selected randomly (this is usually a bug) |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
225 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
226 |
The object's selector is the `__selector__` class method on the object's class. |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
227 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
228 |
The score is used to choose the most pertinent objects where there are more than |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
229 |
one selectable object. For instance, if you're selecting the primary |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
230 |
(eg `id = 'primary'`) view (eg `__registry__ = 'view'`) for a result set containing |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
231 |
a `Card` entity, 2 objects will probably be selectable: |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
232 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
233 |
* the default primary view (`accepts = 'Any'`) |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
234 |
* the specific `Card` primary view (`accepts = 'Card'`) |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
235 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
236 |
This is because primary views are using the `accept_selector` which is considering the |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
237 |
`accepts` class attribute of the object's class. Other primary views specific to other |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
238 |
entity types won't be selectable in this case. And among selectable objects, the |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
239 |
accept selector will return a higher score the the second view since it's more |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
240 |
specific, so it will be selected as expected. |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
241 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
242 |
Usually, you won't define it directly but by defining the `__selectors__` tuple |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
243 |
on the class, with :: |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
244 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
245 |
__selectors__ = (sel1, sel2) |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
246 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
247 |
which is equivalent to :: |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
248 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
249 |
__selector__ = chainall(sel1, sel2) |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
250 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
251 |
The former is prefered since it's shorter and it's ease overriding in |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
252 |
subclasses (you have access to sub-selectors instead of the wrapping function). |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
253 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
254 |
:chainall(selectors...): if one selector return 0, return 0, else return the sum of scores |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
255 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
256 |
:chainfirst(selectors...): return the score of the first selector which has a non zero score |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
257 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
258 |
XXX describe standard selector (link to generated api doc!) |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
259 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
260 |
Example |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
261 |
~~~~~~~ |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
262 |
Le but final : quand on est sur un Blog, on veut que le lien rss de celui-ci pointe |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
263 |
vers les entrées de ce blog, non vers l'entité blog elle-même. |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
264 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
265 |
L'idée générale pour résoudre ça : on définit une méthode sur les classes d'entité |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
266 |
qui renvoie l'url du flux rss pour l'entité en question. Avec une implémentation |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
267 |
par défaut sur AnyEntity et une implémentation particulière sur Blog qui fera ce |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
268 |
qu'on veut. |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
269 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
270 |
La limitation : on est embêté dans le cas ou par ex. on a un result set qui contient |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
271 |
plusieurs entités Blog (ou autre chose), car on ne sait pas sur quelle entité appeler |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
272 |
la méthode sus-citée. Dans ce cas, on va conserver le comportement actuel (eg appel |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
273 |
à limited_rql) |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
274 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
275 |
Donc : on veut deux cas ici, l'un pour un rset qui contient une et une seule entité, |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
276 |
l'autre pour un rset qui contient plusieurs entité. |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
277 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
278 |
Donc... On a déja dans web/views/boxes.py la classe RSSIconBox qui fonctionne. Son |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
279 |
sélecteur :: |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
280 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
281 |
class RSSIconBox(ExtResourcesBoxTemplate): |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
282 |
"""just display the RSS icon on uniform result set""" |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
283 |
__selectors__ = ExtResourcesBoxTemplate.__selectors__ + (nfentity_selector,) |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
284 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
285 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
286 |
indique qu'il prend en compte : |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
287 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
288 |
* les conditions d'apparition de la boite (faut remonter dans les classes parentes |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
289 |
pour voir le détail) |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
290 |
* nfentity_selector, qui filtre sur des rset contenant une liste d'entité non finale |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
291 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
292 |
ça correspond donc à notre 2eme cas. Reste à fournir un composant plus spécifique |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
293 |
pour le 1er cas :: |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
294 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
295 |
class EntityRSSIconBox(RSSIconBox): |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
296 |
"""just display the RSS icon on uniform result set for a single entity""" |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
297 |
__selectors__ = RSSIconBox.__selectors__ + (onelinerset_selector,) |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
298 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
299 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
300 |
Ici, on ajoute onelinerset_selector, qui filtre sur des rset de taille 1. Il faut |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
301 |
savoir que quand on chaine des selecteurs, le score final est la somme des scores |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
302 |
renvoyés par chaque sélecteur (sauf si l'un renvoie zéro, auquel cas l'objet est |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
303 |
non sélectionnable). Donc ici, sur un rset avec plusieurs entités, onelinerset_selector |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
304 |
rendra la classe EntityRSSIconBox non sélectionnable, et on obtiendra bien la |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
305 |
classe RSSIconBox. Pour un rset avec une entité, la classe EntityRSSIconBox aura un |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
306 |
score supérieur à RSSIconBox et c'est donc bien elle qui sera sélectionnée. |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
307 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
308 |
Voili voilou, il reste donc pour finir tout ça : |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
309 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
310 |
* à définir le contenu de la méthode call de EntityRSSIconBox |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
311 |
* fournir l'implémentation par défaut de la méthode renvoyant l'url du flux rss sur |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
312 |
AnyEntity |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
313 |
* surcharger cette methode dans blog.Blog |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
314 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
315 |
When to use selectors? |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
316 |
~~~~~~~~~~~~~~~~~~~~~~ |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
317 |
Il faut utiliser les sélecteurs pour faire des choses différentes en |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
318 |
fonction de ce qu'on a en entrée. Dès qu'on a un "if" qui teste la |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
319 |
nature de `self.rset` dans un objet, il faut très sérieusement se |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
320 |
poser la question s'il ne vaut pas mieux avoir deux objets différent |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
321 |
avec des sélecteurs approprié. |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
322 |
|
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
323 |
If this is so fundamental, why don't I see them more often? |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
324 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
325 |
Because you're usually using base classes which are hiding the plumbing |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
326 |
of __registry__ (almost always), id (often when using "standard" object), |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
327 |
register and selector. |
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
328 |
|
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
329 |
API Python/RQL |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
330 |
-------------- |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
331 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
332 |
Inspired from the standard db-api, with a Connection object having the methods |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
333 |
cursor, rollback and commit essentially. The most important method is |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
334 |
the `execute` method of a cursor : |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
335 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
336 |
`execute(rqlstring, args=None, eid_key=None, build_descr=True)` |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
337 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
338 |
:rqlstring: the RQL query to execute (unicode) |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
339 |
:args: if the query contains substitutions, a dictionnary containing the values to use |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
340 |
:eid_key: |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
341 |
an implementation detail of the RQL queries cache implies that if a substitution |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
342 |
is used to introduce an eid *susceptible to raise the ambiguities in the query |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
343 |
type resolution*, then we have to specify the correponding key in the dictionnary |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
344 |
through this argument |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
345 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
346 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
347 |
The `Connection` object owns the methods `commit` and `rollback`. You *should |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
348 |
never need to use them* during the development of the web interface based on |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
349 |
the `CubicWeb` framework as it determines the end of the transaction depending |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
350 |
on the query execution success. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
351 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
352 |
.. note:: |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
353 |
While executing updates queries (SET, INSERT, DELETE), if a query generates |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
354 |
an error related to security, a rollback is automatically done on the current |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
355 |
transaction. |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
356 |
|
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
357 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
358 |
The `Request` class (`cubicweb.web`) |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
359 |
------------------------------------ |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
360 |
|
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
361 |
A request instance is created when an HTPP request is sent to the web server. |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
362 |
It contains informations such as forms parameters, user authenticated, etc. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
363 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
364 |
**Globally, a request represents a user query, either through HTTP or not |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
365 |
(we also talk about RQL queries on the server side by example)** |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
366 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
367 |
An instance of `Request` has the following attributes: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
368 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
369 |
* `user`, instance of `cubicweb.common.utils.User` corresponding to the authenticated |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
370 |
user |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
371 |
* `form`, dictionnary containing the values of a web form |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
372 |
* `encoding`, characters encoding to use in the response |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
373 |
|
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
374 |
But also: |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
375 |
|
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
376 |
:Session data handling: |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
377 |
* `session_data()`, returns a dictinnary containing all the session data |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
378 |
* `get_session_data(key, default=None)`, returns a value associated to the given |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
379 |
key or the value `default` if the key is not defined |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
380 |
* `set_session_data(key, value)`, assign a value to a key |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
381 |
* `del_session_data(key)`, suppress the value associated to a key |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
382 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
383 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
384 |
:Cookies handling: |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
385 |
* `get_cookie()`, returns a dictionnary containing the value of the header |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
386 |
HTTP 'Cookie' |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
387 |
* `set_cookie(cookie, key, maxage=300)`, adds a header HTTP `Set-Cookie`, |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
388 |
with a minimal 5 minutes length of duration by default (`maxage` = None |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
389 |
returns a *session* cookie which will expire when the user closes the browser |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
390 |
window |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
391 |
* `remove_cookie(cookie, key)`, forces a value to expire |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
392 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
393 |
:URL handling: |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
394 |
* `url()`, returns the full URL of the HTTP request |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
395 |
* `base_url()`, returns the root URL of the web application |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
396 |
* `relative_path()`, returns the relative path of the request |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
397 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
398 |
:And more...: |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
399 |
* `set_content_type(content_type, filename=None)`, adds the header HTTP |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
400 |
'Content-Type' |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
401 |
* `get_header(header)`, returns the value associated to an arbitrary header |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
402 |
of the HTTP request |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
403 |
* `set_header(header, value)`, adds an arbitrary header in the response |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
404 |
* `cursor()` returns a RQL cursor on the session |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
405 |
* `execute(*args, **kwargs)`, shortcut to ``.cursor().execute()`` |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
406 |
* `property_value(key)`, properties management (`EProperty`) |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
407 |
* dictionnary `data` to store data to share informations between components |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
408 |
*while a request is executed* |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
409 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
410 |
Please note down that this class is abstract and that a concrete implementation |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
411 |
will be provided by the *frontend* web used (in particular *twisted* as of |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
412 |
today). For the views or others that are executed on the server side, |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
413 |
most of the interface of `Request` is defined in the session associated |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
414 |
to the client. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
415 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
416 |
The `AppObject` class |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
417 |
--------------------- |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
418 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
419 |
In general: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
420 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
421 |
* we do not inherit directly from this class but from a more specific |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
422 |
class such as `AnyEntity`, `EntityView`, `AnyRsetView`, |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
423 |
`Action`... |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
424 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
425 |
* to be recordable, a subclass has to define its own register (attribute |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
426 |
`__registry__`) and its identifier (attribute `id`). Usually we do not have |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
427 |
to take care of the register, only the identifier `id`. |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
428 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
429 |
We can find a certain number of attributes and methods defined in this class |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
430 |
and so common to all the application objects: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
431 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
432 |
At the recording, the following attributes are dynamically added to |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
433 |
the *subclasses*: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
434 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
435 |
* `vreg`, the `vregistry` of the application |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
436 |
* `schema`, the application schema |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
437 |
* `config`, the application configuration |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
438 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
439 |
We also find on instances, the following attributes: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
440 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
441 |
* `req`, `Request` instance |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
442 |
* `rset`, the *result set* associated to the object if necessarry |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
443 |
* `cursor`, rql cursor on the session |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
444 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
445 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
446 |
:URL handling: |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
447 |
* `build_url(method=None, **kwargs)`, returns an absolute URL based on |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
448 |
the given arguments. The *controller* supposed to handle the response |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
449 |
can be specified through the special parameter `method` (the connection |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
450 |
is theoretically done automatically :). |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
451 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
452 |
* `datadir_url()`, returns the directory of the application data |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
453 |
(contains static files such as images, css, js...) |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
454 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
455 |
* `base_url()`, shortcut to `req.base_url()` |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
456 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
457 |
* `url_quote(value)`, version *unicode safe* of the function `urllib.quote` |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
458 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
459 |
:Data manipulation: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
460 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
461 |
* `etype_rset(etype, size=1)`, shortcut to `vreg.etype_rset()` |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
462 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
463 |
* `eid_rset(eid, rql=None, descr=True)`, returns a *result set* object for |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
464 |
the given eid |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
465 |
* `entity(row, col=0)`, returns the entity corresponding to the data position |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
466 |
in the *result set* associated to the object |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
467 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
468 |
* `complete_entity(row, col=0, skip_bytes=True)`, is equivalent to `entity` but |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
469 |
also call the method `complete()` on the entity before returning it |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
470 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
471 |
:Data formatting: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
472 |
* `format_date(date, date_format=None, time=False)` |
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
473 |
* `format_time(time)` |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
474 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
475 |
:And more...: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
476 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
477 |
* `external_resource(rid, default=_MARKER)`, access to a value defined in the |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
478 |
configuration file `external_resource` |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
479 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
480 |
* `tal_render(template, variables)`, |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
481 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
482 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
483 |
.. note:: |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
484 |
When we inherit from `AppObject` (even not directly), you *always* have to use |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
485 |
**super()** to get the methods and attributes of the superclasses, and not |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
486 |
use the class identifier. |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
487 |
By example, instead of writting: :: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
488 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
489 |
class Truc(PrimaryView): |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
490 |
def f(self, arg1): |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
491 |
PrimaryView.f(self, arg1) |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
492 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
493 |
You'd better write: :: |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
494 |
|
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
495 |
class Truc(PrimaryView): |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
496 |
def f(self, arg1): |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
497 |
super(Truc, self).f(arg1) |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
498 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
499 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
500 |
Standard structure for a cube |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
501 |
----------------------------- |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
502 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
503 |
A complex cube is structured as follows: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
504 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
505 |
:: |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
506 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
507 |
mycube/ |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
508 |
| |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
509 |
|-- schema.py |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
510 |
| |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
511 |
|-- entities/ |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
512 |
| |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
513 |
|-- sobjects/ |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
514 |
| |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
515 |
|-- views/ |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
516 |
| |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
517 |
|-- test/ |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
518 |
| |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
519 |
|-- i18n/ |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
520 |
| |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
521 |
|-- data/ |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
522 |
| |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
523 |
|-- migration/ |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
524 |
| |- postcreate.py |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
525 |
| \- depends.map |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
526 |
| |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
527 |
|-- debian/ |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
528 |
| |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
529 |
\-- __pkginfo__.py |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
530 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
531 |
We can use simple Python module instead of packages, by example: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
532 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
533 |
:: |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
534 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
535 |
mycube/ |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
536 |
| |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
537 |
|-- entities.py |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
538 |
|-- hooks.py |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
539 |
\-- views.py |
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
540 |
|
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
541 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
542 |
where : |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
543 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
544 |
* ``schema`` contains the schema definition (server side only) |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
545 |
* ``entities`` contains the entities definition (server side and web interface) |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
546 |
* ``sobjects`` contains hooks and/or views notifications (server side only) |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
547 |
* ``views`` contains the different components of the web interface (web interface only) |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
548 |
* ``test`` contains tests specifics to the application (not installed) |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
549 |
* ``i18n`` contains the messages catalog for supported languages (server side and |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
550 |
web interface) |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
551 |
* ``data`` contains arbitrary data files served statically |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
552 |
(images, css, javascripts files)... (web interface only) |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
553 |
* ``migration`` contains the initialization file for new instances |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
554 |
(``postcreate.py``) and in general a file containing the `CubicWeb` dependancies |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
555 |
of the cube depending on its version (``depends.map``) |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
556 |
* ``debian`` contains all the files that manages the debian packaging |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
557 |
(you would find there the classical structure with ``control``, ``rules``, |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
558 |
``changelog``... (not installed) |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
559 |
* the file ``__pkginfo__.py`` provides meta-data on the cube, especially the |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
560 |
distribution name and the current version (server side and web interface) or |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
561 |
also the sub-cubes used by this cube |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
562 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
563 |
The only required files are: |
93
9c919a47e140
[doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
564 |
|
96
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
565 |
* the file ``__pkginfo__.py`` |
c1d04b2fa8c6
Add missing images.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
93
diff
changeset
|
566 |
* the schema definition |
110
d3005cdc968f
add detailled notes about objects selection (to be translated / proprified...)
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
96
diff
changeset
|
567 |
XXX false, we may want to have cubes which are only adding a service, no persistent data (eg embeding for instance) |