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
- https://github.com/YunoHost-Apps/django-fmd_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
) - Helper to 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 pathlib import Path as __Path
from django_yunohost_integration.base_settings import * # noqa
from django_yunohost_integration.secret_key import get_or_create_secret as __get_or_create_secret
DEBUG = bool(int('__DEBUG_ENABLED__')) # Set via config_panel.toml
# -----------------------------------------------------------------------------
FINALPATH = __Path('__FINALPATH__') # /opt/yunohost/$app
assert FINALPATH.is_dir(), f'Directory not exists: {FINALPATH}'
PUBLIC_PATH = __Path('__PUBLIC_PATH__') # /var/www/$app
assert PUBLIC_PATH.is_dir(), f'Directory not exists: {PUBLIC_PATH}'
LOG_FILE = __Path('__LOG_FILE__') # /var/log/$app/$app.log
assert LOG_FILE.is_file(), f'File not exists: {LOG_FILE}'
PATH_URL = '__PATH_URL__' # $YNH_APP_ARG_PATH
PATH_URL = PATH_URL.strip('/')
# -----------------------------------------------------------------------------
# Function that will be called to finalize a user profile:
YNH_SETUP_USER = 'setup_user.setup_project_user'
SECRET_KEY = __get_or_create_secret(FINALPATH / 'secret.txt') # /opt/yunohost/$app/secret.txt
# INSTALLED_APPS.append('<insert-your-app-here>')
# -----------------------------------------------------------------------------
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/YunoHost-Apps/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
- dev
- tbc
- v0.4.0rc2 - 25.08.2022
- rename replacements (but still support the old ones):
__FINAL_HOME_PATH__
->__FINALPATH__
__FINAL_WWW_PATH__
->__PUBLIC_PATH__
- Add system checks to verify all "EMAIL" in
settings
andsettings.LOG_LEVEL
- Bugfix dev shell and exit if it's called as CLI
- rename replacements (but still support the old ones):
- v0.3.0 - 14.08.2022
- Add
extra_replacements:dict
argument tocreate_local_test()
to pass own__YNH_VARIABLE__
replacements - Remove
pytest_helper.run_pytest()
because every project should used a own conftest.py withcreate_local_test()
usage.
- Add
- v0.2.5 - 12.08.2022
- Support new variable names, for
ynh_add_config
usage in local test helper. - Run tests with Python v3.10, too.
- Update project setup.
- Support new variable names, for
- 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/YunoHost-Apps/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.4.0rc2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea7c6d2f8ef864c014158d9114815e24cde343e8c32bb8448ba63f250aea9d2f |
|
MD5 | d69ddf714bd7e47c0a2fd1d367fabe2d |
|
BLAKE2b-256 | c2704651a55808a405abb46c81242fa35aaa95fadbea0cb60fa6134b3e255335 |
Hashes for django_yunohost_integration-0.4.0rc2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89f6e35966084f9e16af502f55a8bbec883d18b84e06be55d254567250b9005c |
|
MD5 | 7fd2e510d85369cb2b63dbfda19cf220 |
|
BLAKE2b-256 | fb7055dcfb5a2f77025e9ca4ac758745e2c91b16adcbd5ff2c88696078d95e64 |