Summary
-------

`person` provides person informations :

- firstname
- surname / lastname
- civility
- arbitrary text description
- a relation to an email address (NB, the `EmailAddress` entity is
  automatically provided by cubicweb).

If the `addressbook` cube is used, persons will also have *phone* and
*postal_address* relations to store more contact information.

There is a special relation called 'primary_email'. A person can be linked to
multiple email addresses (using the 'use_email' relation). The primary email
must be unique. At the creation of the first email, this relation is
automatically added (though you can change it later, of course).

Recommends
----------

- `addressbook` cube


Usage
-----

In addition of basic entity views, this cube provides :

- *VCardPersonView*, displays a person in the VCard file format
   (.. _VCard on wikipedia: http://en.wikipedia.org/wiki/VCard) .

   This view creates a file called `vcard.vcf` which can be open in
   your addressbook application (Kmail, Thunderbird and so on). In
   order to generate this file, you have to access to a specific view
   using an url address with `?vid=vcard` suffix.

   How to personalize the person primary view in order to add a link
   for the vcard ?

   .. sourcecode:: python

     class PersonalizedPersonPrimaryView(PersonPrimaryView):

         def render_entity_attributes(self, entity):
             super(PersonalizedPersonPrimaryView, self).render_entity_attributes(entity)
             self.w(u'<div><a href="%s">export contact as vcard</a></div>'  % entity.absolute_url(vid='vcard'))

    This view will not be selected by default. You have to registered
    this view or add a selector. For more information, please refer to
    XXX in the doc.

- a *civility facet*, this facet (XXX: ref to facet doc) will be shown
  if a view displays a result set of at least two Person entities with
  different civilities.
