def delete(self): userid_to_delete = self.userid if super(User, self).delete(): # Remove all user-group mappings on successful delete UserInGroup.delete_many({'userid': userid_to_delete}) return True return False
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
def __init__(self, data): super(User, self).__init__(data) if self.groups is None: self.groups = UserInGroup.list_groups({'userid': self.userid})
def delete(self): group_name_to_delete = self.group_name if super(Group, self).delete(): UserInGroup.delete_many({'group_name' : group_name_to_delete}) return True return False
def __init__(self, data): super(Group, self).__init__(data) self.users = UserInGroup.list_users({'group_name': self.group_name})
def delete(self): group_name_to_delete = self.group_name if super(Group, self).delete(): UserInGroup.delete_many({'group_name': group_name_to_delete}) return True return False