A list of people, optionally organized by organizations and positions.
Municiaplities for which we contribute to OneGov often require a public list of contacts. For the customers and us this package needs to scratch the following itches:
- The directory must not force a set of fields on the user. Each customer should have the option to create its own set of fields. At the same time there should be at least one reasonable standard.
- Some fields should only be visible with certain permissions.
- It must be possible to put people into various organizations and show the membership of those organizations.
Warning! There is currently an issue (https://github.com/seantis/seantis.people/issues/41) which results in that publishing and expiration date of people are not working.
This is how it is done:
- We give the user the possibility to define a list of people. Each list consists of a number of dexterity objects with IPerson behavior. Within one list only one dexterity type is allowed.
- This list of people is the same for all lists of people - it’s just that the contained people must all have the same type.
- Through the schema of the dexterity type we define the fields, their required read and write permissions, the fields shown in the list, the order of those fields, the fields available for filtering in the list, and the fields shown in the detail view.
- These dexterity types may be installed by any package or they may be included in seantis.people, available through separate profiles. (It’s technically even possible to create them through the web, but we don’t recommend this approach for various reasons.)
- Any folderish type can be an organization. For people to be members of an organization, a membership type can be added to such a folderish type. This membership type links to the actual person object.
- We identify the organization solely by url and title. This makes organizations very flexible. For example, with seantis.cover.people we implemented organizations using collective.cover.
Installation & Usage
To see what it’s all about install seantis.people using buildout (we assume you know how to do that) and activate the add-on using the controlpanel.
Note that we don’t provide any styling for seantis.people. We build on plonetheme.onegov and try to keep our HTML as simple as possible.
Having installed seantis.people be sure to open the seantis.people controlpanel found on the Plone controlpanel (under “Add-on Configuration”).
There you can select the Person type you would like to use. Currently this will without a doubt be “Seantis People - Standard”. To use it, click “Install”:
Having done that, go to the front-page or to wherever you want to place a list of people and add them:
On the people’s list you can now add people. You can only add people of the same type together on the same list:
Going back to the list you will notice that this person does not belong to an organization. To add a person to an organization you can simply create a folder with the name of the organization as its title:
Finally, add the person to the organization by creating a membership and referencing the person:
Your list of people should now look something like this:
Seantis.people is used in production already. Though it’s one of our newer modules so it hasn’t been as battle tested as some of our other offerings.
Once we feel perfectly confident about this you’ll see a 1.0 release.
Close to our requirements (but no cigar): https://github.com/collective/collective.contact.core
- Python 2.7
- Plone 4.3+
- Linux / Posix (Windows may or may not work)
seantis.people is released under GPL v2
- Denis Krienbühl [href]
- Marc Sommerhalder [msom]
- Jonas Baumann [jone]
- Move people specific styles from plonetheme.onegov to this package. [lknoepfel]
- Add an additional organisation unit for PHZ. [msom]
- Update the catalog after renaming a person #45. [msom]
- Fix an error in ZodbMembershipSource #44. [msom]
- Fix the temporary fix. Updates #41. [msom]
- Enable referenceablebehavior on lists and memberships. [jone]
- Update memberships if the parent folder has changed. Fixes #43 [msom]
- Provide a temporary fix for #41. [msom]
- Check permissions in constrain types. Fixes #38. [msom]
- Make sure “False” values are rendered and not omitted. [href]
- Adds a renderer for choices. [msom]
- Import/export translated titles of vocabularies instead of values. Closes #36. [msom]
- Use unicode for selectable fields. Fixes #29. [msom]
- Fix unicode error in import. [msom]
- Fix metadata being out of sync. Fixes #34. [href]
- Removed autofilter in XLSX files. This lead to problems with Excel. [href]
- People types are now globally allowed - without hackery. Fixes #32. [href]
- Fixes unicode decode error when searching for organizations with non-ASCII characters in their title. [href]
Adds a custom catalog to manage generated indexes and metadata.
This change will leave the new catalog empty as we didn’t find a way to setup the new catalog and reindex it at the upgrade stage. To fix this go into the ZMI->seantis_portal_catalog->Advanced->Clean & Rebuild!
Adds a mechanism to define “export variants”. Export variants can adjust the dataset of any people type. It’s used to add specific exports that build on the standard people export. [href]
Adds the ability to exluce inactive people from the export. [href]
Adds the ability to export by workflow state. [href]
Exported XLSX files now automatically have the autofilter columns set. [href]
Adds localized date/datetime rendering. [href]
- Fixes error when deleting a person with at least one membership. See #27. [href]
- Adds a renderer for decimal numbers. [href]
- Add a type css body class to the list view that contains the used type of the list (if any). [href]
- List fields can now be rendered using ‘comma-separated’ (default) or ‘ul’, the latter creates a ul in html. [href]
- Adds the ability to define render options on the list and detail view. [href]
- Adds support for Set Choices and List Textlines in the import. [href]
- Adds renderer for Bool field type. [href]
- Adds a permanent work-around for the long standing issue #10. [href]
- Makes sure that the persons are only available on the list of people. [href]
- Adds a navigation bar to the person detail view. Fixes #17. [href]
- The export now also works with richtext fields. Fixes #18. [href]
- Adds the ability to do an unrestricted search on the people’s list. [href]
- Adds support for url, date and datetime fields to the import. [href]
- Adds the ability to export people to csv, xls, xlsx or json. [href]
- Adds ‘is_active_person’ property which if present and False hides the given person from the person list for anonymous users. [href]
- Removes start/end on memberships. This module will no longer deal with memberships over time. Where this is required, external modules like seantis.kantonsrat have to do this themselves. [href]
- Images on the people’s list are rendered smaller and in the detail view they are rendered larger. Renderes now have custom options for this case. [href]
- Adds the ability to define custom titles on the person. Currently the custom title is only relevant for the detail view. To use add a custom_titles dictionary to the person object with the key being the field anme and the value being the title that should be used in the detail view. [href]
- Adds a new LinkList type which may be used returned by person attributes. The link list will be rendered using ul > li > a. [href]
- Organization memberships are now queried by interface in the ZODB, rather than by portal_type to support inheritance.
- Changes membership id/title to include the role as well as the name of the referenced person. Closes #13. [href]
- Fixes a crash when viewing a public directory with private organisations. Closes #12. [href]
- Adds a note field to the membership. [href]
- Adds the ability to define the years_range for plone.formwidget.datetime widgets used in the schemas. Fixes #11. [href]
- Fixes a number of issues with zodb membership source. [href]
- Adds the ability to define custom membership functions on the detail view. [href]
- Adds the ability to define custom compound columns in other packages. [href]
- Adds missing profile dependencies for membership type. [href]
- Hides start/end on memberships, until it is properly implemented. [href]
- Adds very basic json export people list. [href]
- Adds the ability to import images through urls. [href]
- Organizations defined through memberships are now clickable in the list view. This is the default in the standard type. [href]
- Adds a standard profile which is more or less compatible with egov.contactdirectory. Fixes #6. [href]
- Rename responsive-table to responsive to be compatible with latest plonetheme.onegov release. [href]
- Adds custom event to signal changes in memberships. [href]
- Updates German translation. [href]
- Adds the ability to install and upgrade profiles with custom people types. This can be done using the new seantis people controlpanel. [href]
- Removes import action from PHZ type. [href]
- Renames PHZ to PH Zug. [href]
- Ensures that imported strings are stripped of their whitespace in front and at the end. [href]
- Redirect to person list after succesful import. [href]
- Fixes required fields error not showing up on import. [href]
- PHZ portrait should be optional. [href]
- Supports new responsive-table helper in plonetheme.onegov. [href]
- Hides first-/lastname on PHZ detail view. [href]
- Adds link to a detailed portrait of the employee for the PHZ. [href]
- Changes German translation of “Organisation Unit 2” for PHZ. [href]
- Adds membership rendering to detail view. [href]
- Adds collective.cover support as an extra [href]
- Memberships can now be defined dynamically through the MembershipSource adapter. [href]
- Hide label of images in the detail view. [href]
- Adds rendering support for these field types: Text, RichText, Lists. [href]
- Adds custom type for Pädagogische Hochschule Zug. [href]
- Adds ability to filter attributes returning lists in the table. [href]
- Adds ability to use custom titles on columns. [href]
- Adds detail view with configurable positioning through schema attributes. [href]
- Fixes not showing the selected filter after a refresh. [href]
- Supports supermodel security permissions in the people’s list (giving the ability to hide certain fields in the table depending on the user). [href]
- Fixes filter.js being unable to filter for empty values. [href]
- Ensures that the title is updated when the object is modified. [href]
- The first letters are now taken from the sorted title. [href]
- The title attributes order is now independent of the field order. [href]
- Fixes a number of unicode issues. [href]
(skipped by accident)
- People are now sorted by unicode collation. [href]
- The people can be filtered by the first litter of the title. [href]
- Initial release. [href]