예제 #1
0
    def get(self, username):
        """display profile of user with username, if None, display logged in user
        """
        mode = self.request.get('mode')
        upload_url = ""

        if mode != 'edit':
            template = 'profile/profile.html'
        else:
            if self.username != username:
                return self.abort(403)
            template = 'profile/edit.html'

        if self.user:
            user = User.get_by_id(long(self.user_id))
        else:
            user = None

        if user:
            if username != user.username:
                profile = User.get_user(username)
                if not profile or \
                   (profile.public == False and \
                    profile.username != user.username and \
                    profile.username not in user.friends):

                    #TODO: redirect to profile forbidden page
                    return self.abort(404)
            else:
                profile = user

            self.form.process(obj=profile)
            all, ic, cc = self.organize_courses_for(profile)

            projects = Project.get_projects_by_ids(profile.projects)

            context = {'profile': profile,
                       'user': user,
                       'username': username,
                       'gravatar': profile.gravatar,
                       'friend_btn': username != user.username and username not in user.friends,
                       'courses_all': Course.courses_to_dict(),
                       'courses_completed': cc,
                       'courses_incomplete': ic,
                       'projects': projects,
                       'upload_url': upload_url,
            }

            self.render_template(template, **context)
        else:
            self.redirect(self.uri_for('login'))
예제 #2
0
    def post(self):
        """Edit settings
        """
        if not self.form.validate():
            return self.get()

        user = User.get_by_id(long(self.user_id))

        self.form.populate_obj(user)
        user.put()

        message = _("Settings saved")
        self.add_message(message, 'info')

        self.redirect(self.request.url)
예제 #3
0
파일: home.py 프로젝트: joshz/udacityplus
    def get(self, **kwargs):
        user_session = self.user
        user_session_object = self.auth.store.get_session(self.request)
        if self.user_id:
            user_info = User.get_by_id(long( self.user_id ))
            user_info_object = self.auth.store.user_model.get_by_auth_token(
                user_session['user_id'], user_session['token'])

            try:
                params = {
                    "user_session" : user_session,
                    "user_session_object" : user_session_object,
                    "user_info" : user_info,
                    "user_info_object" : user_info_object,
                    "userinfo_logout-url" : self.auth_config['logout_url'],
                    "friends": user_info.get_friends()
                    }
                return self.render_template('userhome.html', **params)
            except (AttributeError, KeyError), e:
                return "Secure zone error:" + " %s." % e
예제 #4
0
    def view_project(self, mode, username):
        if mode in ('add', 'edit'):
            upload_url = blobstore.create_upload_url(
                self.uri_for('project-%s' % mode, username=username),
                max_bytes_per_blob=MAX_IMG_SIZE)
            template = 'profile/{}_project.html'.format(mode)

            if self.user:
                user = User.get_by_id(long(self.user_id))

                projects = Project.get_projects_by_ids(user.projects)

                context = {
                    'user': user,
                    'gravatar': user.gravatar,
                    'projects': projects,
                    'upload_url': upload_url,
                    }

                return self.render_template(template, **context)
        self.redirect(self.uri_for('login', continue_url=self.request.path))
예제 #5
0
파일: chat.py 프로젝트: joshz/udacityplus
    def post(self, channelname):
        '''Displays chat UI'''
        username = self.username

#        if chat.get_user(username):
#            message = _("Username already in use")
#            self.add_message(message, 'error')
#            return self.redirect(self.request.url)
        available_channels = set(Course.available_course_ids())
        available_channels.add('Global')
        if channelname not in available_channels:
            #TODO: doesn't return info
            message = _("Channel not available")
            self.add_message(message, 'error')
            return self.redirect_to(self.request.url)


        channelname = "#{}".format(channelname)

        token = chat.channel_api.create_channel(username) # Expires after 120 minutes
        logging.info("%s is a token. type of token: %s"%(token,type(token)))
        identifier = os.urandom(16).encode('hex')
        user = ChatUser(user=User.get_by_id(self.user_id),
            id=username,
            username=username,
            identifier=identifier,
            startingchannel=channelname,
            connected=True,
            contacts=json.dumps([ ]),
            channels=json.dumps([ ]))
        user.store()
        self.response.out.write(self.render_template("chat/chat.html", token=token,
            username=username,
            identifier=identifier,
            server="!AwesomeServer",
            room=channelname))
예제 #6
0
 def get(self):
     profile = User.get_by_id(long(self.user_id))
     self.form.process(obj=profile)
     self.render_template('usersettings.html')