Пример #1
0
 def get(self):
     "Render a simple add form"
     # get the current user
     user = users.get_current_user()
     logout = users.create_logout_url("/")
     # seed the context with the user details
     
     # initialise session
     sess = gmemsess.Session(self)  
     # get the flash message if any
     book_sess = sess.get("book", "")
     if book_sess:
         book = pickle.loads(book_sess)
     else:
         book = ""
     
     context = {
         "user": user,
         "logout": logout,
         "version": os.environ['CURRENT_VERSION_ID'],
         "book": book,
     }
     # calculate the template path
     path = os.path.join(os.path.dirname(__file__), 'templates',
         'add.html')
     # render the template with the provided context
     self.response.out.write(template.render(path, context))
Пример #2
0
def testForAdmin(self):
    """ checks if the admin is logged in """
    sess = gmemsess.Session(self)
    if 'current_user' in sess:
        return sess['current_user'] == "admin"
    else:
        return False
Пример #3
0
	def initialize(self, *a, **kw):

		webapp2.RequestHandler.initialize(self, *a, **kw)
		#uid = self.read_secure_cookie('user_id')		
		self.session = gmemsess.Session(self)
		uid = self.check_session()		
		self.user = uid and User.by_id(int(uid))
		if self.user is not None: #если пользователь существует сохраняем в объект его uid из датастора
			self.user.uid = int(uid)
Пример #4
0
 def get(self):
     sess = gmemsess.Session(self)
     if sess.is_new():
         template_values = {'errors': ['invalid_session'], 'fields': {}}
         self.response.out.write(
             _render_template('landing.html', template_values))
     else:
         template_values = {'username': sess['username']}
         self.response.out.write(
             _render_template('home.html', template_values))
Пример #5
0
    def post(self):
        """ Submits the PC application """
        if not Phase.isActive("pc_apps"):
            raise UserError("Sorry, PC applications are not available.")

        # two different behaviors, depending on whether the user is logged in
        sess = gmemsess.Session(self)
        if 'current_user' in sess:
            self.postPCAppExistingUser()
        else:
            self.postPCAppNewUser()
Пример #6
0
    def get(self):

        # create a memcache session for storing oauth tokens
        session = gmemsess.Session(self)

        # user does not have access token
        if 'access_token' not in session:

            # user does not have request token
            if 'request_token' not in session:

                # get request token
                request_token = oauthapp.get_request_token(CALLBACK_URL)

                # store unapproved request token in session
                session['request_token'] = request_token.to_string()
                session.save()

                # redirect the user to authorize the request token
                self.redirect(oauthapp.get_authorization_url(request_token))

            else:

                # retrieve approved request token from session
                request_token = yahoo.oauth.RequestToken.from_string(
                    session['request_token'])

                # exchange approved request token for valid access token
                access_token = oauthapp.get_access_token(
                    request_token, self.request.get('oauth_verifier'))

                # store access token in session
                session['access_token'] = access_token.to_string()
                session.save()

                self.redirect(CALLBACK_URL)

        else:

            oauthapp.token = yahoo.oauth.AccessToken.from_string(
                session['access_token'])

            profile = oauthapp.getProfile()
            connections = oauthapp.getConnections()
            updates = oauthapp.getUpdates()

            self.response.out.write(
                template.render(
                    os.path.join(os.path.dirname(__file__),
                                 'templates/social.html'), {
                                     'profile': profile,
                                     'connections': connections,
                                     'updates': updates
                                 }))
Пример #7
0
    def get(self):
        """ Displays the PC Application page """

        if not Phase.isActive("pc_apps"):
            raise UserError("Sorry, PC applications are not available.")

        template_values = {'questions': self.questions}

        # check if the user has already submitted an app
        sess = gmemsess.Session(self)
        if 'current_user' in sess:
            the_user = User.gql("WHERE email = :1", sess['current_user']).get()
            if the_user.pc_application is not None:
                return Forward('alreadyapplied.html')

        template_values['greek'] = Greek.all().order("name")
        return template_values
Пример #8
0
    def post(self):
        "Add the book to the webservice"
        # get the posted data
        title = self.request.get("title")
        ident = self.request.get("ident")
        author = self.request.get("author")
        image = self.request.get("image")
        notes = self.request.get("notes")
        url = self.request.get("url")
        
        book = {
            "title": title,
            "ident": ident,
            "author": author,
            "image": image,
            "notes": notes,
            "url": url,
            "message": ""
        }

        # grab the session data
        sess = gmemsess.Session(self)

        if title and ident and author and image and notes and url:
            # create the JSON object
            json = simplejson.dumps(book, sort_keys=False)
            # work out the url for the book
            url = "%s%s?auth=%s" % (settings.WEB_SERVICE_URL, ident, settings.AUTH)       
            logging.info("Request to add %s (%s)" % (title, ident))
            try:
                # send a PUT request to add or update the book record
                fetch(url, method=PUT, payload=json)
            except DownloadError:
                self.error(500)
            # set the flash message
            sess["flash"] = "Added book %s (%s)" % (title, ident)
            # save the session data
            sess.save()
            self.redirect("/")
            # redirect back to the home page
        else:
            sess["book"] = pickle.dumps(book)
            # save the session data
            sess.save()
            self.redirect("/add")
Пример #9
0
 def get(self):
     sess = gmemsess.Session(self)
     if sess.is_new():
         template_values = {'errors': ['invalid_session'], 'fields': {}}
         self.response.out.write(
             _renderTemplate('landing.html', template_values))
     else:
         #usr = _getUserByName(sess['username'])
         bookmarks = [
             b for b in Bookmark.all().filter('user ='******'userkey']).run()
         ]  # _getBookmarksByUserRef(sess['userkey']) #[]
         tags = [sess['userkey']]  # _getTagsByUserRef(sess['userkey'])
         template_values = {
             'username': sess['username'],
             'bookmarks': bookmarks,
             'tags': tags
         }
         self.response.out.write(
             _renderTemplate('home.html', template_values))
Пример #10
0
    def get(self):
        "Build the admin interface"        
        try:
            # get the JSON from the webservice
            response = fetch("%s?auth=%s" % (settings.WEB_SERVICE_URL, settings.AUTH))
        except DownloadError:
            self.error(500)
        json = response.content
        # convert the JSON to Python objects
        try:
            books = simplejson.loads(json)
        except ValueError:
            books = []
        # initialise the session
        sess = gmemsess.Session(self)  
        # get the flash message if any
        message = sess.get("flash", "")

        # get the current user
        user = users.get_current_user()
        logout = users.create_logout_url("/")
        
        # seed the context with the list of books
        context = {
            "books": books,
            "user": user,
            "logout": logout,
            "version": os.environ['CURRENT_VERSION_ID'],
            "flash": message
        }
        # calculate the template path
        path = os.path.join(os.path.dirname(__file__), 'templates',
            'index.html')
            
        # always clear the flash message
        sess["flash"] = ""
        # save the sessions
        sess.save()
            
        # render the template with the provided context
        self.response.out.write(template.render(path, context))        
Пример #11
0
    def get(self):
        session = gmemsess.Session(self)
        if 'access_token' in session:
            request_token = session[
                'request_token'] if 'request_token' in session else None
            if not request_token:
                self.response.out.write("No un-authed token found in session")
                return
            token = oauth.OAuthToken.from_string(request_token)
            if token.key != urllib.unquote(
                    self.request.get('oauth_token', 'no-token')):
                self.response.out.write(
                    "Something went wrong! Tokens do not match")
                return
            session.save()

            self.redirect('/')

        else:
            path = os.path.join(os.path.dirname(__file__),
                                'templates/index.html')
            self.response.out.write(template.render(path, {}))
Пример #12
0
 def post(self):
     "Delete a book from the webservice datastore"
     # get the ident from the request
     ident = self.request.get("ident")
     # work out the webservice url
     url = "%s%s?auth=%s" % (settings.WEB_SERVICE_URL, ident, settings.AUTH)
     logging.info("Request to delete book with ident %s" % ident)
     try:
         # send a DELETE request for that record
         fetch(url, method=DELETE)
     except DownloadError:
         self.error(500)        
         
     # grab the session data
     sess = gmemsess.Session(self)
     # set the flash message
     sess["flash"] = "Deleted book with ident %s" % ident
     # save the session data
     sess.save()
             
     # reirect back to the home page
     self.redirect("/")
Пример #13
0
 def post(self):
     sess = gmemsess.Session(self)
     if sess.is_new():
         template_values = {'errors': ['invalid_session'], 'fields': {}}
         self.response.out.write(
             _renderTemplate('landing.html', template_values))
     else:
         errors = []
         fields = {
             'bmarktitle': self.request.get('bmarktitle').strip(),
             'bmarklink': self.request.get('bmarklink').strip(),
             'bmarktags': self.request.get('bmarktags').strip()
         }
         if self.request.get('bmarktitle').strip() == '':
             errors.append('blank_bmarktitle')
         if self.request.get('bmarklink').strip() == '':
             errors.append('blank_bmarklink')
         if len(errors) == 0:
             usr = _getUserByName(sess['username'])
             if usr:
                 bmk = Bookmark(
                     title=self.request.get('bmarktitle').strip(),
                     link=self.request.get('bmarklink').strip(),
                     user=usr)
                 bmk.put()
             else:
                 errors.append('user_not_found')
         if len(errors) == 0:
             if self.request.get('bmarktags').strip() != '':
                 nams = self.request.get('bmarktags').strip().split(',')
                 for nam in nams:
                     objtag = Tag(name=nam, user=usr)
                     objtag.put()
                     bmktag = BookmarkTag(bookmark=bmk, tag=objtag)
                     bmktag.put()
         template_values = {'errors': errors, 'fields': fields}
         self.response.out.write(
             _renderTemplate('home.html', template_values))
Пример #14
0
def updateSessionForLogin(self, username):
    sess = gmemsess.Session(self)
    sess['current_user'] = username
    sess.save()
Пример #15
0
 def post(self):
     errors = []
     fields = {
         'username': self.request.get('username').strip(),
         'newusername': self.request.get('newusername').strip(),
         'newemail': self.request.get('newemail').strip()
     }
     if self.request.get('username').strip() != '':
         if self.request.get('password').strip() == '':
             errors.append('blank_password')
         if len(errors) == 0:
             query = User.all()
             query.filter('name =', self.request.get('username').strip())
             if query.count() > 0:
                 obj = query.get()
                 if obj.password != self.request.get('password').strip():
                     errors.append('wrong_password')
             else:
                 errors.append('unknown_username')
         if len(errors) == 0:
             sess = gmemsess.Session(self)
             sess['username'] = self.request.get('username').strip()
             sess.save()
             self.redirect('/home')
         else:
             template_values = {'errors': errors, 'fields': fields}
             self.response.out.write(
                 _render_template('landing.html', template_values))
     else:
         if self.request.get('newusername').strip() == '':
             errors.append('blank_newusername')
         if self.request.get('newemail').strip() == '':
             errors.append('blank_newemail')
         if self.request.get('newpassword').strip() == '':
             errors.append('blank_newpassword')
         if self.request.get('newconfirm').strip() == '':
             errors.append('blank_newconfirm')
         if not 'blank_newpassword' in errors and not 'blank_newconfirm' in errors:
             if self.request.get('newpassword').strip() != self.request.get(
                     'newconfirm').strip():
                 errors.append('different_passwords')
         if len(errors) == 0:
             query = User.all()
             query.filter('name =', self.request.get('newusername').strip())
             if query.count() > 0:
                 errors.append('username_taken')
         if len(errors) == 0:
             query = User.all()
             query.filter('email =', self.request.get('newemail').strip())
             if query.count() > 0:
                 errors.append('email_taken')
         if len(errors) == 0:
             obj = User(name=self.request.get('newusername').strip(),
                        email=self.request.get('newemail').strip(),
                        password=self.request.get('newpassword').strip(),
                        status='new')
             obj.put()
             self.redirect('/signup')
         else:
             template_values = {'errors': errors, 'fields': fields}
             self.response.out.write(
                 _render_template('landing.html', template_values))
Пример #16
0
 def get(self):
     sess = gmemsess.Session(self)
     sess.invalidate()
     self.redirect('/landing')
Пример #17
0
def updateSessionForLogin(self, username):
    """ assign the username to the session """
    sess = gmemsess.Session(self)
    sess['current_user'] = username
    sess.save()