Skip to main content

A Person content type for Plone.

Project description

logo

Person content type for Plone

PyPI PyPI - Python Version PyPI - Wheel PyPI - License PyPI - Status

PyPI - Plone Versions

CI

GitHub contributors GitHub Repo stars

Features

collective.person provides a content type representing a Person.

Content Types

  • Person: A content type representing a person

Behaviors

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)

Permissions

id title Usage
collective.person.person.add collective.person: Add Person Control the creation of a new Person content item

Catalog Indexes

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

See it in action

This package is being used by the following sites:

  • TODO

Documentation

Installation

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" />

Generic Setup

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>

Source Code and Contributions

We welcome contributions to collective.person.

You can create an issue in the issue tracker, or contact a maintainer.

Development setup

You need a working Python environment version 3.8 or later.

Then install the dependencies and a development instance using:

make install

By default, we use the latest Plone version in the 6.x series.

Update translations

make i18n

Format codebase

make format

Lint codebase

make lint

Run tests

make test

Extending collective.person

Customizing how the title is generated

collective.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.

Providing your own title generator

If the default options do not fit your needs, you can register a custom utility that implements the collective.person.interfaces.IPersonTitle interface.

Step 1: Create your generator

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()

Step 2: Register the utility

In your configure.zcml, add:

<utility
    factory=".title_generator.MyTitleGenerator"
    name="my_title_generator"
/>

Step 3: Activate your 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>

License

The project is licensed under GPLv2.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

collective_person-1.0.0b1.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

collective_person-1.0.0b1-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

Details for the file collective_person-1.0.0b1.tar.gz.

File metadata

  • Download URL: collective_person-1.0.0b1.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.15

File hashes

Hashes for collective_person-1.0.0b1.tar.gz
Algorithm Hash digest
SHA256 f9da3eaf106672e8fedc5c12b26459d80f8bef9c8508bbadcbdb70f4522a1f5d
MD5 c193c3552fa5265f796400baa7ec8ae3
BLAKE2b-256 5d9f835bca54cab30e86ab9910b2acf069d883ebbd391674e0acc85b7fe192f9

See more details on using hashes here.

File details

Details for the file collective_person-1.0.0b1-py3-none-any.whl.

File metadata

File hashes

Hashes for collective_person-1.0.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 7956dd575a20d5e83ccc58d9733fa48f49f49693062bbd0afdb085d044b56173
MD5 7d49959982fb19c8a2c635aee9566942
BLAKE2b-256 93c9af1b469e2f79c4d54139f4fa6066d2b3496a46dc2cc2d8bacb24eee47411

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page