Le système de groupes
Il existe deux types de groupes sur le site AE. L’un se base sur des groupes enregistrés en base de données pendant le développement, c’est le système de groupes réels. L’autre est plus dynamique et comprend tous les groupes générés pendant l’exécution et l’utilisation du programme. Cela correspond généralement aux groupes liés aux clubs. Ce sont les méta groupes.
La définition d’un groupe
Comme on peut l’observer, il existe une entrée de groupes dans la base de données. Cette classe implémente à la fois les groupes réels et les méta groupes.
Ce qui différencie ces deux types de groupes ce sont leur utilisation et leur manière d’être générés. La distinction est faite au travers de la propriété is_meta.
- class core.models.Group(*args, **kwargs)
Implement both RealGroups and Meta groups
Groups are sorted by their is_meta property
- exception DoesNotExist
- exception MultipleObjectsReturned
- description
Description of the group
- get_absolute_url()
This is needed for black magic powered UpdateView’s children
- is_meta
If False, this is a RealGroup
Les groupes réels
Pour simplifier l’utilisation de ces deux types de groupe, il a été crée une classe proxy (c’est à dire qu’elle ne correspond pas à une vraie table en base de donnée) qui encapsule leur utilisation. RealGroup peut être utilisé pour créer des groupes réels dans le code et pour faire une recherche sur ceux-ci (dans le cadre d’une vérification de permissions par exemple).
- class core.models.RealGroup(*args, **kwargs)
RealGroups are created by the developer. Most of the time they match a number in settings to be easily used for permissions.
- exception DoesNotExist
- exception MultipleObjectsReturned
- objects = <core.models.RealGroupManager object>
Assign a manager in a way that MetaGroup.objects only return groups with is_meta=True
Note
N’oubliez pas de créer une variable dans les settings contenant le numéro du groupe pour facilement l’utiliser dans le code plus tard. Ces variables sont du type SITH_GROUP_GROUPE_NAME_ID.
Les méta groupes
Les méta groupes, comme expliqué précédemment, sont utilisés dans les contextes où il est nécessaire de créer un groupe on runtime. Les objets MetaGroup, bien que dynamiques, doivent tout de même s’enregistrer en base de donnée comme des vrais groupes afin de pouvoir être affectés dans les permissions d’autres objets, comme un forum ou une page de wiki par exemple. C’est principalement utilisé au travers des clubs qui génèrent automatiquement deux groupes à leur création :
club-bureau : contient tous les membres d’un club au dessus du grade défini dans settings.SITH_MAXIMUM_FREE_ROLE.
club-membres : contient tous les membres d’un club en dessous du grade défini dans settings.SITH_MAXIMUM_FREE_ROLE.
- class core.models.MetaGroup(*args, **kwargs)
MetaGroups are dynamically created groups. Generaly used with clubs where creating a club creates two groups:
club-SITH_BOARD_SUFFIX
club-SITH_MEMBER_SUFFIX
- exception DoesNotExist
- exception MultipleObjectsReturned
- objects = <core.models.MetaGroupManager object>
Assign a manager in a way that MetaGroup.objects only return groups with is_meta=False
La liste des groupes réels
Les groupes réels existant par défaut dans le site sont les suivants :
Groupes gérés automatiquement par le site :
Public -> tous les utilisateurs du site
Subscribers -> tous les cotisants du site
Old subscribers -> tous les anciens cotisants
Groupes gérés par les administrateurs (à appliquer à la main sur un utilisateur) :
Root -> administrateur global du site
Accounting admin -> les administrateurs de la comptabilité
Communication admin -> les administrateurs de la communication
Counter admin -> les administrateurs des comptoirs (foyer et autre)
SAS admin -> les administrateurs du SAS
Forum admin -> les administrateurs du forum
Pedagogy admin -> les administrateurs de la pédagogie (guide des UVs)
Banned from buying alcohol -> les utilisateurs interdits de vente d’alcool (non mineurs)
Banned from counters -> les utilisateurs interdits d’utilisation des comptoirs
Banned to subscribe -> les utilisateurs interdits de cotisation