def update(self, users): UserInGroup.delete_many({'group_name': self.group_name}) user_in_group_data = [] unique_users = set(users) for userid in unique_users: doc = {'userid': userid, 'group_name': self.group_name} user_in_group_data.append(doc) UserInGroup.insert_many(user_in_group_data) return True
def update(self, users): UserInGroup.delete_many({'group_name' : self.group_name}) user_in_group_data = [] unique_users = set(users) for userid in unique_users: doc = { 'userid': userid, 'group_name': self.group_name } user_in_group_data.append(doc) UserInGroup.insert_many(user_in_group_data) return True
def insert(self): # Overriding insert can ensure concurrency of user_in_group data on updates too # This is because insert is currently invoked by update if super(User, self).insert(): # Create user-group mappings on successful insert uigs = [] cached_group_lookups = {} if getattr(self, 'groups', None) is not None: for group_name in self.groups: if group_name not in cached_group_lookups: group = Group(group_name) if not group.exists_in_db(): cached_group_lookups[group_name] = group.insert() uig = {'userid': self.userid, 'group_name': group_name} uigs.append(uig) UserInGroup.insert_many(uigs) return True return False