Ejemplo n.º 1
0
 def testGetGroupSettings_SomeGroups(self):
   self.SetUpGetGroupSettings(
       [777, 888, 999],
       [(888, 'anyone', None, 0, 1, 0), (999, 'members', None, 0, 1, 0)])
   self.mox.ReplayAll()
   actual_settings_dict = self.usergroup_service.GetAllGroupSettings(
       self.cnxn, [777, 888, 999])
   self.mox.VerifyAll()
   self.assertEqual(
       {888: usergroup_pb2.MakeSettings('anyone'),
        999: usergroup_pb2.MakeSettings('members')},
       actual_settings_dict)
Ejemplo n.º 2
0
    def GetAllUserGroupsInfo(self, cnxn):
        """Fetch (addr, member_count, usergroup_settings) for all user groups."""
        group_rows = self.usergroupsettings_tbl.Select(
            cnxn,
            cols=['email'] + USERGROUPSETTINGS_COLS,
            left_joins=[('User ON UserGroupSettings.group_id = User.user_id',
                         [])])
        count_rows = self.usergroup_tbl.Select(cnxn,
                                               cols=['group_id', 'COUNT(*)'],
                                               group_by=['group_id'])
        count_dict = dict(count_rows)

        group_ids = [g[1] for g in group_rows]
        friends_dict = self.GetAllGroupFriendProjects(cnxn, group_ids)

        user_group_info_tuples = [
            (email, count_dict.get(group_id, 0),
             usergroup_pb2.MakeSettings(visiblity, group_type, last_sync_time,
                                        friends_dict.get(group_id, []),
                                        bool(notify_members),
                                        bool(notify_group)), group_id)
            for (email, group_id, visiblity, group_type, last_sync_time,
                 notify_members, notify_group) in group_rows
        ]
        return user_group_info_tuples
Ejemplo n.º 3
0
    def GetAllUserGroupsInfo(self, cnxn):
        """Fetch (addr, member_count, usergroup_settings) for all user groups."""
        group_rows = self.usergroupsettings_tbl.Select(
            cnxn,
            cols=[
                'group_id', 'email', 'who_can_view_members',
                'external_group_type', 'last_sync_time'
            ],
            left_joins=[('User ON UserGroupSettings.group_id = User.user_id',
                         [])])
        count_rows = self.usergroup_tbl.Select(cnxn,
                                               cols=['group_id', 'COUNT(*)'],
                                               group_by=['group_id'])
        count_dict = dict(count_rows)
        group_ids = [g[0] for g in group_rows]
        friends_dict = self.GetAllGroupFriendProjects(cnxn, group_ids)

        user_group_info_tuples = [
            (email, count_dict.get(group_id, 0),
             usergroup_pb2.MakeSettings(visiblity, group_type, last_sync_time,
                                        friends_dict.get(group_id,
                                                         [])), group_id)
            for (group_id, email, visiblity, group_type,
                 last_sync_time) in group_rows
        ]
        return user_group_info_tuples
Ejemplo n.º 4
0
 def testMakeSettings_Defaults(self):
     usergroup = usergroup_pb2.MakeSettings('anyone')
     self.assertEqual(usergroup_pb2.MemberVisibility.ANYONE,
                      usergroup.who_can_view_members)
     self.assertIsNone(usergroup.ext_group_type)
     self.assertEqual(0, usergroup.last_sync_time)
     self.assertEqual([], usergroup.friend_projects)
Ejemplo n.º 5
0
 def testUpdateSettings_WithFriends(self):
     self.SetUpUpdateSettings(888L, 'anyone', friend_projects=[789])
     self.mox.ReplayAll()
     self.usergroup_service.UpdateSettings(
         self.cnxn, 888L,
         usergroup_pb2.MakeSettings('anyone', friend_projects=[789]))
     self.mox.VerifyAll()
Ejemplo n.º 6
0
 def testUpdateSettings_Import(self):
   self.SetUpUpdateSettings(888, 'owners', 'mdb')
   self.mox.ReplayAll()
   self.usergroup_service.UpdateSettings(
       self.cnxn, 888,
       usergroup_pb2.MakeSettings('owners', 'mdb'))
   self.mox.VerifyAll()
Ejemplo n.º 7
0
  def testConstructor(self):
    group_settings = usergroup_pb2.MakeSettings('anyone')
    view = sitewide_views.GroupView('groupname', 123, group_settings, 999)

    self.assertEqual('groupname', view.name)
    self.assertEqual(123, view.num_members)
    self.assertEqual('ANYONE', view.who_can_view_members)
    self.assertEqual('/g/999/', view.detail_url)
Ejemplo n.º 8
0
  def testConvertGroupSettings(self):
    """Test convert_group_settings."""

    setting = usergroup_pb2.MakeSettings('owners', 'mdb', 0)
    result = api_pb2_v1_helpers.convert_group_settings('test-group', setting)
    self.assertEquals('test-group', result.groupName)
    self.assertEquals(
        setting.who_can_view_members, result.who_can_view_members)
    self.assertEquals(setting.ext_group_type, result.ext_group_type)
    self.assertEquals(setting.last_sync_time, result.last_sync_time)
Ejemplo n.º 9
0
 def testMakeSettings_Everything(self):
     usergroup = usergroup_pb2.MakeSettings('Members',
                                            ext_group_type_str='mdb',
                                            last_sync_time=1234567890,
                                            friend_projects=[789])
     self.assertEqual(usergroup_pb2.MemberVisibility.MEMBERS,
                      usergroup.who_can_view_members)
     self.assertEqual(usergroup_pb2.GroupType.MDB, usergroup.ext_group_type)
     self.assertEqual(1234567890, usergroup.last_sync_time)
     self.assertEqual([789], usergroup.friend_projects)
Ejemplo n.º 10
0
 def GetAllGroupSettings(self, cnxn, group_ids):
     """Fetch {group_id: group_settings} for the specified groups."""
     # TODO(jrobbins): add settings to control who can join, etc.
     rows = self.usergroupsettings_tbl.Select(cnxn,
                                              cols=USERGROUPSETTINGS_COLS,
                                              group_id=group_ids)
     friends_dict = self.GetAllGroupFriendProjects(cnxn, group_ids)
     settings_dict = {
         group_id:
         usergroup_pb2.MakeSettings(vis, group_type, last_sync_time,
                                    friends_dict.get(group_id, []))
         for group_id, vis, group_type, last_sync_time in rows
     }
     return settings_dict
Ejemplo n.º 11
0
    def CreateGroup(self,
                    cnxn,
                    services,
                    group_name,
                    who_can_view_members,
                    ext_group_type=None,
                    friend_projects=None):
        """Create a new user group.

    Args:
      cnxn: connection to SQL database.
      services: connections to backend services.
      group_name: string email address of the group to create.
      who_can_view_members: 'owners', 'members', or 'anyone'.
      ext_group_type: The type of external group to import.
      friend_projects: The project ids declared as group friends to view its
        members.

    Returns:
      int group_id of the new group.
    """
        friend_projects = friend_projects or []
        assert who_can_view_members in ('owners', 'members', 'anyone')
        if ext_group_type:
            ext_group_type = str(ext_group_type).lower()
            assert ext_group_type in GROUP_TYPE_ENUM, ext_group_type
            assert who_can_view_members == 'owners'
        group_id = services.user.LookupUserID(cnxn,
                                              group_name.lower(),
                                              autocreate=True,
                                              allowgroups=True)
        group_settings = usergroup_pb2.MakeSettings(who_can_view_members,
                                                    ext_group_type, 0,
                                                    friend_projects)
        self.UpdateSettings(cnxn, group_id, group_settings)
        self.group_id_cache.InvalidateAll(cnxn)
        return group_id
Ejemplo n.º 12
0
 def testUpdateSettings_Normal(self):
     self.SetUpUpdateSettings(888L, 'anyone')
     self.mox.ReplayAll()
     self.usergroup_service.UpdateSettings(
         self.cnxn, 888L, usergroup_pb2.MakeSettings('anyone'))
     self.mox.VerifyAll()