Avoir des administrateurices de groupes #2

Open
opened 2018-10-01 19:19:09 +02:00 by narmanli · 6 comments
narmanli commented 2018-10-01 19:19:09 +02:00 (Migrated from git.eleves.ens.fr)

Certains bouts du wiki sont en accès restreint (Wiki du COF, etc) grâce à une notion de groupes d'utilisateurices. Pour l'instant, seuls les admins du wiki peuvent ajouter ou retirer des gens de ces groupes. Il faudrait que chaque groupe puisse avoir des admins propre au groupe.


Plan d'attaque suggéré

Ajouter un champ managers dans le modèle WikiGroup

Les "managers" d'un groupe sont les personnes qui ont le droit de modifier la liste des membres d'un groupe.

Faire une page pour voir les membres et admins d'un groupe

  • Écrire une vue qui récupère la liste de membres et des admins d'un groupe et les affiches. La page de tuto correspondante : https://docs.djangoproject.com/en/3.0/intro/tutorial03/
  • Le fichier où écrire la vue : wiki_groups/views.py
  • Ajouter une url dans wiki_groups/urls.py (par exemple edit/<int:group_id>)
  • La listes des utilisateurices contenu⋅e⋅s dans un groupe de wiki (disons group) est obtenue de la façon suivante : group.django_group.user_set.all(). Explication :
    • Nos groupes (modèle WikiGroup dans wiki_groups/models.py) contiennent une liste d'Users et des sous groupes.
    • Django a aussi une notion de groupes qui contiennent seulement une liste d'Users.
    • Le wiki gère les droits d'accès en utilisant les groupes de Django. On fait donc correspondre à chacun de nos groupes "compliqués" un groupe Django "simple" : celui-ci est accessible via l'attribut django_group
    • La liste des utilisateurs d'un groupe django g est obtenue par g.user_set.all()
  • La liste des admins du groupe sera obtenue de façon similaire

Restreindre les accès

Qui peut voir la liste des gens dans un groupe ? À débattre, pour le moment je propose :

Mettre un lien vers la page de gestion d'un groupe depuis la page _groups/graph

Permettre aux admins d'un groupe de mettre à jour le groupe à l'aide d'un formulaire

Pas forcément simple… Des pistes pour commencer :

  • La page du tuto sur les formulaires : https://docs.djangoproject.com/en/3.0/intro/tutorial04/
  • Version simple et rapide pour nous : on demande aux admins de rentrer une liste de clippers et on râle si une des personnes n'existe pas
  • Version bien : avoir un champ "chercher une personne"
  • Truc similaire pour les sous-groupes

À discuter en réu je pense.

Certains bouts du wiki sont en accès restreint (Wiki du COF, etc) grâce à une notion de groupes d'utilisateurices. Pour l'instant, seuls les admins du wiki peuvent ajouter ou retirer des gens de ces groupes. Il faudrait que chaque groupe puisse avoir des admins propre au groupe. --- ## Plan d'attaque suggéré ### Ajouter un champ `managers` dans le modèle `WikiGroup` Les "managers" d'un groupe sont les personnes qui ont le droit de modifier la liste des membres d'un groupe. - Le modèle à modifier est dans `wiki_groups/models.py` - Page du tuto sur les modèles : https://docs.djangoproject.com/en/3.0/intro/tutorial02/ - L'idée, selon le commentaire de tobast plus bas, est de dire que l'ensemble des personnes autorisées à gérer un groupe forment elles-même un groupe. Par exemple on peut dire que le groupe `COF` d'autogère mais que le groupe `Ernestophone` est administré par un sous-groupe `Chef⋅fe⋅s Fanf`. - Le type de champ à utiliser pour ce cas de figure est une `ForeignKey`. La doc correspondante : https://docs.djangoproject.com/en/3.0/ref/models/fields/#foreignkey ### Faire une page pour voir les membres et admins d'un groupe - Écrire une vue qui récupère la liste de membres et des admins d'un groupe et les affiches. La page de tuto correspondante : https://docs.djangoproject.com/en/3.0/intro/tutorial03/ - Le fichier où écrire la vue : `wiki_groups/views.py` - Ajouter une url dans `wiki_groups/urls.py` (par exemple `edit/<int:group_id>`) - La listes des utilisateurices contenu⋅e⋅s dans un groupe de wiki (disons `group`) est obtenue de la façon suivante : `group.django_group.user_set.all()`. Explication : - Nos groupes (modèle `WikiGroup` dans `wiki_groups/models.py`) contiennent une liste d'`User`s et des sous groupes. - Django a aussi une notion de groupes qui contiennent seulement une liste d'`User`s. - Le wiki gère les droits d'accès en utilisant les groupes de Django. On fait donc correspondre à chacun de nos groupes "compliqués" un groupe Django "simple" : celui-ci est accessible via l'attribut `django_group` - La liste des utilisateurs d'un groupe **django** `g` est obtenue par `g.user_set.all()` - La liste des admins du groupe sera obtenue de façon similaire ### Restreindre les accès Qui peut voir la liste des gens dans un groupe ? À débattre, pour le moment je propose : - Au minimum : limiter l'accès aux gens connectés avec `@login_required` https://docs.djangoproject.com/en/3.0/topics/auth/default/#django.contrib.auth.decorators.login_required - Éventuellement : - montrer la liste des **admins** d'un groupe à tout le monde (comme ça on sait qui contacter) - afficher la liste des **membres** d'un groupe seulement aux membres du groupe. ### Mettre un lien vers la page de gestion d'un groupe depuis la page `_groups/graph` - Afficher en dessous du graphe une liste "nom de groupe" → "lien vers la page du groupe" - La version en ligne : https://wiki.eleves.ens.fr/_groups/graph ### Permettre aux admins d'un groupe de mettre à jour le groupe à l'aide d'un formulaire Pas forcément simple… Des pistes pour commencer : - La page du tuto sur les formulaires : https://docs.djangoproject.com/en/3.0/intro/tutorial04/ - Version simple et rapide pour nous : on demande aux admins de rentrer une liste de clippers et on râle si une des personnes n'existe pas - Version bien : avoir un champ "chercher une personne" - Truc similaire pour les sous-groupes À discuter en réu je pense.
tbastian commented 2019-12-13 18:03:27 +01:00 (Migrated from git.eleves.ens.fr)

mentioned in issue #5

mentioned in issue #5
tbastian commented 2019-12-30 17:31:30 +01:00 (Migrated from git.eleves.ens.fr)

Avec #5 du coup un·e group manager serait plutôt un groupe Django j'imagine ? Comme ça on profite de l'arborescence gratuitement, si besoin un jour.

Avec #5 du coup un·e group manager serait plutôt un groupe Django j'imagine ? Comme ça on profite de l'arborescence gratuitement, si besoin un jour.
mpepin commented 2020-01-26 15:31:48 +01:00 (Migrated from git.eleves.ens.fr)

changed title from {-Group manager-} to {+Avoir des administrateurices de groupes+}

changed title from **{-Group manager-}** to **{+Avoir des administrateurices de groupes+}**
mpepin commented 2020-01-26 15:31:48 +01:00 (Migrated from git.eleves.ens.fr)

changed the description

changed the description
mpepin commented 2020-01-26 15:38:42 +01:00 (Migrated from git.eleves.ens.fr)

changed the description

changed the description
thubrecht commented 2021-07-24 04:20:36 +02:00 (Migrated from git.eleves.ens.fr)

mentioned in merge request !15

mentioned in merge request !15
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: DGNum/wiki-eleves#2
No description provided.