Exemple #1
0
    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) )
Exemple #2
0
    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( "/" )
Exemple #3
0
            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()
Exemple #4
0
    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