doc/book/annexes/faq.rst
author Julien Cristau <julien.cristau@logilab.fr>
Mon, 30 Nov 2015 15:53:35 +0100
changeset 10936 c3606b52092c
parent 10496 e95b559a06a2
child 12792 e2cdb1be6bd9
permissions -rw-r--r--
[hooks] build EnsureSymmetricRelations{Add,Delete} dynamically Instead of setting the __select__ attribute at registration time, which confuses the filterable_selectors cache when running different tests (with different schemas) in the same process, just make entirely new classes. Closes #8785708.
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