Loading src/jama/management/commands/repl.py +3 −7 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ from resources.models import ( Project, APIKey, ProjectAccess, Permission, ObjectPermission, File, ProjectProperty, Loading @@ -30,6 +29,7 @@ from resources.models import ( CollectionMembership, Role, ) from resources import acl def _console_table(title: str, headers: List["str"]) -> Table: Loading Loading @@ -231,11 +231,8 @@ def get_or_create_project(project_label: str) -> Project: 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(): admin_role.permissions.add(permission) ProjectAccess.objects.get_or_create( project=project, role=admin_role, user=admin_user acl.UserAccess(admin_user, project).add_role_to_user( acl.make_or_create_global_readwrite_role_for_project(project) ) key, _ = APIKey.objects.get_or_create( user=admin_user, Loading Loading @@ -264,7 +261,6 @@ def bpython(self, options): "APIKey": APIKey, "Collection": Collection, "File": File, "Permission": Permission, "ObjectPermission": ObjectPermission, "Project": Project, "ProjectAccess": ProjectAccess, Loading src/nui/templates/nui/add_user_to_project.html +15 −2 Original line number Diff line number Diff line <main> <h2>Ajouter un utilisateur</h2> <table class="table table-sm"> <tbody> {% for user in users %} Loading @@ -16,15 +17,27 @@ </span> </td> <td class="text-end"> <form method="post" <form style="display: inline;" method="post" action="{% url "nui:add_user_to_project" project.pk %}" up-submit> {% csrf_token %} <input type="hidden" name="user" value="{{ user.pk }}"> <input type="hidden" name="access" value="ro"> <input type="hidden" name="project" value="{{ project.pk }}"> <button type="submit" class="btn btn-outline-secondary btn-sm"> <i class="bi bi-person-add"></i> ajout</button> lecture seule</button> </form> <form style="display: inline;" method="post" action="{% url "nui:add_user_to_project" project.pk %}" up-submit> {% csrf_token %} <input type="hidden" name="user" value="{{ user.pk }}"> <input type="hidden" name="access" value="rw"> <input type="hidden" name="project" value="{{ project.pk }}"> <button type="submit" class="btn btn-outline-secondary btn-sm"> <i class="bi bi-person-add"></i> lecture / écriture</button> </form> </td> </tr> Loading src/nui/templates/nui/project_manage.html +4 −2 Original line number Diff line number Diff line Loading @@ -17,24 +17,26 @@ <thead> <tr> <th><i class="bi bi-person"></i> utilisateur</th> <th>rôle</th> <th class="text-end"><i class="bi bi-trash"></i> suppression</th> </tr> </thead> {% for project_access in project.accesses %} <tr> <td>{{ project_access.user.username }}</td> <td><a up-layer="new" up-history="false" href="{% url "nui:user_details" project_access.user.pk %}">{{ project_access.user.username }}</a></td> <td>{{ project_access.role.label }}</td> <td class="text-end"> <form method="post" action="{% url "nui:project_manage" project.pk %}" up-submit up-target="#usersTable"> {% csrf_token %} <input type="hidden" name="action" value="remove_access"> <input type="hidden" name="user_id" value="{{ project_access.user.pk }}"> <input type="hidden" name="access_id" value="{{ project_access.pk }}"> <button type="submit" onclick="return confirm('suppression de l\'accès ?');" class="btn btn-outline-secondary btn-sm"><i class="bi bi-person-dash"></i> suppr </button> </form> </td> </tr> {% endfor %} Loading src/nui/templates/nui/user_details.html 0 → 100644 +35 −0 Original line number Diff line number Diff line <main> <h1>{{ user.username }}</h1> <table class="table"> <tbody> <tr> <th>nom du compte</th> <td>{{ user.username }}</td> </tr> <tr> <th>prénom</th> <td>{{ user.first_name }}</td> </tr> <tr> <th>nom de famille</th> <td>{{ user.last_name }}</td> </tr> <tr> <th>email</th> <td>{{ user.email }}</td> </tr> <tr> <th>est super-utilisateur</th> <td>{% if user.is_superuser %}Oui{% else %}Non{% endif %}</td> </tr> <tr> <th>date de création</th> <td>{{ user.date_joined }}</td> </tr> <tr> <th>dernière connexion</th> <td>{{ user.last_login }}</td> </tr> </tbody> </table> </main> src/nui/urls.py +10 −1 Original line number Diff line number Diff line Loading @@ -17,10 +17,19 @@ urlpatterns = [ views.project_manage, name="project_manage", ), path( "role/<int:role_id>/", views.role_manage, name="role_manage", ), path( "user/<int:user_id>/", views.user_details, name="user_details", ), path( "project/<int:project_id>/add_user_to_project/", views.add_user_to_project, name="add_user_to_project", ), # path("test", views.test), ] Loading
src/jama/management/commands/repl.py +3 −7 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ from resources.models import ( Project, APIKey, ProjectAccess, Permission, ObjectPermission, File, ProjectProperty, Loading @@ -30,6 +29,7 @@ from resources.models import ( CollectionMembership, Role, ) from resources import acl def _console_table(title: str, headers: List["str"]) -> Table: Loading Loading @@ -231,11 +231,8 @@ def get_or_create_project(project_label: str) -> Project: 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(): admin_role.permissions.add(permission) ProjectAccess.objects.get_or_create( project=project, role=admin_role, user=admin_user acl.UserAccess(admin_user, project).add_role_to_user( acl.make_or_create_global_readwrite_role_for_project(project) ) key, _ = APIKey.objects.get_or_create( user=admin_user, Loading Loading @@ -264,7 +261,6 @@ def bpython(self, options): "APIKey": APIKey, "Collection": Collection, "File": File, "Permission": Permission, "ObjectPermission": ObjectPermission, "Project": Project, "ProjectAccess": ProjectAccess, Loading
src/nui/templates/nui/add_user_to_project.html +15 −2 Original line number Diff line number Diff line <main> <h2>Ajouter un utilisateur</h2> <table class="table table-sm"> <tbody> {% for user in users %} Loading @@ -16,15 +17,27 @@ </span> </td> <td class="text-end"> <form method="post" <form style="display: inline;" method="post" action="{% url "nui:add_user_to_project" project.pk %}" up-submit> {% csrf_token %} <input type="hidden" name="user" value="{{ user.pk }}"> <input type="hidden" name="access" value="ro"> <input type="hidden" name="project" value="{{ project.pk }}"> <button type="submit" class="btn btn-outline-secondary btn-sm"> <i class="bi bi-person-add"></i> ajout</button> lecture seule</button> </form> <form style="display: inline;" method="post" action="{% url "nui:add_user_to_project" project.pk %}" up-submit> {% csrf_token %} <input type="hidden" name="user" value="{{ user.pk }}"> <input type="hidden" name="access" value="rw"> <input type="hidden" name="project" value="{{ project.pk }}"> <button type="submit" class="btn btn-outline-secondary btn-sm"> <i class="bi bi-person-add"></i> lecture / écriture</button> </form> </td> </tr> Loading
src/nui/templates/nui/project_manage.html +4 −2 Original line number Diff line number Diff line Loading @@ -17,24 +17,26 @@ <thead> <tr> <th><i class="bi bi-person"></i> utilisateur</th> <th>rôle</th> <th class="text-end"><i class="bi bi-trash"></i> suppression</th> </tr> </thead> {% for project_access in project.accesses %} <tr> <td>{{ project_access.user.username }}</td> <td><a up-layer="new" up-history="false" href="{% url "nui:user_details" project_access.user.pk %}">{{ project_access.user.username }}</a></td> <td>{{ project_access.role.label }}</td> <td class="text-end"> <form method="post" action="{% url "nui:project_manage" project.pk %}" up-submit up-target="#usersTable"> {% csrf_token %} <input type="hidden" name="action" value="remove_access"> <input type="hidden" name="user_id" value="{{ project_access.user.pk }}"> <input type="hidden" name="access_id" value="{{ project_access.pk }}"> <button type="submit" onclick="return confirm('suppression de l\'accès ?');" class="btn btn-outline-secondary btn-sm"><i class="bi bi-person-dash"></i> suppr </button> </form> </td> </tr> {% endfor %} Loading
src/nui/templates/nui/user_details.html 0 → 100644 +35 −0 Original line number Diff line number Diff line <main> <h1>{{ user.username }}</h1> <table class="table"> <tbody> <tr> <th>nom du compte</th> <td>{{ user.username }}</td> </tr> <tr> <th>prénom</th> <td>{{ user.first_name }}</td> </tr> <tr> <th>nom de famille</th> <td>{{ user.last_name }}</td> </tr> <tr> <th>email</th> <td>{{ user.email }}</td> </tr> <tr> <th>est super-utilisateur</th> <td>{% if user.is_superuser %}Oui{% else %}Non{% endif %}</td> </tr> <tr> <th>date de création</th> <td>{{ user.date_joined }}</td> </tr> <tr> <th>dernière connexion</th> <td>{{ user.last_login }}</td> </tr> </tbody> </table> </main>
src/nui/urls.py +10 −1 Original line number Diff line number Diff line Loading @@ -17,10 +17,19 @@ urlpatterns = [ views.project_manage, name="project_manage", ), path( "role/<int:role_id>/", views.role_manage, name="role_manage", ), path( "user/<int:user_id>/", views.user_details, name="user_details", ), path( "project/<int:project_id>/add_user_to_project/", views.add_user_to_project, name="add_user_to_project", ), # path("test", views.test), ]