Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ repos:
- types-django-import-export
- django-multiselectfield
- django-tables2
- django-guardian
- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.50.0
hooks:
Expand Down
31 changes: 31 additions & 0 deletions GLOSSARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,37 @@ A person's collection of skill assessments.
A visualisation of a skill profile.
_Alias_: Skill wheel.

## Teams

**Team**:
A group of people who share their skill profiles for collaboration. A team is
visible only to its members.

**Team member**:
A person who has accepted an invitation to a team. Members can see the team, its
aggregate skill profile, the names of the other members and who the managers
are, but not other members' skill profiles. A member may leave
a team at any time, which ends any access others had to their skill profile
through that team.

**Team manager**:
A team member who administers the team. Managers can see every member's whole
skill profile, edit or delete the team, invite and remove members, and promote or
demote managers. A team always has at least one manager; whoever creates a team is its
first manager.
_Avoid_: Owner, admin.

**Team invitation**:
An offer from a team manager for a registered person to join a team. The person
becomes a team member only after accepting it; a pending invitation grants no
access. The invitee may decline it and any manager may withdraw it. A person has
at most one pending invitation per team.

**Aggregate skill profile**:
A combined view of the skill profiles of a team's members. It is only shown when
enough members contribute that no individual's skill profile can be deduced
from it.

## Sources

Definitions are summarised locally so external access is optional:
Expand Down
95 changes: 43 additions & 52 deletions dev-requirements.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
#
# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# pip-compile --extra=dev --output-file=dev-requirements.txt
#
# This file was autogenerated by uv via the following command:
# uv pip compile pyproject.toml --extra=dev --output-file=dev-requirements.txt
asgiref==3.13.0
# via django
ast-serialize==0.13.1
# via mypy
beautifulsoup4==4.15.0
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
build==1.6.1
# via pip-tools
certifi==2026.10.23
Expand All @@ -20,14 +18,12 @@ click==8.5.0
# via
# djlint
# pip-tools
colorama==0.4.6
# via djlint
confusable-homoglyphs==3.3.1
# via django-registration
coverage[toml]==7.17.0
coverage==7.17.0
# via pytest-cov
crispy-bootstrap5==2026.9
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
cssbeautifier==2.0.3
# via djlint
diff-match-patch==20241021
Expand All @@ -36,40 +32,43 @@ distlib==0.4.4
# via virtualenv
django==6.1.2
# via
# direct-webapp (pyproject.toml)
# crispy-bootstrap5
# direct_webapp (pyproject.toml)
# django-bootstrap5
# django-crispy-forms
# django-guardian
# django-import-export
# django-multiselectfield
# django-registration
# django-stubs
# django-stubs-ext
# django-tables2
django-bootstrap5==26.4
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
django-crispy-forms==2.7
# via
# direct-webapp (pyproject.toml)
# crispy-bootstrap5
# direct_webapp (pyproject.toml)
django-guardian==3.5.2
# via direct-webapp (pyproject.toml)
django-import-export==4.4.4
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
django-multiselectfield==1.0.1
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
django-registration==5.2.1
# via direct_webapp (pyproject.toml)
django-stubs[compatible-mypy]==6.1.2
# via direct-webapp (pyproject.toml)
django-stubs==6.1.2
# via
# direct_webapp (pyproject.toml)
# direct-webapp (pyproject.toml)
# types-django-import-export
django-stubs-ext==6.1.2
# via
# direct_webapp (pyproject.toml)
# direct-webapp (pyproject.toml)
# django-stubs
django-tables2==3.0.1
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
djlint==1.47.1
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
editorconfig==0.17.1
# via
# cssbeautifier
Expand All @@ -79,7 +78,7 @@ filelock==4.2.4
# python-discovery
# virtualenv
gunicorn==26.2.0
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
identify==2.6.20
# via pre-commit
idna==3.20
Expand All @@ -95,39 +94,39 @@ json5==0.17.3
librt==0.16.0
# via mypy
markdown==3.11.2
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
mypy==2.4.1
# via
# direct_webapp (pyproject.toml)
# direct-webapp (pyproject.toml)
# django-stubs
mypy-extensions==1.1.0
# via mypy
nh3==0.3.7
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
nodeenv==1.11.0
# via pre-commit
packaging==26.3
# via
# build
# gunicorn
# pytest
# virtualenv
# wheel
pathspec==1.1.1
# via
# djlint
# mypy
pip==26.2.2
# via pip-tools
pip-tools==7.6.2
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
platformdirs==4.14.0
# via
# python-discovery
# virtualenv
# via virtualenv
pluggy==1.7.0
# via
# pytest
# pytest-cov
pre-commit==4.7.0
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
pygments==2.21.0
# via pytest
pyproject-hooks==1.3.3
Expand All @@ -136,16 +135,16 @@ pyproject-hooks==1.3.3
# pip-tools
pytest==9.2.0
# via
# direct_webapp (pyproject.toml)
# direct-webapp (pyproject.toml)
# pytest-cov
# pytest-django
# pytest-mock
pytest-cov==7.1.0
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
pytest-django==4.14.0
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
pytest-mock==3.17.0
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
python-discovery==1.6.7
# via virtualenv
pyyaml==6.0.3
Expand All @@ -155,29 +154,25 @@ pyyaml==6.0.3
regex==2026.9.29
# via djlint
requests==2.34.2
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
ruff==0.17.3
# via direct_webapp (pyproject.toml)
six==1.17.0
# via
# cssbeautifier
# jsbeautifier
# via direct-webapp (pyproject.toml)
setuptools==84.2.1
# via pip-tools
soupsieve==3.0.4
# via beautifulsoup4
sqlparse==0.6.0
# via django
tablib==3.10.0
# via django-import-export
tqdm==4.70.1
# via djlint
types-django-import-export==4.4.0.20260813
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
types-markdown==3.11.2.20261029
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
types-pyyaml==6.0.12.20260906
# via django-stubs
types-requests==2.33.0.20261006
# via direct_webapp (pyproject.toml)
# via direct-webapp (pyproject.toml)
typing-extensions==4.16.0
# via
# beautifulsoup4
Expand All @@ -193,8 +188,4 @@ virtualenv==21.15.1
wheel==0.48.0
# via pip-tools
whitenoise==6.12.0
# via direct_webapp (pyproject.toml)

# The following packages are considered to be unsafe in a requirements file:
# pip
# setuptools
# via direct-webapp (pyproject.toml)
5 changes: 5 additions & 0 deletions direct_webapp/settings/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,12 @@
"crispy_bootstrap5",
"import_export",
"django_tables2",
"guardian",
]
AUTHENTICATION_BACKENDS = (
"django.contrib.auth.backends.ModelBackend", # this is default
"guardian.backends.ObjectPermissionBackend",
)
MIDDLEWARE.insert(1, "whitenoise.middleware.WhiteNoiseMiddleware")
STATIC_ROOT = BASE_DIR / "staticfiles"
AUTH_USER_MODEL = "main.User"
Expand Down
Loading
Loading