With pinax-teams giving us a beachhead for team-based web applications, it is
important for us to consider how to make our Django apps easily used within this
team context. How do we make them team aware without sacrificing the loose
coupling that makes Django apps so great?
I have some ideas specifically around the integration of pinax-wiki with teams
that I'd like to explore and propose.
App Level Roles
It's easy to conflate team management roles with site-level and app-level roles.
To be clear, the roles on the Membership model in pinax-teams is solely for
the management of team membership.
To make pinax-teams extra powerful would be to be extensible so that if team
aware apps were in INSTALLED_APPS, extra interface would appear on the team
management page that allowed a Manager of the team to set the roles for the
different apps that are installed.
Groups
We could have the following models added to pinax-teams:
Group:
label
GroupRole:
group
label
GroupMembership:
group
team
user
role
In the initialization code for pinax-teams we can loop over the INSTALLED_APPS
and import any groups.py module and execute an install() method if it exists.
This will basically do get_or_create's on Group and GroupRole to install
the data that this app will need.
The presence of these groups and inform the UI on the team management pages,
perhaps tabs for each Group found, with the ability to add/edit/delete members
from the different groups.
Hooksets
In each app that is going to be made team aware and is providing the contracted
groups.py module and install() method, a default hookset will be defined so
that default interpretation of security could be provided but also so that one
could easily override this at the site level.
On Team Aware Apps
With
pinax-teams
giving us a beachhead for team-based web applications, it is important for us to consider how to make our Django apps easily used within this team context. How do we make them team aware without sacrificing the loose coupling that makes Django apps so great?I have some ideas specifically around the integration of pinax-wiki with teams that I'd like to explore and propose.
App Level Roles
It's easy to conflate team management roles with site-level and app-level roles. To be clear, the roles on the
Membership
model in pinax-teams is solely for the management of team membership.To make pinax-teams extra powerful would be to be extensible so that if team aware apps were in
INSTALLED_APPS
, extra interface would appear on the team management page that allowed a Manager of the team to set the roles for the different apps that are installed.Groups
We could have the following models added to pinax-teams:
In the initialization code for pinax-teams we can loop over the
INSTALLED_APPS
and import anygroups.py
module and execute aninstall()
method if it exists. This will basically doget_or_create
's onGroup
andGroupRole
to install the data that this app will need.The presence of these groups and inform the UI on the team management pages, perhaps tabs for each Group found, with the ability to add/edit/delete members from the different groups.
Hooksets
In each app that is going to be made team aware and is providing the contracted
groups.py
module andinstall()
method, a default hookset will be defined so that default interpretation of security could be provided but also so that one could easily override this at the site level.