def google_login(email, google_id): """ Log in for google users""" user_exists = User.query.filter_by(email=email).first() if user_exists != None: session["user_id"] = user_exists.user_id session["seen"] = [] session["food_seen"] = [] else: now = datetime.now() created_date = now.strftime('%Y/%m/%d %H:%M:%S') new_user = User(username=email, email=email, password=None, created_date=now) db.session.add(new_user) db.session.commit() new_google_user = GoogleUser(user_id=new_user.user_id, google_id=google_id) db.session.add(new_google_user) db.session.commit() session["user_id"] = new_user.user_id session["seen"] = [] session["food_seen"] = []
def cur_user(self): if self.request.user: from model import Member, GoogleUser req_user = self.request.user gu_obj = GoogleUser.get_or_insert(req_user.email()) if gu_obj.name: return Member.get_by_key_name(gu_obj.name) return None else: return None
def cur_user(self): if self.request.user: from model import Member, GoogleUser req_user = self.request.user gu_obj = GoogleUser.get_or_insert(req_user.user_id()) if gu_obj.name: return Member.get_by_key_name(gu_obj.name) return None else: return None
def get(self): req_user = self.request.user gu_obj = GoogleUser.get_or_insert(req_user.user_id()) if gu_obj.name: self.redirect('/') return else: self.echo('setname.html', { 'title': "设置名字", 'errors':[], 'name':'', 'newest_node': Node.get_newest(), }, layout='_layout.html')
def post(self): req_user = self.request.user gu_obj = GoogleUser.get_or_insert(req_user.user_id()) if gu_obj.name: self.redirect('/') return errors = [] name = self.POST['name'].strip().lower() if name: if len(name)<20: if re.search('^[a-zA-Z0-9]+$', name): check_obj = Member.get_by_key_name(str(name)) if check_obj: errors.append('该用户名已被注册,请换一个吧') else: #get member id mid_obj = Counter.get_or_insert('member_auto_increment',name = 'member_auto_increment', value = 1) nuser_obj = Member(key_name=name, id = mid_obj.value, flag = 1, add = int(time())) nuser_obj.put() if nuser_obj.is_saved(): #set google user gu_obj.name = name db.run_in_transaction(obj_runput,gu_obj) #all member num +1 mid_obj.value += 1 db.run_in_transaction(obj_runput,mid_obj) self.redirect('/setavatar') return else: errors.append('服务器出现意外错误,请稍后再试') else: errors.append('用户名只能包含字母和数字') else: errors.append('用户名太长了') else: errors.append('用户名必填') self.echo('setname.html', { 'title': "设置名字", 'errors':errors, 'name':name, 'newest_node': Node.get_newest(), }, layout='_layout.html')
def post(self): req_user = self.request.user gu_obj = GoogleUser.get_or_insert(req_user.email()) if gu_obj.name: self.redirect('/') return errors = [] name = self.POST['name'].strip().lower() if name: if len(name) < 20: if re.search('^[a-zA-Z0-9]+$', name): check_obj = Member.get_by_key_name(str(name)) if check_obj: errors.append('该用户名已被注册,请换一个吧') else: #get member id mid_obj = Counter.get_or_insert( 'member_auto_increment', name='member_auto_increment', value=1) nuser_obj = Member(key_name=name, id=mid_obj.value, flag=1, add=int(time())) nuser_obj.put() if nuser_obj.is_saved(): #set google user gu_obj.name = name db.run_in_transaction(obj_runput, gu_obj) #all member num +1 mid_obj.value += 1 db.run_in_transaction(obj_runput, mid_obj) #try to Fetch Google Plus Profile Picture try: img_url = 'https://profiles.google.com/s2/photos/profile/' + req_user.nickname( ) img_data = read_img(img_url) #self.header['Content-Type'] = "image/jpg" if img_data: pass else: img_url = 'https://www.gravatar.com/avatar/%s?s=73&d=monsterid' % md5( req_user.email()).hexdigest() img_data = read_img(img_url) if img_data: imgobj = images.Image(img_data) if imgobj.width <= 73 and imgobj.height <= 73: img_large = img_data else: imgobj.resize(73, 73) imgobj.im_feeling_lucky() img_large = imgobj.execute_transforms( output_encoding=images.JPEG, quality=95) u = UpYun(DOMAIN_NAME_AVATAR, UPYUN_USER, UPYUN_PW) file_path_name = '/avatar/%s.jpg' % self.cur_user.name avatar = u.writeFile( file_path_name, img_large, True) if avatar: m_obj = self.cur_user #Member.get_by_key_name(self.cur_user.name) if m_obj.flag == 1: if m_obj.id == 1: m_obj.flag = 99 else: m_obj.flag = 2 db.run_in_transaction( obj_runput, m_obj, [ 'cur_user:'******'Fetch Google Plus Profile Picture Failure: ' + req_user.email()) # self.redirect('/setavatar') return else: errors.append('服务器出现意外错误,请稍后再试') else: errors.append('用户名只能包含字母和数字') else: errors.append('用户名太长了') else: errors.append('用户名必填') self.echo('setname.html', { 'title': "设置名字", 'errors': errors, 'name': name, 'newest_node': Node.get_newest(), }, layout='_layout.html')