Loading README.md +5 −17 Original line number Diff line number Diff line Loading @@ -72,23 +72,11 @@ Le seul vocabulaire disponible pour l'OAI-PMH est le Dublin Core. Les enregistrements retournés correspondent aux collections Jama pour lesquelles le flag "is_oai_record" vaut VRAI. ## Mise en place d'un projet et d'un utilisateur de test: (venv) code/jama: poetry run ./manage.py shell >>> from resources.models import APIKey, Project, ProjectAccess, Permission, Role >>> from django.contrib.auth.models import User >>> test_project, _ = Project.objects.get_or_create(label="test") >>> test_user, _ = User.objects.get_or_create(username="test") >>> admin_role, _ = Role.objects.get_or_create(label="admin", project=test_project) >>> for permission in Permission.objects.all(): ... admin_role.permissions.add(permission) ... >>> >>> ProjectAccess.objects.get_or_create(project=test_project, role=admin_role, user=test_user) (<ProjectAccess: test: test (admin)>, False) >>> key, _ = APIKey.objects.get_or_create(user=test_user, key="123456") >>> key.active = True >>> key.save() ## Création d'un nouveau projet: (venv) code/jama: poetry run python manage.py newjamaproject "mon projet" Projet "mon projet" créé avec le compte administrateur "admin_mon_projet" et la clef d'API "EOwy6laNTMBDUvH6pGuOvGdMEpYM2F9M" ## Étendre JAMA Loading resources/management/commands/newjamaproject.py 0 → 100644 +38 −0 Original line number Diff line number Diff line from django.core.management.base import BaseCommand, CommandError from resources.models import Project, Role, Permission, ProjectAccess, APIKey from django.utils.text import slugify from django.contrib.auth.models import User import secrets import string class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument("project_label", type=str) def handle(self, *args, **options): project_label = options.get("project_label") project = Project.objects.filter(label__iexact=project_label).first() if project: raise CommandError("Le projet existe déjà.") project_admin_username = slugify(f"admin_{project_label.replace(' ', '_')}") project = Project.objects.create(label=project_label) admin_user, _ = User.objects.get_or_create(username=project_admin_username) admin_role, _ = Role.objects.get_or_create(label="admin", project=project) for permission in Permission.objects.all(): if permission.label != "collection.public_only": admin_role.permissions.add(permission) ProjectAccess.objects.get_or_create( project=project, role=admin_role, user=admin_user ) key, _ = APIKey.objects.get_or_create( user=admin_user, key="".join( secrets.choice(string.ascii_letters + string.digits) for i in range(32) ), ) key.active = True key.save() print( f'Projet "{project_label}" créé avec le compte administrateur "{admin_user.username}" et la clef d\'API "{key.key}"' ) Loading
README.md +5 −17 Original line number Diff line number Diff line Loading @@ -72,23 +72,11 @@ Le seul vocabulaire disponible pour l'OAI-PMH est le Dublin Core. Les enregistrements retournés correspondent aux collections Jama pour lesquelles le flag "is_oai_record" vaut VRAI. ## Mise en place d'un projet et d'un utilisateur de test: (venv) code/jama: poetry run ./manage.py shell >>> from resources.models import APIKey, Project, ProjectAccess, Permission, Role >>> from django.contrib.auth.models import User >>> test_project, _ = Project.objects.get_or_create(label="test") >>> test_user, _ = User.objects.get_or_create(username="test") >>> admin_role, _ = Role.objects.get_or_create(label="admin", project=test_project) >>> for permission in Permission.objects.all(): ... admin_role.permissions.add(permission) ... >>> >>> ProjectAccess.objects.get_or_create(project=test_project, role=admin_role, user=test_user) (<ProjectAccess: test: test (admin)>, False) >>> key, _ = APIKey.objects.get_or_create(user=test_user, key="123456") >>> key.active = True >>> key.save() ## Création d'un nouveau projet: (venv) code/jama: poetry run python manage.py newjamaproject "mon projet" Projet "mon projet" créé avec le compte administrateur "admin_mon_projet" et la clef d'API "EOwy6laNTMBDUvH6pGuOvGdMEpYM2F9M" ## Étendre JAMA Loading
resources/management/commands/newjamaproject.py 0 → 100644 +38 −0 Original line number Diff line number Diff line from django.core.management.base import BaseCommand, CommandError from resources.models import Project, Role, Permission, ProjectAccess, APIKey from django.utils.text import slugify from django.contrib.auth.models import User import secrets import string class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument("project_label", type=str) def handle(self, *args, **options): project_label = options.get("project_label") project = Project.objects.filter(label__iexact=project_label).first() if project: raise CommandError("Le projet existe déjà.") project_admin_username = slugify(f"admin_{project_label.replace(' ', '_')}") project = Project.objects.create(label=project_label) admin_user, _ = User.objects.get_or_create(username=project_admin_username) admin_role, _ = Role.objects.get_or_create(label="admin", project=project) for permission in Permission.objects.all(): if permission.label != "collection.public_only": admin_role.permissions.add(permission) ProjectAccess.objects.get_or_create( project=project, role=admin_role, user=admin_user ) key, _ = APIKey.objects.get_or_create( user=admin_user, key="".join( secrets.choice(string.ascii_letters + string.digits) for i in range(32) ), ) key.active = True key.save() print( f'Projet "{project_label}" créé avec le compte administrateur "{admin_user.username}" et la clef d\'API "{key.key}"' )