Glue code to package django projects as yunohost apps.
Project description
django_yunohost_integration
Python package django_yunohost_integration with helpers for integrate a Django project as YunoHost package.
A example usage of this package is here:
Pull requests welcome ;)
These projects used django_yunohost_integration
:
- https://github.com/YunoHost-Apps/pyinventory_ynh
- https://github.com/YunoHost-Apps/django-for-runners_ynh
Features
- SSOwat integration (see below)
- Helper to create first super user for
scripts/install
- Run Django development server with a local generated YunoHost package installation (called
local_test
) - Run
pytest
againstlocal_test
"installation"
SSO authentication
SSOwat is fully supported:
- First user (
$YNH_APP_ARG_ADMIN
) will be created as Django's super user - All new users will be created as normal users
- Login via SSO is fully supported
- User Email, First / Last name will be updated from SSO data
usage
To create/update the first user in install
/upgrade
, e.g.:
./manage.py create_superuser --username="$admin" --email="$admin_mail"
This Create/update Django superuser and set a unusable password. A password is not needed, because auth done via SSOwat ;)
Main parts in settings.py
:
from django_yunohost_integration.secret_key import get_or_create_secret as __get_or_create_secret
# Function that will be called to finalize a user profile:
YNH_SETUP_USER = 'setup_user.setup_project_user'
SECRET_KEY = __get_or_create_secret(FINAL_HOME_PATH / 'secret.txt') # /opt/yunohost/$app/secret.txt
INSTALLED_APPS = [
#...
'django_yunohost_integration',
#...
]
MIDDLEWARE = [
#... after AuthenticationMiddleware ...
#
# login a user via HTTP_REMOTE_USER header from SSOwat:
'django_yunohost_integration.sso_auth.auth_middleware.SSOwatRemoteUserMiddleware',
#...
]
# Keep ModelBackend around for per-user permissions and superuser
AUTHENTICATION_BACKENDS = (
'axes.backends.AxesBackend', # AxesBackend should be the first backend!
#
# Authenticate via SSO and nginx 'HTTP_REMOTE_USER' header:
'django_yunohost_integration.sso_auth.auth_backend.SSOwatUserBackend',
#
# Fallback to normal Django model backend:
'django.contrib.auth.backends.ModelBackend',
)
LOGIN_REDIRECT_URL = None
LOGIN_URL = '/yunohost/sso/'
LOGOUT_REDIRECT_URL = '/yunohost/sso/'
local test
Build prerequisites
We install psycopg2
(a PostgreSQL adapter for the Python) that needs some build prerequisites, e.g.:
~$ sudo apt install build-essential python3-dev libpq-dev
For quicker developing of django_yunohost_integration in the context of YunoHost app, it's possible to run the Django developer server with the settings and urls made for YunoHost installation.
e.g.:
~$ git clone https://github.com/jedie/django_yunohost_integration.git
~$ cd django_yunohost_integration/
~/django_yunohost_integration$ ./devshell.py
+ .venv/bin/python .venv/bin/devshell
Developer shell - django_yunohost_integration - v0.2.0
Documented commands (use 'help -v' for verbose/'help <topic>' for details):
dev-shell commands
==================
fix_code_style linting list_venv_packages publish pytest update
Django-YunoHost-Integration commands
====================================
local_test
Uncategorized
=============
alias help macro run_pyscript set shortcuts
edit history quit run_script shell
(django_yunohost_integration)
For quicker developing of django_yunohost_integration in the context of YunoHost app, it's possible to run the Django developer server with the settings and urls made for YunoHost installation.
e.g.:
~/django_yunohost_integration$ ./devshell.py
(django_yunohost_integration) local_test
- SQlite database will be used
- A super user with username
test
and passwordtest
is created - The page is available under
http://127.0.0.1:8000/app_path/
history
- compare v0.2.4...main dev
- tbc
- v0.2.4 - 30.01.2022
- Rename git "master" branch to "main"
- Use darker and pytest-darker as code formatter + update requirements
- v0.2.3 - 07.01.2022
- Bugfix Fix local test by set
"SECURE_SSL_REDIRECT = False"
- Bugfix Fix local test by set
- v0.2.2 - 10.10.2021
- Read YunoHost App Id from "manifest.json" and check root directory name
- v0.2.1 - 16.09.2021
- Bugfix endless redirect loop, by adding
SECURE_PROXY_SSL_HEADER
to settings
- Bugfix endless redirect loop, by adding
- v0.2.0 - 15.09.2021
- rename/split
django_ynh
into:- django_yunohost_integration - Python package with the glue code to integrate a Django project with YunoHost
- django_example_ynh - Demo YunoHost App to demonstrate the integration of a Django project under YunoHost
- Replace
psycopg2-binary
withpsycopg2
(needs some prerequisites packages, see above)
- rename/split
- v0.1.5 - 19.01.2021
- Make some deps
gunicorn
,psycopg2-binary
,django-redis
,django-axes
optional
- Make some deps
- v0.1.4 - 08.01.2021
- Bugfix: CSRF verification failed on POST requests
- v0.1.3 - 08.01.2021
- set "DEBUG = True" in local_test (so static files are served and auth works)
- Bugfixes and cleanups
- v0.1.2 - 29.12.2020
- Bugfixes
- v0.1.1 - 29.12.2020
- Refactor "create_superuser" to a manage command, useable via "django_yunohost_integration" in
INSTALLED_APPS
- Generate "conf/requirements.txt" and use this file for install
- rename own settings and urls (in
/conf/
)
- Refactor "create_superuser" to a manage command, useable via "django_yunohost_integration" in
- v0.1.0 - 28.12.2020
- first working state
- 23.12.2020
- init the project
Links
- Report a bug about this package: https://github.com/jedie/django_yunohost_integration
- YunoHost website: https://yunohost.org/
- PyPi package: https://pypi-hypernode.com/project/django_yunohost_integration/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_yunohost_integration-0.2.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4b3617a3b39225d6162fa88827e9fe8b65388e26a0bbc23ea665c62aa8cb044 |
|
MD5 | 6b93caa79414a35aa830269971468aee |
|
BLAKE2b-256 | 115b81c9b6fbe266cc179c74c2550a94a45c1b0c34184757cf25315d7d6385e5 |
Hashes for django_yunohost_integration-0.2.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5cdb5480025e90de0221d2b1c6282f517fd0c903702563cccb771cb3e1d9417 |
|
MD5 | c67ce19595c1a4bc90ad25458c2480ef |
|
BLAKE2b-256 | 1a761e399d41ab54a3ad940f6786f4d60fdbf4ae16c1001ce5fb217d50e4d33a |