| Index: appengine/monorail/sitewide/group_helpers.py
|
| diff --git a/appengine/monorail/sitewide/group_helpers.py b/appengine/monorail/sitewide/group_helpers.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b35351e1501f2ba7957ce893bbdc1f47261c854f
|
| --- /dev/null
|
| +++ b/appengine/monorail/sitewide/group_helpers.py
|
| @@ -0,0 +1,73 @@
|
| +# Copyright 2016 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is govered by a BSD-style
|
| +# license that can be found in the LICENSE file or at
|
| +# https://developers.google.com/open-source/licenses/bsd
|
| +
|
| +"""Helper functions used in user group modules."""
|
| +
|
| +from framework import framework_views
|
| +from proto import usergroup_pb2
|
| +
|
| +
|
| +class GroupVisibilityView(object):
|
| + """Object for group visibility information that can be easily used in EZT."""
|
| +
|
| + VISIBILITY_NAMES = {
|
| + usergroup_pb2.MemberVisibility.ANYONE: 'Anyone on the Internet',
|
| + usergroup_pb2.MemberVisibility.MEMBERS: 'Group Members',
|
| + usergroup_pb2.MemberVisibility.OWNERS: 'Group Owners'}
|
| +
|
| + def __init__(self, group_visibility_enum):
|
| + self.key = int(group_visibility_enum)
|
| + self.name = self.VISIBILITY_NAMES[group_visibility_enum]
|
| +
|
| +
|
| +class GroupTypeView(object):
|
| + """Object for group type information that can be easily used in EZT."""
|
| +
|
| + TYPE_NAMES = {
|
| + usergroup_pb2.GroupType.CHROME_INFRA_AUTH: 'Chrome-infra-auth',
|
| + usergroup_pb2.GroupType.MDB: 'MDB',
|
| + usergroup_pb2.GroupType.BAGGINS: 'Baggins'}
|
| +
|
| + def __init__(self, group_type_enum):
|
| + self.key = int(group_type_enum)
|
| + self.name = self.TYPE_NAMES[group_type_enum]
|
| +
|
| +
|
| +class GroupMemberView(framework_views.UserView):
|
| + """Wrapper class to display basic group member information in a template."""
|
| +
|
| + def __init__(self, user_id, email, obscure_email, group_id, role):
|
| + assert role in ['member', 'owner']
|
| + super(GroupMemberView, self).__init__(
|
| + user_id, email, obscure_email)
|
| + self.group_id = group_id
|
| + self.role = role
|
| +
|
| +
|
| +def BuildUserGroupVisibilityOptions():
|
| + """Return a list of user group visibility values for use in an HTML menu.
|
| +
|
| + Returns:
|
| + A list of GroupVisibilityView objects that can be used in EZT.
|
| + """
|
| + vis_levels = [usergroup_pb2.MemberVisibility.OWNERS,
|
| + usergroup_pb2.MemberVisibility.MEMBERS,
|
| + usergroup_pb2.MemberVisibility.ANYONE]
|
| +
|
| + return [GroupVisibilityView(vis) for vis in vis_levels]
|
| +
|
| +
|
| +def BuildUserGroupTypeOptions():
|
| + """Return a list of user group types for use in an HTML menu.
|
| +
|
| + Returns:
|
| + A list of GroupTypeView objects that can be used in EZT.
|
| + """
|
| + group_types = [usergroup_pb2.GroupType.CHROME_INFRA_AUTH,
|
| + usergroup_pb2.GroupType.MDB,
|
| + usergroup_pb2.GroupType.BAGGINS]
|
| +
|
| + return sorted([GroupTypeView(gt) for gt in group_types],
|
| + key=lambda gtv: gtv.name)
|
|
|