Django Sage Timezone Management
Django Sage Timezone Management is a Django package that allows administrators to easily select and apply a timezone for their session directly from the Django Admin interface. Once set, the timezone is automatically applied to all datetime displays during the session.
Features
- Adds a "Select Timezone" option in the Django Admin navigation bar.
- Automatically applies the selected timezone to the user's session using middleware.
- Supports all timezones available through
pytz
.
- Simple integration with existing Django projects.
Installation
Using pip
with virtualenv
-
Create a Virtual Environment:
python -m venv .venv
-
Activate the Virtual Environment:
-
Install django-sage-timezone
:
pip install django-sage-timezone
Using poetry
-
Initialize Poetry (if not already initialized):
poetry init
-
Install django-sage-timezone
:
poetry add django-sage-timezone
-
Apply Migrations:
After installation, ensure to run the following commands to apply necessary migrations:
python manage.py makemigrations
python manage.py migrate
Configuration
Django Settings
Add django-sage-timezone
to your INSTALLED_APPS
in the Django settings:
INSTALLED_APPS = [
...
"sage_timezone",
"django.contrib.admin"
]
Also, add the TimezoneMiddleware
to your middleware settings:
MIDDLEWARE = [
"django.contrib.sessions.middleware.SessionMiddleware",
"sage_timezone.middleware.TimezoneMiddleware",
...
]
Important Note:
The sage_timezone.middleware.timezone.TimezoneMiddleware
must be placed after the django.contrib.sessions.middleware.SessionMiddleware
in your MIDDLEWARE
setting. This order is crucial to ensure that the session data is available when the timezone is set.
Note:
You can set a custom session name in your Django settings using the TIME_ZONE_SESSION_NAME
setting. For example:
TIME_ZONE_SESSION_NAME = 'your_custom_session_name'
Usage
Once configured, the Django Admin will include a "Select Timezone" option in the navigation bar. Administrators can choose their preferred timezone, which will be applied to their session.