The admin was broken as we did not worry about it up to now. On the frontend we want to use OIDC authentication only but for the admin, it is better if the default authentication works as well. To allow this, we propose to add an "email" field to the user model and make it the identifier in place of the usual username. Some changes are necessary to make the "createsuperuser" management command work. We also had to fix the "oidc_user_getter" method to make it work with Keycloak. Some tests were added to secure that everything works as expected.
137 lines
3.4 KiB
TOML
137 lines
3.4 KiB
TOML
#
|
|
# People package
|
|
#
|
|
[build-system]
|
|
requires = ["setuptools"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "people"
|
|
version = "0.1.0"
|
|
authors = [{ "name" = "DINUM", "email" = "dev@mail.numerique.gouv.fr" }]
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Framework :: Django",
|
|
"Framework :: Django :: 5",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Natural Language :: English",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
]
|
|
description = "An application to handle contacts and teams."
|
|
keywords = ["Django", "Contacts", "Teams", "RBAC"]
|
|
license = { file = "LICENSE" }
|
|
readme = "README.md"
|
|
requires-python = ">=3.10"
|
|
dependencies = [
|
|
"boto3==1.33.6",
|
|
"Brotli==1.1.0",
|
|
"celery[redis]==5.3.6",
|
|
"django-configurations==2.5",
|
|
"django-cors-headers==4.3.1",
|
|
"django-countries==7.5.1",
|
|
"django-parler==2.3",
|
|
"django-storages==1.14.2",
|
|
"django-timezone-field>=5.1",
|
|
"django==5.0",
|
|
"djangorestframework-simplejwt[crypto]==5.3.0",
|
|
"djangorestframework==3.14.0",
|
|
"drf_spectacular==0.26.5",
|
|
"dockerflow==2022.8.0",
|
|
"easy_thumbnails==2.8.5",
|
|
"factory_boy==3.3.0",
|
|
"gunicorn==21.2.0",
|
|
"jsonschema==4.20.0",
|
|
"nested-multipart-parser==1.5.0",
|
|
"psycopg[binary]==3.1.14",
|
|
"PyJWT==2.8.0",
|
|
"requests==2.31.0",
|
|
"sentry-sdk==1.38.0",
|
|
"url-normalize==1.4.3",
|
|
"whitenoise==6.6.0",
|
|
]
|
|
|
|
[project.urls]
|
|
"Bug Tracker" = "https://github.com/numerique-gouv/people/issues/new"
|
|
"Changelog" = "https://github.com/numerique-gouv/people/blob/main/CHANGELOG.md"
|
|
"Homepage" = "https://github.com/numerique-gouv/people"
|
|
"Repository" = "https://github.com/numerique-gouv/people"
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"django-extensions==3.2.3",
|
|
"drf-spectacular-sidecar==2023.12.1",
|
|
"ipdb==0.13.13",
|
|
"ipython==8.18.1",
|
|
"pyfakefs==5.3.2",
|
|
"pylint-django==2.5.5",
|
|
"pylint==3.0.3",
|
|
"pytest-cov==4.1.0",
|
|
"pytest-django==4.7.0",
|
|
"pytest==7.4.3",
|
|
"pytest-icdiff==0.8",
|
|
"pytest-xdist==3.5.0",
|
|
"responses==0.24.1",
|
|
"ruff==0.1.6",
|
|
"types-requests==2.31.0.10",
|
|
]
|
|
|
|
[tool.setuptools]
|
|
packages = { find = { where = ["."], exclude = ["tests"] } }
|
|
zip-safe = true
|
|
|
|
[tool.distutils.bdist_wheel]
|
|
universal = true
|
|
|
|
[tool.ruff]
|
|
exclude = [
|
|
".git",
|
|
".venv",
|
|
"build",
|
|
"venv",
|
|
"__pycache__",
|
|
"*/migrations/*",
|
|
]
|
|
ignore= ["DJ001", "PLR2004"]
|
|
line-length = 88
|
|
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"B", # flake8-bugbear
|
|
"BLE", # flake8-blind-except
|
|
"C4", # flake8-comprehensions
|
|
"DJ", # flake8-django
|
|
"I", # isort
|
|
"PLC", # pylint-convention
|
|
"PLE", # pylint-error
|
|
"PLR", # pylint-refactoring
|
|
"PLW", # pylint-warning
|
|
"RUF100", # Ruff unused-noqa
|
|
"RUF200", # Ruff check pyproject.toml
|
|
"S", # flake8-bandit
|
|
"SLF", # flake8-self
|
|
"T20", # flake8-print
|
|
]
|
|
|
|
[tool.ruff.lint.isort]
|
|
section-order = ["future","standard-library","django","third-party","people","first-party","local-folder"]
|
|
sections = { people=["core"], django=["django"] }
|
|
|
|
[tool.ruff.per-file-ignores]
|
|
"**/tests/*" = ["S", "SLF"]
|
|
|
|
[tool.pytest.ini_options]
|
|
addopts = [
|
|
"-v",
|
|
"--cov-report",
|
|
"term-missing",
|
|
# Allow test files to have the same name in different directories.
|
|
"--import-mode=importlib",
|
|
]
|
|
python_files = [
|
|
"test_*.py",
|
|
"tests.py",
|
|
]
|