collective.person provides a content type representing a Person.
Person: A content type representing a person
| name | title | description |
|---|---|---|
collective.person.person |
Person Behavior | Fields with basic person information |
collective.person.user |
Link Person to Plone User | Adapts a Person to link it to a Plone User |
collective.person.namefromusername |
Name from username | Use the username field as name (basis for the id) |
| id | title | Usage |
|---|---|---|
| collective.person.person.add | collective.person: Add Person | Control the creation of a new Person content item |
This package adds Indexes and Metadata to Portal Catalog.
| Content Attribute | Index Type | Metadata | Comment |
|---|---|---|---|
| roles | KeywordIndex | ✅ | -- |
| username | FieldIndex | ✅ | Used when collective.person.user behavior is enabled |
This package is being used by the following sites:
- TODO
Add collective.person as a dependency on your package's setup.py
install_requires = [
"Plone",
"plone.restapi",
"collective.person",
],Also, add collective.person to your package's configure.zcml (or dependencies.zcml):
<include package="collective.person" />To automatically enable this package when your add-on is installed, add the following line inside the package's profiles/default/metadata.xml dependencies element:
<dependency>profile-collective.person:default</dependency>We welcome contributions to collective.person.
You can create an issue in the issue tracker, or contact a maintainer.
You need a working Python environment version 3.8 or later.
Then install the dependencies and a development instance using:
make installBy default, we use the latest Plone version in the 6.x series.
make i18nmake formatmake lintmake testcollective.person provides two built-in strategies for generating the title of a Person object:
-
First and Last Name (
first_last): The title is generated using the template{first_name} {last_name}. Example:first_name="Douglas",last_name="Adams"→ Douglas Adams -
Last and First Name (
last_first): The title is generated using the template{last_name}, {first_name}. Example:first_name="Douglas",last_name="Adams"→ Adams, Douglas
You can select the preferred option in the Person control panel.
If the default options do not fit your needs, you can register a custom utility that implements the collective.person.interfaces.IPersonTitle interface.
For example, create a file called title_generator.py in your package:
from collective.person.content.person import Person
from collective.person.interfaces import IPersonTitle
from zope.interface import implementer
@implementer(IPersonTitle)
class MyTitleGenerator:
"""Return the title with a custom prefix."""
name: str = "My title generator"
def title(self, context: Person) -> str:
"""Return the title of the person."""
first_name = context.first_name
last_name = context.last_name or ""
return f"Human {first_name} {last_name}".strip()In your configure.zcml, add:
<utility
factory=".title_generator.MyTitleGenerator"
name="my_title_generator"
/>To make your generator the default after installation, update the registry via GenericSetup by adding a registry.xml file in your profile:
<?xml version="1.0" encoding="utf-8"?>
<registry>
<records
interface="collective.person.controlpanel.interfaces.IPersonSettings"
prefix="person">
<value key="title_utility" purge="false">my_title_generator</value>
</records>
</registry>The project is licensed under GPLv2.