示例#1
0
 def get(self):
     session = get_current_session()        
     frob = self.request.get('frob') 
     if not frob:
         self.response.out.write("no frob")
         return
     
     nickname = session.get("nickname", 0)
     if not nickname:
         self.response.out.write("no nickname")
         return
     userinfo = UserInfo.gql("WHERE nickname=:1", nickname).get()
     if not userinfo:
         self.response.out.write("no user")
         return
          
     flickr_api_key = userinfo.flickr_api_key
     flickr_api_secret = userinfo.flickr_api_secret
     flickr = flickrapi.FlickrAPI(
                 flickr_api_key, 
                 flickr_api_secret, 
                 store_token=False)
         
     try:
         token = flickr.get_token(frob)
         e = TokenEntity.gql("WHERE nickname=:1", nickname).get()
         if not e:
             e = TokenEntity()
         e.username = nickname
         e.token = token
         e.put()
         #session['flickr_token'] = token
     except Exception as e:
         print "Unexpected error:", e.message
     self.redirect('/setting')
示例#2
0
 def post(self):
     nickname = self.request.get('nickname')
     password = self.request.get('password')
     confirmpassword = self.request.get('confirmpassword')
     
     if password != confirmpassword:
         self.response.out.write("Password not match")
         return
         
     userinfos = UserInfo.gql("WHERE nickname=:1",nickname)
     
     found = 0
     for userinfo in userinfos:
         userinfo = UserInfo()
         userinfo.nickname = nickname
         userinfo.password = password
         userinfo.put()
         found = 1
         break
     if found == 0:            
         userinfo = UserInfo()
         userinfo.nickname = nickname
         userinfo.password = password
         userinfo.put()
     self.response.out.write("updated")
     self.redirect("login.html")
示例#3
0
 def post(self):
     nickname = self.request.get('nickname')
     password = self.request.get('password')
     
     userinfos = UserInfo.gql("WHERE nickname=:1", nickname)
     
     for userinfo in userinfos:
         if userinfo.password == password:
             session = get_current_session()
             session["nickname"] = nickname
             
     
             template_values = {
                 'nickname': nickname,
                 'message' : "login successfully"
             }
             cwd = os.path.dirname(__file__)
             path = os.path.join(cwd, 'templates', 'index.html')
             self.response.out.write(template.render(path, template_values, debug=_DEBUG))              
         else:
             self.response.out.write("Login failed") 
             self.response.out.write("<br/><a href=\"/login\">retry</a>")
         break
示例#4
0
    def get(self):
        #session = get_current_session()        
        #nickname = session.get("nickname", 0)
        #if not nickname:
        #    logging.info("not logged in")
        #    return
        #这里必须有nickname,否则不知道是谁
        nickname = self.request.get('nickname')
        userinfo = UserInfo.gql("WHERE nickname=:1", nickname).get()
        if not userinfo:
            logging.info("no userinfo found: %s",nickname)
            self.response.out.write("no userinfo found<br/>")
            return
            
        #此处不用认证,否则会加入很多未公开的图片的"
        flickr = auth.FlickrAuth(userinfo, no_token=True)
        if not flickr:             
            logging.info("flickr authentication failed")
            self.response.out.write("flickr authentication failed")
            return
        
        weibo = auth.WeiboAuth(userinfo)
        if not weibo:             
            logging.info("weibo authentication failed")
            self.response.out.write("weibo authentication failed")
            return
            
        #获得相片
        self.ClearImage()
        list = self.GetFlickrImages(flickr, userinfo)
        
        #获得位置需要认证
        flickr = auth.FlickrAuth(userinfo, no_token=False)
        if not flickr:             
            logging.info("flickr authentication failed")
            self.response.out.write("flickr authentication failed")
            return
        for e in list:
            location = None
            
            try:
                data = flickr.flickr_call(method='flickr.photos.geo.getLocation',  photo_id=e.photo_id, format='rest')
                
                l = flickr.parse_etree(data)
                location = l.find('photo/location')
            except FlickrError:
                logging.info( "%s has no location info."% (e.photo_id)) 
                self.response.out.write( "%s has no location info.<br/>"% (e.photo_id)) 
            

            if e.url[-6:] == "_m.jpg":
                e.url = e.url[:-5] + "b.jpg"
                url1 = "http://images0-focus-opensocial.googleusercontent.com/gadgets/proxy?container=focus&gadget=a&resize_h=500&url="+e.url                     
            else:
                url1 = e.url
            
            
            content = (urlfetch.fetch(url1)).content
            ie = ImageEntity()
            ie.url = e.url
            ie.url1 = url1
            ie.image = db.Blob(content)
            
            if location is not None:
                e.latitude = location.attrib['latitude']
                e.longitude = location.attrib['longitude']
                e.accuracy = location.attrib['accuracy']  

            if self.PostWeibo(weibo, e, ie) :
                e.put()
                ie.put()
        
        
        logging.info("sync ok")
        self.response.out.write("sync ok<br/>")
示例#5
0
    def post(self):
        if not LoginHandler().checkLogin():
            self.redirect("login.html")
        nickname = self.request.get('nickname')
        message = ""

        #if True:
        try:
            #client = APIClient(app_key=WEIBO_APP_KEY, app_secret=WEIBO_APP_SECRET, redirect_uri=WEIBO_CALLBACK_URL)
        
            userInfo = UserInfo.gql("WHERE nickname=:1",nickname).get()
            if not userInfo: 
                self.response.out.write( "No such a user: %s"% (nickname))
                return
            weibo = auth.WeiboAuth(userInfo)
            flickr = auth.FlickrAuth(userInfo)
            
            weibo_auth_url = None
            if V2:
                weibo_auth_url = weibo.get_authorize_url()
            
            userInfo.flickr_id = self.request.get('flickr_id')
            userInfo.flickr_api_key = self.request.get('flickr_api_key')
            userInfo.flickr_api_secret = self.request.get('flickr_api_secret')
            userInfo.flickr_browse_type = self.request.get('flickr_browse_type')
            userInfo.flickr_browse_typename = self.request.get('flickr_browse_typename')
            userInfo.weibo_id = self.request.get('weibo_id')
            userInfo.weibo_access_token = self.request.get('weibo_access_token')
            userInfo.weibo_access_token_secret = self.request.get('weibo_access_token_secret')
            
            if  userInfo.flickr_browse_type == "set" :
                #check flickr photoset
                sets = flickr.photosets_getList(user_id=userInfo.flickr_id)
                
                set_id = -1
                found = False
                for set in sets.findall('photosets/photoset'):
                    set_title = set.find('title').text        
                    if set_title == userInfo.flickr_browse_typename:                
                        set_id = int(set.attrib['id'])
                        found = True
                        break
                if found == False:
                    self.response.out.write( "No such photoset: %s"% (userInfo.flickr_browse_typename))
                    return            
                userInfo.flickr_browse_setid = set_id
            userInfo.flickr_max_days = int(self.request.get('flickr_max_days'))
            userInfo.put()
            message = "user information updated"
            
            flick_login_url = None
            if not auth.GetFlickrToken(userInfo.nickname):
                flick_login_url = auth.GetFlickrLoginUrl(userInfo)
            
            
            template_values = {
                'nickname': userInfo.nickname,
                'flickr_id': userInfo.flickr_id,
                'flickr_api_key': userInfo.flickr_api_key,
                'flickr_api_secret': userInfo.flickr_api_secret,
                'flickr_browse_type': userInfo.flickr_browse_type,
                'flickr_browse_typename': userInfo.flickr_browse_typename,
                'flickr_browse_setid': userInfo.flickr_browse_setid,
                'flickr_max_days': userInfo.flickr_max_days,
                'flick_login_url':flick_login_url,
                'weibo_id': userInfo.weibo_id,
                'weibo_access_token': userInfo.weibo_access_token,
                'weibo_access_token_secret': userInfo.weibo_access_token_secret,
                'weibo_avatar' : userInfo.weibo_avatar,
                'weibo_auth_url' : weibo_auth_url,
                'message' : u"用户信息已经更新完毕"
                
            }

            cwd = os.path.dirname(__file__)
            path = os.path.join(cwd, 'templates', 'setting.html')
            self.response.out.write(template.render(path, template_values, debug=_DEBUG))
        except Exception as e:
            self.response.out.write( "Unexpected error: %s"% (e))