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
# -----------------------------------------------------------------------------
DATA_DIR_PATH = __Path('__DATA_DIR__') # /home/yunohost.app/$app
assert DATA_DIR_PATH.is_dir(), f'Directory not exists: {DATA_DIR_PATH}'
INSTALL_DIR_PATH = __Path('__INSTALL_DIR__') # /var/www/$app
assert INSTALL_DIR_PATH.is_dir(), f'Directory not exists: {INSTALL_DIR_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(DATA_DIR_PATH / 'secret.txt') # /home/yunohost.app/$app/secret.txt
# INSTALLED_APPS.append('<insert-your-app-here>')
# -----------------------------------------------------------------------------
At least you have to set these settings:
from django_yunohost_integration.base_settings import * # noqa
INSTALLED_APPS.append('django_yunohost_integration')
MIDDLEWARE.insert(
MIDDLEWARE.index('django.contrib.auth.middleware.AuthenticationMiddleware') + 1,
# 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/'
# /yunohost/sso/?action=logout
ROOT_URLCONF = 'urls' # .../conf/urls.py
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$ ./dev-cli.py
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$ ./dev-cli.py 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
- v0.8.0
- 2024-08-04 - work-a-round for: https://github.com/jazzband/pip-tools/issues/1866
- 2024-08-04 - Bugfix local "manage.py" helper
- 2024-08-04 - Update requirements
- 2024-08-04 - Set Python 3.11 as minimum
- 2024-08-04 - Add pre-commit scripts
- 2024-08-04 - safety -> pip-audit
- 2024-08-04 - 'psycopg2' -> 'psycopg[binary]'
- 2024-08-04 - Use pre-commit to update history in README
- 2024-08-04 - Apply manageprojects updates
- v0.7.1
- 2024-01-04 - Bugfix create_local_test()
- v0.7.0
- 2023-12-22 - Fix publish
- 2023-12-22 - Update project setup
- 2023-12-22 - Bugfix: unexpected keyword argument 'created'
- 2023-08-22 - Update README.md
- v0.6.0
- 2023-08-22 - Update requeirements, README and bump version to v0.6.0
- 2023-08-20 - PATH_URL -> PATH
- 2023-08-20 - update test
- 2023-08-20 - Replace DEBUG_ENABLED with "YES" in local tests
- 2023-08-20 - Update to YunoHost "Manifest v2"
- 2023-02-19 - Replace devshell with a click CLI & replace pytest with normal unittests
Expand older history entries ...
- v0.5.2
- 2023-02-19 - Support Django 4.0: Add RedirectURLMixin from 4.1 as fallback
- 2023-02-18 - Update via manageprojects
- v0.5.1
- 2022-12-21 - Disable assert_project_version in GitHub actions
- v0.5.0
- 2022-12-21 - include SSOwatLoginRedirectView
- 2022-10-19 - Project upgrades
- 2022-10-07 - "-pytest-darker" -> just call darker via test
- 2022-10-05 - updates
- v0.4.1
- 2022-10-04 - v0.4.1 Add
assert_project_version
andget_github_version_tag
- 2022-09-19 - Update requirements
- 2022-09-19 - README
- 2022-10-04 - v0.4.1 Add
- v0.4.0
- 2022-09-15 - update django-tools to v0.54.0
- 2022-09-15 - Run "saftey" check in CI
- 2022-09-15 - update project setup tests
- 2022-09-15 - Update requirements and release as v0.4.0rc6
- 2022-09-15 - Silent "DEBUG=True" warning in tests
- 2022-09-15 - Remove own assert_is_file() and assert_is_dir() implementation
- 2022-09-15 - Update devshell.py via tests
- 2022-08-25 - v0.4.0rc5 - better logging example settings
- 2022-08-25 - v0.4.0rc4 - Add
SyslogHandler
to logging settings - 2022-08-25 - Lower systems checks "Error" to "Warning"
- 2022-08-24 - remove unused "check_process"
- 2022-08-24 - Update dev shell: Run a cmd2 App as CLI or shell
- 2022-08-24 - Add system check to validate settings.LOG_LEVEL
- 2022-08-24 - cleanup test settingsd
- 2022-08-24 - Add systemcheck to validate all email addresses in settings
- 2022-08-24 - FINAL_HOME_PATH -> FINALPATH and FINAL_WWW_PATH -> PUBLIC_PATH
- v0.3.0
- 2022-08-14 - Update README
- 2022-08-14 - update requirements
- 2022-08-14 - code cleanup
- 2022-08-14 - Add
extra_replacements:dict
tocreate_local_test()
- 2022-08-14 - rename
setup_demo_user()
->setup_project_user()
- 2022-08-14 - Remove
pytest_helper.run_pytest()
- 2022-08-12 - Update README.md
- v0.2.5
- 2022-08-12 - bump version to v0.2.5
- 2022-08-12 - Update README.md
- 2022-08-12 - New variable names, for "ynh_add_config" usage
- 2022-08-12 - update test setup
- 2022-08-12 - fix line_length
- 2022-08-12 - uses: codecov/codecov-action@v2
- 2022-08-12 - fix editorconfig
- 2022-07-11 - Expand local settings for local test.
- v0.2.4
- 2022-01-30 - Update README.md
- 2022-01-30 - Use darker and pytest-darker as code formatter + update requirements
- 2022-01-30 - Add/update some meta information
- v0.2.3
- 2022-01-07 - Bugfix tests
- 2022-01-07 - update requirements
- 2022-01-07 - Fix local test by set "SECURE_SSL_REDIRECT = False"
- 2021-10-10 - Update README.md
- v0.2.2
- 2021-10-10 - Read YunoHost App name from project manifest.json file
- v0.2.1
- 2021-09-16 - Bugfix endless redirect loop, by adding
SECURE_PROXY_SSL_HEADER
to settings - 2021-09-15 - Update README.md
- 2021-09-16 - Bugfix endless redirect loop, by adding
- v0.2.0
- 2021-09-15 - Update deps
- 2021-08-17 - updtae README and add poetry.lock file
- 2021-08-16 - Bugfix publish command
- 2021-08-16 - fix "linting" and "fix_code_style" commands and remove obsolete Makefile
- 2021-08-16 - fix flake8
- 2021-08-16 - Set security settings
- 2021-08-16 - Update githib actions
- 2021-08-16 - Setup pytest against local test installation
- 2021-02-28 - Rename/split from django_ynh
- v0.1.5
- 2021-01-19 - release v0.1.5
- 2021-01-17 - Make some dependencies optional
- v0.1.4
- 2021-01-08 - prepare v0.1.4 release
- 2021-01-08 - Bugfix #7 CSRF verification failed on POST requests
- v0.1.3
- 2021-01-08 - update README
- 2021-01-08 - bump v0.1.3
- 2021-01-08 - rename log file name in local test
- 2021-01-08 - add homepage in pyproject.toml
- 2020-12-29 - Update README.md
- 2020-12-29 - update docs
- 2020-12-29 - -volumes
- 2020-12-29 - -pytest-randomly
- 2020-12-29 - set "DEBUG = True" in local_test (so static files are served)
- v0.1.2
- 2020-12-29 - Bugfix nginx config
- 2020-12-29 - copy conf/setup_user.py, too
- 2020-12-29 - fix serve static files
- 2020-12-29 - fix superuser setup
- 2020-12-29 - Make "--email" optional in "create_superuser" manage command
- v0.1.1
- 2020-12-29 - pass existing pytest arguments
- 2020-12-29 - fix code style
- 2020-12-29 - update tests
- 2020-12-29 - test version in scripts/_common.sh
- 2020-12-29 - install the app via pip
- 2020-12-29 - rename settings and urls
- 2020-12-29 - Fix nginx.conf
- 2020-12-29 - code cleanup
- 2020-12-29 - Add more info about this project into README
- 2020-12-29 - Generate "conf/requirements.txt" and use this file for install
- 2020-12-29 - Add "django_ynh" to INSTALLED_APPS and migrate "create_superuser" to a manage command
- v0.1.0
- 2020-12-28 - fix "make publish"
- 2020-12-28 - fix linting
- 2020-12-28 - fix version test
- 2020-12-28 - bump version
- 2020-12-28 - bugfix "make publish"
- 2020-12-28 - remove test file
- 2020-12-28 - +DocString
- 2020-12-28 - code style
- 2020-12-28 - call "make lint" as unittest
- 2020-12-28 - +test_project_setup.py
- 2020-12-28 - get pytest running with local test copy
- 2020-12-28 - WIP: setup the project
- 2020-12-23 - init
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
File details
Details for the file django_yunohost_integration-0.8.0.tar.gz
.
File metadata
- Download URL: django_yunohost_integration-0.8.0.tar.gz
- Upload date:
- Size: 80.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f295c19537f9a821b64b9b03d9394c7c12924a9e5f0b170973367749b2575531 |
|
MD5 | 4b4d9074e12bb57e9091ac55176f1dfa |
|
BLAKE2b-256 | 2aacdb949e62471fb8f7fa61c7d9d39c457de6ec07c77c71da04781591488e73 |
Provenance
File details
Details for the file django_yunohost_integration-0.8.0-py3-none-any.whl
.
File metadata
- Download URL: django_yunohost_integration-0.8.0-py3-none-any.whl
- Upload date:
- Size: 45.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20dfb25795f808770a5e264e7e796315127b732132f559083ed220121094a1b4 |
|
MD5 | 2608b5822a8e53ecb650c0b14fec11ed |
|
BLAKE2b-256 | aae1e4bd31bfaf0266de32651a52e95af6e39d7d1183e48dee9925792eaf0445 |