doc/book/annexes/faq.rst
author Sylvain Thénault <sylvain.thenault@logilab.fr>
Thu, 28 Jan 2016 18:17:30 +0100
changeset 11090 b4b854c25de5
parent 10496 e95b559a06a2
child 12792 e2cdb1be6bd9
permissions -rw-r--r--
[repository] set .eid on eschema when schema is loaded from the filesystem enforcing the contract that a repository's schema should have .eid attribute of entity schema set to the eid of the entity used to serialize them in the db. Before this cset, this was not true during tests or for some c-c commands where 'quick_start' is set (eg db-restore, i18ncube...). The change in server __init__ makes this assumption true during instance creation: the serializing code was actually setting eid on schema object, but a reference to a previously built schema was given instead of the one for the latest created repository. Closes #10450092
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
     3
Frequently Asked Questions (FAQ)
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
     4
================================
116
e2303f9b5bfa [doc] more merging and reorg
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 113
diff changeset
     5
310
cdd2b1247c50 [doc] add links to google-appengine forum
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 306
diff changeset
     6
5228
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
     7
Generalities
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
     8
````````````
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
     9
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    10
Why do you use the LGPL license to prevent me from doing X ?
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    11
------------------------------------------------------------
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    12
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    13
LGPL means that *if* you redistribute your application, you need to
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    14
redistribute the changes you made to CubicWeb under the LGPL licence.
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    15
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    16
Publishing a web site has nothing to do with redistributing source
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    17
code according to the terms of the LGPL. A fair amount of companies
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    18
use modified LGPL code for internal use. And someone could publish a
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    19
*CubicWeb* component under a BSD licence for others to plug into a
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    20
LGPL framework without any problem. The only thing we are trying to
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    21
prevent here is someone taking the framework and packaging it as
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    22
closed source to his own clients.
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    23
1715
sylvain.thenault@logilab.fr
parents: 1599 1714
diff changeset
    24
Why does not CubicWeb have a template language ?
sylvain.thenault@logilab.fr
parents: 1599 1714
diff changeset
    25
------------------------------------------------
116
e2303f9b5bfa [doc] more merging and reorg
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 113
diff changeset
    26
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    27
There are enough template languages out there. You can use your
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    28
preferred template language if you want. [explain how to use a
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    29
template language]
116
e2303f9b5bfa [doc] more merging and reorg
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 113
diff changeset
    30
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    31
*CubicWeb* does not define its own templating language as this was
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    32
not our goal. Based on our experience, we realized that
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    33
we could gain productivity by letting designers use design tools
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    34
and developpers develop without the use of the templating language
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    35
as an intermediary that could not be anyway efficient for both parties.
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    36
Python is the templating language that we use in *CubicWeb*, but again,
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    37
it does not prevent you from using a templating language.
337
eb329d0db467 [doc] FAQ improvements based on posts in forums.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 335
diff changeset
    38
5156
0ec436cba1a6 [doc/book] add q/a on i18n customisation, misc tweaks
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4936
diff changeset
    39
Moreover, CubicWeb currently supports `simpletal`_ out of the box and
0ec436cba1a6 [doc/book] add q/a on i18n customisation, misc tweaks
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4936
diff changeset
    40
it is also possible to use the `cwtags`_ library to build html trees
0ec436cba1a6 [doc/book] add q/a on i18n customisation, misc tweaks
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4936
diff changeset
    41
using the `with statement`_ with more comfort than raw strings.
0ec436cba1a6 [doc/book] add q/a on i18n customisation, misc tweaks
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4936
diff changeset
    42
0ec436cba1a6 [doc/book] add q/a on i18n customisation, misc tweaks
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4936
diff changeset
    43
.. _`simpletal`: http://www.owlfish.com/software/simpleTAL/
0ec436cba1a6 [doc/book] add q/a on i18n customisation, misc tweaks
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4936
diff changeset
    44
.. _`cwtags`: http://www.cubicweb.org/project/cwtags
0ec436cba1a6 [doc/book] add q/a on i18n customisation, misc tweaks
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4936
diff changeset
    45
.. _`with statement`: http://www.python.org/dev/peps/pep-0343/
116
e2303f9b5bfa [doc] more merging and reorg
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 113
diff changeset
    46
1715
sylvain.thenault@logilab.fr
parents: 1599 1714
diff changeset
    47
Why do you think using pure python is better than using a template language ?
sylvain.thenault@logilab.fr
parents: 1599 1714
diff changeset
    48
-----------------------------------------------------------------------------
116
e2303f9b5bfa [doc] more merging and reorg
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 113
diff changeset
    49
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    50
Python is an Object Oriented Programming language and as such it
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    51
already provides a consistent and strong architecture and syntax
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    52
a templating language would not reach.
345
31f88b2e3500 more translation and complements
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 344
diff changeset
    53
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    54
Using Python instead of a template langage for describing the user interface
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    55
makes it to maintain with real functions/classes/contexts without the need of
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    56
learning a new dialect. By using Python, we use standard OOP techniques and
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    57
this is a key factor in a robust application.
116
e2303f9b5bfa [doc] more merging and reorg
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 113
diff changeset
    58
1715
sylvain.thenault@logilab.fr
parents: 1599 1714
diff changeset
    59
CubicWeb looks pretty recent. Is it stable ?
sylvain.thenault@logilab.fr
parents: 1599 1714
diff changeset
    60
--------------------------------------------
116
e2303f9b5bfa [doc] more merging and reorg
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 113
diff changeset
    61
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    62
It is constantly evolving, piece by piece.  The framework has evolved since
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    63
2001 and data has been migrated from one schema to the other ever since. There
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    64
is a well-defined way to handle data and schema migration.
93
9c919a47e140 [doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff changeset
    65
5228
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    66
You can see the roadmap there:
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    67
http://www.cubicweb.org/project/cubicweb?tab=projectroadmap_tab.
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    68
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    69
1715
sylvain.thenault@logilab.fr
parents: 1599 1714
diff changeset
    70
Why is the RQL query language looking similar to X ?
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
    71
----------------------------------------------------
116
e2303f9b5bfa [doc] more merging and reorg
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 113
diff changeset
    72
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    73
It may remind you of SQL but it is higher level than SQL, more like
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    74
SPARQL. Except that SPARQL did not exist when we started the project.
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    75
With version 3.4, CubicWeb has support for SPARQL.
337
eb329d0db467 [doc] FAQ improvements based on posts in forums.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 335
diff changeset
    76
5156
0ec436cba1a6 [doc/book] add q/a on i18n customisation, misc tweaks
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4936
diff changeset
    77
The RQL language is what is going to make a difference with django-
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    78
like frameworks for several reasons.
337
eb329d0db467 [doc] FAQ improvements based on posts in forums.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 335
diff changeset
    79
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    80
1. accessing data is *much* easier with it. One can write complex
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    81
   queries with RQL that would be tedious to define and hard to maintain
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    82
   using an object/filter suite of method calls.
337
eb329d0db467 [doc] FAQ improvements based on posts in forums.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 335
diff changeset
    83
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    84
2. it offers an abstraction layer allowing your applications to run
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
    85
   on multiple back-ends. That means not only various SQL backends
10221
17ad882a211f [doc] Don't pretend we know cubicweb runs on mysql
Julien Cristau <julien.cristau@logilab.fr>
parents: 10067
diff changeset
    86
   (postgresql, sqlite, sqlserver, mysql), but also non-SQL data stores like
17ad882a211f [doc] Don't pretend we know cubicweb runs on mysql
Julien Cristau <julien.cristau@logilab.fr>
parents: 10067
diff changeset
    87
   LDAP directories and subversion/mercurial repositories (see the `vcsfile`
17ad882a211f [doc] Don't pretend we know cubicweb runs on mysql
Julien Cristau <julien.cristau@logilab.fr>
parents: 10067
diff changeset
    88
   component).
337
eb329d0db467 [doc] FAQ improvements based on posts in forums.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 335
diff changeset
    89
4748
135329e51713 [book/faq] cleanup & complete a bit
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 2547
diff changeset
    90
Which ajax library is CubicWeb using ?
2173
7fae9300b9f9 [doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2172
diff changeset
    91
--------------------------------------
7fae9300b9f9 [doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2172
diff changeset
    92
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
    93
CubicWeb uses jQuery_ and provides a few helpers on top of that. Additionally,
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
    94
some jQuery plugins are provided (some are provided in specific cubes).
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
    95
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
    96
.. _jQuery: http://jquery.com
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
    97
1678
67162cb05b4b [doc] Add FAQ entries based on answers from forum.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 1677
diff changeset
    98
5228
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
    99
Development
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   100
```````````
1678
67162cb05b4b [doc] Add FAQ entries based on answers from forum.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 1677
diff changeset
   101
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   102
How to change the instance logo ?
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   103
---------------------------------
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   104
10379
a1cc6788e9de [doc] how to change logo using css
Rabah Meradi <rabah.meradi@logilab.fr>
parents: 10067
diff changeset
   105
The logo is managed by css. You must provide a custom css that will contain
a1cc6788e9de [doc] how to change logo using css
Rabah Meradi <rabah.meradi@logilab.fr>
parents: 10067
diff changeset
   106
the code below: 
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   107
10379
a1cc6788e9de [doc] how to change logo using css
Rabah Meradi <rabah.meradi@logilab.fr>
parents: 10067
diff changeset
   108
::
a1cc6788e9de [doc] how to change logo using css
Rabah Meradi <rabah.meradi@logilab.fr>
parents: 10067
diff changeset
   109
   
a1cc6788e9de [doc] how to change logo using css
Rabah Meradi <rabah.meradi@logilab.fr>
parents: 10067
diff changeset
   110
     #logo {
a1cc6788e9de [doc] how to change logo using css
Rabah Meradi <rabah.meradi@logilab.fr>
parents: 10067
diff changeset
   111
        background-image: url("logo.jpg");
a1cc6788e9de [doc] how to change logo using css
Rabah Meradi <rabah.meradi@logilab.fr>
parents: 10067
diff changeset
   112
     }
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   113
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   114
10379
a1cc6788e9de [doc] how to change logo using css
Rabah Meradi <rabah.meradi@logilab.fr>
parents: 10067
diff changeset
   115
``logo.jpg`` is in ``mycube/data`` directory.
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   116
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   117
How to create an anonymous user ?
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   118
---------------------------------
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   119
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   120
This allows to browse the site without being authenticated. In the
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   121
``all-in-one.conf`` file of your instance, define the anonymous user
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   122
as follows ::
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   123
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   124
  # login of the CubicWeb user account to use for anonymous user (if you want to
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   125
  # allow anonymous)
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   126
  anonymous-user=anon
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   127
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   128
  # password of the CubicWeb user account matching login
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   129
  anonymous-password=anon
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   130
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   131
You also must ensure that this `anon` user is a registered user of
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   132
the DB backend. If not, you can create through the administation
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   133
interface of your instance by adding a user with in the group `guests`.
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   134
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   135
.. note::
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   136
    While creating a new instance, you can decide to allow access
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   137
    to anonymous user, which will automatically execute what is
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   138
    decribed above.
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   139
1678
67162cb05b4b [doc] Add FAQ entries based on answers from forum.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 1677
diff changeset
   140
5228
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   141
How to format an entity date attribute ?
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   142
----------------------------------------
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
   143
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   144
If your schema has an attribute of type `Date` or `Datetime`, you usually want to
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   145
format it when displaying it. First, you should define your preferred format
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   146
using the site configuration panel
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   147
``http://appurl/view?vid=systempropertiesform`` and then set ``ui.date`` and/or
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   148
``ui.datetime``.  Then in the view code, use:
4748
135329e51713 [book/faq] cleanup & complete a bit
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 2547
diff changeset
   149
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
   150
.. sourcecode:: python
1678
67162cb05b4b [doc] Add FAQ entries based on answers from forum.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 1677
diff changeset
   151
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   152
    entity.printable_value(date_attribute)
5228
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   153
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   154
which will always return a string whatever the attribute's type (so it's
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   155
recommended also for other attribute types). By default it expects to generate
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   156
HTML, so it deals with rich text formating, xml escaping...
5228
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   157
2173
7fae9300b9f9 [doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2172
diff changeset
   158
How to update a database after a schema modification ?
7fae9300b9f9 [doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2172
diff changeset
   159
------------------------------------------------------
345
31f88b2e3500 more translation and complements
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 344
diff changeset
   160
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
   161
It depends on what has been modified in the schema.
93
9c919a47e140 [doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff changeset
   162
5156
0ec436cba1a6 [doc/book] add q/a on i18n customisation, misc tweaks
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4936
diff changeset
   163
* update the permissions and properties of an entity or a relation:
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
   164
  ``sync_schema_props_perms('MyEntityOrRelation')``.
1350
31e4c8d30e5d [doc] Adds how to add attribute in DB.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 1348
diff changeset
   165
5156
0ec436cba1a6 [doc/book] add q/a on i18n customisation, misc tweaks
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4936
diff changeset
   166
* add an attribute: ``add_attribute('MyEntityType', 'myattr')``.
1350
31e4c8d30e5d [doc] Adds how to add attribute in DB.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 1348
diff changeset
   167
5156
0ec436cba1a6 [doc/book] add q/a on i18n customisation, misc tweaks
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4936
diff changeset
   168
* add a relation: ``add_relation_definition('SubjRelation', 'MyRelation', 'ObjRelation')``.
93
9c919a47e140 [doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff changeset
   169
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   170
I get `NoSelectableObject` exceptions, how do I debug selectors ?
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   171
-----------------------------------------------------------------
93
9c919a47e140 [doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff changeset
   172
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   173
You just need to put the appropriate context manager around view/component
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   174
selection. One standard place for components is in cubicweb/vregistry.py: 
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   175
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   176
.. sourcecode:: python
345
31f88b2e3500 more translation and complements
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 344
diff changeset
   177
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   178
    def possible_objects(self, *args, **kwargs):
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   179
        """return an iterator on possible objects in this registry for the given
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   180
        context
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   181
        """
8190
2a3c1b787688 [vreg] move base registry implementation to logilab.common. Closes #1916014
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 8032
diff changeset
   182
        from logilab.common.registry import traced_selection
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   183
        with traced_selection():
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   184
            for appobjects in self.itervalues():
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   185
                try:
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   186
                    yield self._select_best(appobjects, *args, **kwargs)
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   187
                except NoSelectableObject:
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   188
                    continue
345
31f88b2e3500 more translation and complements
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 344
diff changeset
   189
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   190
This will yield additional WARNINGs, like this::
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   191
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   192
    2009-01-09 16:43:52 - (cubicweb.selectors) WARNING: selector one_line_rset returned 0 for <class 'cubicweb.web.views.basecomponents.WFHistoryVComponent'>
93
9c919a47e140 [doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff changeset
   193
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   194
For views, you can put this context in `cubicweb/web/views/basecontrollers.py` in
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   195
the `ViewController`:
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   196
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   197
.. sourcecode:: python
93
9c919a47e140 [doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff changeset
   198
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   199
    def _select_view_and_rset(self, rset):
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   200
        ...
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   201
        try:
8190
2a3c1b787688 [vreg] move base registry implementation to logilab.common. Closes #1916014
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 8032
diff changeset
   202
            from logilab.common.registry import traced_selection
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   203
            with traced_selection():
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   204
                view = self._cw.vreg['views'].select(vid, req, rset=rset)
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   205
        except ObjectNotFound:
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   206
            self.warning("the view %s could not be found", vid)
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   207
            req.set_message(req._("The view %s could not be found") % vid)
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   208
            vid = vid_from_rset(req, rset, self._cw.vreg.schema)
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   209
            view = self._cw.vreg['views'].select(vid, req, rset=rset)
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   210
        ...
93
9c919a47e140 [doc] total file reorganisation - phase 1 complete
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff changeset
   211
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   212
I get "database is locked" when executing tests
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   213
-----------------------------------------------
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   214
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   215
If you have "database is locked" as error when you are executing security tests,
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   216
it is usually because commit or rollback are missing before login() calls.
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   217
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   218
You can also use a context manager, to avoid such errors, as described
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   219
here: :ref:`securitytest`.
1348
28bb9efe0cc8 [doc] Add information on anonymous user configuration.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 1191
diff changeset
   220
199
c603087373cd [doc] Inserted content from LAX book about templates.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 127
diff changeset
   221
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   222
What are hooks used for ?
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   223
-------------------------
345
31f88b2e3500 more translation and complements
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 344
diff changeset
   224
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   225
Hooks are executed around (actually before or after) events.  The most common
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   226
events are data creation, update and deletion.  They permit additional constraint
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   227
checking (those not expressible at the schema level), pre and post computations
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   228
depending on data movements.
199
c603087373cd [doc] Inserted content from LAX book about templates.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 127
diff changeset
   229
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   230
As such, they are a vital part of the framework.
116
e2303f9b5bfa [doc] more merging and reorg
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 113
diff changeset
   231
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   232
Other kinds of hooks, called Operations, are available
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   233
for execution just before commit.
345
31f88b2e3500 more translation and complements
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 344
diff changeset
   234
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   235
For more information, read :ref:`hooks` section.
199
c603087373cd [doc] Inserted content from LAX book about templates.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 127
diff changeset
   236
c603087373cd [doc] Inserted content from LAX book about templates.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 127
diff changeset
   237
5228
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   238
Configuration
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   239
`````````````
1808
aa09e20dd8c0 backport tls-sprint
sylvain.thenault@logilab.fr
parents: 1678 1715
diff changeset
   240
2173
7fae9300b9f9 [doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2172
diff changeset
   241
How to configure a LDAP source ?
7fae9300b9f9 [doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2172
diff changeset
   242
--------------------------------
335
643db91242b1 [doc] Integration of card http://intranet.logilab.fr/intra/card/eid/3355 to the book.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 317
diff changeset
   243
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   244
See :ref:`LDAP`.
4748
135329e51713 [book/faq] cleanup & complete a bit
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 2547
diff changeset
   245
5393
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   246
How to import LDAP users in |cubicweb| ?
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   247
----------------------------------------
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   248
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   249
  Here is a useful script which enables you to import LDAP users
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   250
  into your *CubicWeb* instance by running the following:
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   251
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   252
.. sourcecode:: python
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   253
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   254
    import os
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   255
    import pwd
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   256
    import sys
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   257
5924
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   258
    from logilab.database import get_connection
5393
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   259
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   260
    def getlogin():
5924
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   261
        """avoid using os.getlogin() because of strange tty/stdin problems
5393
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   262
        (man 3 getlogin)
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   263
        Another solution would be to use $LOGNAME, $USER or $USERNAME
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   264
        """
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   265
        return pwd.getpwuid(os.getuid())[0]
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   266
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   267
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   268
    try:
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   269
        database = sys.argv[1]
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   270
    except IndexError:
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   271
        print 'USAGE: python ldap2system.py <database>'
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   272
        sys.exit(1)
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   273
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   274
    if raw_input('update %s db ? [y/n]: ' % database).strip().lower().startswith('y'):
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   275
        cnx = get_connection(user=getlogin(), database=database)
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   276
        cursor = cnx.cursor()
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   277
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   278
        insert = ('INSERT INTO euser (creation_date, eid, modification_date, login, '
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   279
                  ' firstname, surname, last_login_time, upassword) '
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   280
                  "VALUES (%(mtime)s, %(eid)s, %(mtime)s, %(login)s, %(firstname)s, "
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   281
                  "%(surname)s, %(mtime)s, './fqEz5LeZnT6');")
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   282
        update = "UPDATE entities SET source='system' WHERE eid=%(eid)s;"
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   283
        cursor.execute("SELECT eid,type,source,extid,mtime FROM entities WHERE source!='system'")
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   284
        for eid, type, source, extid, mtime in cursor.fetchall():
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   285
            if type != 'CWUser':
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   286
                print "don't know what to do with entity type", type
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   287
                continue
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   288
            if source != 'ldapuser':
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   289
                print "don't know what to do with source type", source
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   290
                continue
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   291
            ldapinfos = dict(x.strip().split('=') for x in extid.split(','))
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   292
            login = ldapinfos['uid']
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   293
            firstname = ldapinfos['uid'][0].upper()
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   294
            surname = ldapinfos['uid'][1:].capitalize()
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   295
            if login != 'jcuissinat':
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   296
                args = dict(eid=eid, type=type, source=source, login=login,
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   297
                            firstname=firstname, surname=surname, mtime=mtime)
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   298
                print args
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   299
                cursor.execute(insert, args)
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   300
                cursor.execute(update, args)
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   301
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   302
        cnx.commit()
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   303
        cnx.close()
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   304
875bdc0fe8ce [doc/book] hide most XXXs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5388
diff changeset
   305
5228
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   306
Security
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   307
````````
1890
108f3b6584b7 [doc] add faq about reseting password for some user
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1808
diff changeset
   308
2173
7fae9300b9f9 [doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2172
diff changeset
   309
How to reset the password for user joe ?
7fae9300b9f9 [doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2172
diff changeset
   310
----------------------------------------
1890
108f3b6584b7 [doc] add faq about reseting password for some user
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1808
diff changeset
   311
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
   312
If you want to reset the admin password for ``myinstance``, do::
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
   313
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
   314
    $ cubicweb-ctl reset-admin-pwd myinstance
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
   315
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
   316
You need to generate a new encrypted password::
1890
108f3b6584b7 [doc] add faq about reseting password for some user
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1808
diff changeset
   317
108f3b6584b7 [doc] add faq about reseting password for some user
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1808
diff changeset
   318
    $ python
108f3b6584b7 [doc] add faq about reseting password for some user
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1808
diff changeset
   319
    >>> from cubicweb.server.utils import crypt_password
108f3b6584b7 [doc] add faq about reseting password for some user
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1808
diff changeset
   320
    >>> crypt_password('joepass')
108f3b6584b7 [doc] add faq about reseting password for some user
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1808
diff changeset
   321
    'qHO8282QN5Utg'
2172
cf8f9180e63e delete-trailing-whitespace
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2041
diff changeset
   322
    >>>
1890
108f3b6584b7 [doc] add faq about reseting password for some user
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1808
diff changeset
   323
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
   324
and paste it in the database::
1890
108f3b6584b7 [doc] add faq about reseting password for some user
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1808
diff changeset
   325
108f3b6584b7 [doc] add faq about reseting password for some user
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1808
diff changeset
   326
    $ psql mydb
108f3b6584b7 [doc] add faq about reseting password for some user
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1808
diff changeset
   327
    mydb=> update cw_cwuser set cw_upassword='qHO8282QN5Utg' where cw_login='joe';
2041
296e897ab8e1 be more precise & helpful
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 1900
diff changeset
   328
    UPDATE 1
2316
234475d6ed7b added entry about bad user account
Arthur Lutz <arthur.lutz@logilab.fr>
parents: 2175
diff changeset
   329
6350
74575fb32a4d [book] updated FAQ 'How to reset the password for user joe' with SQL Server syntax
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents: 5924
diff changeset
   330
if you're running over SQL Server, you need to use the CONVERT
74575fb32a4d [book] updated FAQ 'How to reset the password for user joe' with SQL Server syntax
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents: 5924
diff changeset
   331
function to convert the string to varbinary(255). The SQL query is
74575fb32a4d [book] updated FAQ 'How to reset the password for user joe' with SQL Server syntax
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents: 5924
diff changeset
   332
therefore::
74575fb32a4d [book] updated FAQ 'How to reset the password for user joe' with SQL Server syntax
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents: 5924
diff changeset
   333
74575fb32a4d [book] updated FAQ 'How to reset the password for user joe' with SQL Server syntax
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents: 5924
diff changeset
   334
    update cw_cwuser set cw_upassword=CONVERT(varbinary(255), 'qHO8282QN5Utg') where cw_login='joe';
74575fb32a4d [book] updated FAQ 'How to reset the password for user joe' with SQL Server syntax
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents: 5924
diff changeset
   335
6352
2259d834d757 [book] note about different encryption on Unix and Windows
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents: 6350
diff changeset
   336
Be careful, the encryption algorithm is different on Windows and on
2259d834d757 [book] note about different encryption on Unix and Windows
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents: 6350
diff changeset
   337
Unix. You cannot therefore use a hash generated on Unix to fill in a
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   338
Windows database, nor the other way round.
6352
2259d834d757 [book] note about different encryption on Unix and Windows
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents: 6350
diff changeset
   339
2259d834d757 [book] note about different encryption on Unix and Windows
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents: 6350
diff changeset
   340
5924
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   341
You can prefer use a migration script similar to this shell invocation instead::
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   342
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   343
    $ cubicweb-ctl shell <instance>
7250
fe27390bf2f8 [book] fix documentation + add chpasswd.py script
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 6592
diff changeset
   344
    >>> from cubicweb import Binary
5924
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   345
    >>> from cubicweb.server.utils import crypt_password
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   346
    >>> crypted = crypt_password('joepass')
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   347
    >>> rset = rql('Any U WHERE U is CWUser, U login "joe"')
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   348
    >>> joe = rset.get_entity(0,0)
8483
4ba11607d84a [entity api] unify set_attributes / set_relations into a cw_set method. Closes #2423719
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 8190
diff changeset
   349
    >>> joe.cw_set(upassword=Binary(crypted))
7250
fe27390bf2f8 [book] fix documentation + add chpasswd.py script
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 6592
diff changeset
   350
fe27390bf2f8 [book] fix documentation + add chpasswd.py script
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 6592
diff changeset
   351
Please, refer to the script example is provided in the `misc/examples/chpasswd.py` file.
5924
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   352
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   353
The more experimented people would use RQL request directly::
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   354
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   355
    >>> rql('SET X upassword %(a)s WHERE X is CWUser, X login "joe"',
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   356
    ...     {'a': crypted})
b218df942dd4 [book] update rql documentation and some erroneous/deprecated examples
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5781
diff changeset
   357
2316
234475d6ed7b added entry about bad user account
Arthur Lutz <arthur.lutz@logilab.fr>
parents: 2175
diff changeset
   358
I've just created a user in a group and it doesn't work !
234475d6ed7b added entry about bad user account
Arthur Lutz <arthur.lutz@logilab.fr>
parents: 2175
diff changeset
   359
---------------------------------------------------------
234475d6ed7b added entry about bad user account
Arthur Lutz <arthur.lutz@logilab.fr>
parents: 2175
diff changeset
   360
234475d6ed7b added entry about bad user account
Arthur Lutz <arthur.lutz@logilab.fr>
parents: 2175
diff changeset
   361
You are probably getting errors such as ::
234475d6ed7b added entry about bad user account
Arthur Lutz <arthur.lutz@logilab.fr>
parents: 2175
diff changeset
   362
2547
f32af375339d [doc] fix FAQ layout
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2535
diff changeset
   363
  remove {'PR': 'Project', 'C': 'CWUser'} from solutions since your_user has no read access to cost
2316
234475d6ed7b added entry about bad user account
Arthur Lutz <arthur.lutz@logilab.fr>
parents: 2175
diff changeset
   364
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   365
This is because you have to put your user in the "users" group. The user has to
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   366
be in both groups.
5156
0ec436cba1a6 [doc/book] add q/a on i18n customisation, misc tweaks
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4936
diff changeset
   367
5228
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   368
How is security implemented ?
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   369
------------------------------
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   370
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   371
The basis for security is a mapping from operations to groups or
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   372
arbitrary RQL expressions. These mappings are scoped to entities and
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   373
relations.
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   374
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   375
This is an example for an Entity Type definition:
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   376
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   377
.. sourcecode:: python
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   378
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   379
    class Version(EntityType):
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   380
        """a version is defining the content of a particular project's
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   381
        release"""
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   382
        # definition of attributes is voluntarily missing
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   383
        __permissions__ = {'read': ('managers', 'users', 'guests',),
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   384
                           'update': ('managers', 'logilab', 'owners'),
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   385
                           'delete': ('managers',),
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   386
                           'add': ('managers', 'logilab',
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   387
                                   ERQLExpression('X version_of PROJ, U in_group G, '
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   388
                                                  'PROJ require_permission P, '
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   389
                                                  'P name "add_version", P require_group G'),)}
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   390
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   391
The above means that permission to read a Version is granted to any
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   392
user that is part of one of the groups 'managers', 'users', 'guests'.
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   393
The 'add' permission is granted to users in group 'managers' or
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   394
'logilab' or to users in group G, if G is linked by a permission
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   395
entity named "add_version" to the version's project.
5156
0ec436cba1a6 [doc/book] add q/a on i18n customisation, misc tweaks
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4936
diff changeset
   396
5228
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   397
An example for a Relation Definition (RelationType both defines a
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   398
relation type and implicitly one relation definition, on which the
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   399
permissions actually apply):
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   400
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   401
.. sourcecode:: python
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   402
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   403
    class version_of(RelationType):
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   404
        """link a version to its project. A version is necessarily linked
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   405
        to one and only one project. """
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   406
        # some lines voluntarily missing
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   407
        __permissions__ = {'read': ('managers', 'users', 'guests',),
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   408
                           'delete': ('managers', ),
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   409
                           'add': ('managers', 'logilab',
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   410
                                   RRQLExpression('O require_permission P, P name "add_version", '
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   411
                                                  'U in_group G, P require_group G'),) }
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   412
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   413
The main difference lies in the basic available operations (there is
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   414
no 'update' operation) and the usage of an RRQLExpression (rql
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   415
expression for a relation) instead of an ERQLExpression (rql
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   416
expression for an entity).
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   417
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   418
You can find additional information in the section :ref:`securitymodel`.
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   419
5781
a3e60e0fb0f3 [doc/book/faq] question on security
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5393
diff changeset
   420
Is it possible to bypass security from the UI (web front) part ?
a3e60e0fb0f3 [doc/book/faq] question on security
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5393
diff changeset
   421
----------------------------------------------------------------
a3e60e0fb0f3 [doc/book/faq] question on security
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5393
diff changeset
   422
6592
4dad0ec0a44f [book] FAQ: reorganize content, improve NoSelectableObject section, add database
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 6352
diff changeset
   423
No. Only Hooks/Operations can do that.
5781
a3e60e0fb0f3 [doc/book/faq] question on security
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5393
diff changeset
   424
5228
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   425
Can PostgreSQL and CubicWeb authentication work with kerberos ?
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   426
----------------------------------------------------------------
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   427
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   428
If you have PostgreSQL set up to accept kerberos authentication, you can set
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   429
the db-host, db-name and db-user parameters in the `sources` configuration
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   430
file while leaving the password blank. It should be enough for your
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   431
instance to connect to postgresql with a kerberos ticket.
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   432
369b8aff535b [doc/book] add sections to the FAQ, try to reorder stuff
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 5157
diff changeset
   433