def post( self, group_id ): ur = UserRepository() gr = GroupRepository() user = self.get_current_user() group = gr.fetch(group_id) gr.get_group_maintainer(group) user_group_ids = [ g.id for g in gr.get_groups_of_user(user.id) ] supergroups = gr.get_supergroup_list(group_id) # TODO: Add logic to prevent user from leaving if they're in a subgroup # of the current group. group_root = gr.get_user_group_tree(user.id, long(group_id)) # The group must be a non-root group to consider removal. Also, the user # cannot be in any of the subgroups. if len(supergroups) != 0 and len(group_root.subgroups) == 0: supergroup = supergroups[-1] # Case 1: User requested group deletion (user is maintainer + empty). if group.maintainerId == user.id and gr.get_group_size(group.id) == 1: gr.remove(group) self.redirect( "/group/" + str(supergroup.id) ) return # Case 2: User requested to leave the group (user is in group). if group.id in user_group_ids: user.groups = [ gid for gid in user_group_ids if gid != group.id ] ur.persist(user) self.redirect( "/group/" + str(supergroup.id) ) return self.redirect( "/group/" + str(group_id) )
def post( self ): unique = str(uuid.uuid4()) user_email = self.get_argument( "user_email" ) user_nickname = self.get_argument( "user_nickname" ) user_password = self.get_argument( "user_password" ) # add this user to the database. user = User() user.email = self.get_argument("user_email") user.name = self.get_argument("user_nickname") user.password = self.get_argument("user_password") user.confirmUUID = unique uiuc = self.get_root_group() repo = UserRepository() repo.persist(user) user = repo.get_user_by_email(user_email) repo.add_user_to_group(user, uiuc) repo.close() ## Send a verification email to the user m = CukeMail() m.send_verification(unique, user.email) self.redirect( "/" )
def handle_response(response): sys.stderr.write("response = " + str(response) + '\n') data = json.loads(response.body) r_token = data['refresh_token'] user_id = self.get_query_argument("state") sys.stderr.write("user_id = " + str(user_id) + '\n') sys.stderr.write("refresh_token = " + r_token + '\n') user_repo = UserRepository() user = user_repo.fetch(user_id) user.refreshTok = r_token user_repo.persist(user) user_repo.close()
def _persist_user(self, user): """Save any user changes to the database""" user_repo = UserRepository() user = user_repo.persist(user) user_repo.close() return user