Thanks for following up here Harshit. Here are some of my thoughts/ramblings.
On Mar 09, 2016, at 10:51 PM, Harshit Bansal wrote:
I think the "Permissions Systems" would have nothing to do with the core. It would be related to Postorius. We will have to create a style model separately in Postorius which would store the style name and the user who created it. Then only the user who has created the style would be granted the permission to edit it.
Mailing lists have a clear ownership chain.
At the top is the system administrator who has access to the shell. They get to do things no one else can, such as create Python files. Ultimately, they should be able to create immutable styles which serve as the baseline for all other style options. These are immutable because they are defined in Python code.
The sysadmin can delegate style customizations to the server/site owner, which
is a defined role in the core's model. The IUser interface defines a flag
is_server_owner
to define this permission.
The server owners can delegate to domain owners. The IDomain interface has a
owners
attribute which can contain users that have this permission.
Domain owners can then delegate to list owners, and of course there is an
owners
attribute on the IMailingList interface. Mailing lists also have
moderators but those users wouldn't have permission to change list styles.
Here's where it gets complicated. At each level, it should be possible to say "I delegate settings X, Y, and Z to the level below and they can change it to anything they want." But they should also be able to say, "I do not allow the level below to change settings A, B, and C." For example, a domain owner might say, "you list owners can change your welcome messages to anything you want, but you cannot change the footers because for legal reasons this text must appear on every message."
So you have several things you want to be able to specify about each attribute in a style. You want to be able to delegate permission to change a style attribute going down the hierarchy, but you also want to be able to have any particular style attribute delegate its value up the hierarchy. E.g. a list owners could say "I don't really care about the filter_types, just use whatever is in the parent style."
It's likely that the permissions would only be enforced in Postorius, although we can think about how the core would enforce the permissions. The core would definitely support the deferring of style values back up to parent styles.
One other thing to think about is whether some styles will be allowed or disallowed for various domains or mailing lists. E.g. should some styles only be allowed for example.com and others for example.org, or can all of them be allowed for any mailing list on the system? I think at the very least, some segregation based on domain would be useful.
Cheers, -Barry