Custom PyAMS utilities¶
PyAMS_utils provides a small set of utilities. You can create some of them as global utilities registered in the global components registry; other ones can be created manually by a site administrator and are then registered automatically.
Server timezone¶
To manage timezones correctly, and display datetimes based on current server timezone, all datetimes should be defined and stored in UTC.
PyAMS_utils provides a ServerTimezoneUtility
which
allows you to assign a default timezone to your server.
To display a datetime with correct timezone, you can use the tztime
function,
which assign server timezone to the given parameter:
from datetime import datetime
from pyams_utils.timezone import tztime
now = datetime.utcnow()
my_date = tztime(now) # converts *now* to server timezone
We could imagine that datetimes could be displayed with current user timezone. But it’s quite impossible to know the user timazone from a server request. The only options are:
- you ask an authenticated user to update a timezone setting in his profile
- you can include Javascript libraries which will try to detect browser timezone from their computer configuration, and do an AJAX request to update data in their session.
That should require an update of tzinfo()
adapter to get timezone info from session, request or user profile.
ZEO connection¶
Several PyAMS utilities (like the tasks scheduler or the medias converter) are working with dedicated processes, are connected to main PyAMS process through ØMQ, and use ZEO connections for their PyAMS database access.
Clients of these processes have to send settings of the ZEO connections that they should use.
The ZEOConnection utility can be created by the site manager through the web management interface (ZMI) from the Control panel:

ZEO connection creation form allows you to define all settings of a ZEO connection:
