diff options
| author | Barry Warsaw | 2015-09-20 15:43:28 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2015-09-23 16:27:20 -0400 |
| commit | dfc1cff78e820cc13b0c3a7df3d7f4326c62704f (patch) | |
| tree | d0244a098a1368f80e4d494240bb5c50a4be4fa4 /src | |
| parent | 4f1fba02f119053a54fcd192b03c2bb78b596f52 (diff) | |
| download | mailman-dfc1cff78e820cc13b0c3a7df3d7f4326c62704f.tar.gz mailman-dfc1cff78e820cc13b0c3a7df3d7f4326c62704f.tar.zst mailman-dfc1cff78e820cc13b0c3a7df3d7f4326c62704f.zip | |
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman/interfaces/usermanager.py | 3 | ||||
| -rw-r--r-- | src/mailman/model/docs/usermanager.rst | 44 | ||||
| -rw-r--r-- | src/mailman/model/usermanager.py | 9 |
3 files changed, 55 insertions, 1 deletions
diff --git a/src/mailman/interfaces/usermanager.py b/src/mailman/interfaces/usermanager.py index 5f3a324cc..da2f460df 100644 --- a/src/mailman/interfaces/usermanager.py +++ b/src/mailman/interfaces/usermanager.py @@ -126,3 +126,6 @@ class IUserManager(Interface): members = Attribute( """An iterator of all the `IMembers` in the database.""") + + server_owners = Attribute( + """An iterator over all the `IUsers` who are server owners.""") diff --git a/src/mailman/model/docs/usermanager.rst b/src/mailman/model/docs/usermanager.rst index 8e40b621e..a98f88670 100644 --- a/src/mailman/model/docs/usermanager.rst +++ b/src/mailman/model/docs/usermanager.rst @@ -201,3 +201,47 @@ The user has a single unverified address object. >>> for address in cris.addresses: ... print(repr(address)) <Address: Cris Person <cris@example.com> [not verified] at ...> + + +Server owners +============= + +Some users are designated as *server owners*. At first there are no server +owners. + + >>> len(list(user_manager.server_owners)) + 0 + +Dan is made a server owner. + + >>> user_4.is_server_owner = True + >>> owners = list(user_manager.server_owners) + >>> len(owners) + 1 + >>> owners[0] + <User "Dan Person" (...) at ...> + +Now Ben and Claire are also made server owners. + + >>> user_2.is_server_owner = True + >>> user_3.is_server_owner = True + >>> owners = list(user_manager.server_owners) + >>> len(owners) + 3 + >>> from operator import attrgetter + >>> for user in sorted(owners, key=attrgetter('display_name')): + ... print(user) + <User "Ben Person" (...) at ...> + <User "Claire Person" (...) at ...> + <User "Dan Person" (...) at ...> + +Clair retires as a server owner. + + >>> user_3.is_server_owner = False + >>> owners = list(user_manager.server_owners) + >>> len(owners) + 2 + >>> for user in sorted(owners, key=attrgetter('display_name')): + ... print(user) + <User "Ben Person" (...) at ...> + <User "Dan Person" (...) at ...> diff --git a/src/mailman/model/usermanager.py b/src/mailman/model/usermanager.py index 3d7777099..5d63a2146 100644 --- a/src/mailman/model/usermanager.py +++ b/src/mailman/model/usermanager.py @@ -141,4 +141,11 @@ class UserManager: def members(self, store): """See `IUserManager.""" for member in store.query(Member).all(): - yield member + yield member + + @property + @dbconnection + def server_owners(self, store): + """ See `IUserManager.""" + users = store.query(User).filter_by(is_server_owner=True) + yield from users |
