コード例 #1
0
ファイル: auth.py プロジェクト: sinreal/miihui
 def GET(self,provider):
   if provider!="sina":
     return "todo"      
   code=web.input().get("code")
   client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
   r = client.request_access_token(code)
   access_token = r.access_token
   expires_in = r.expires_in
   client.set_access_token(access_token, expires_in)
   uid =r.uid
   weibouser=client.get.users__show(uid=uid)
   sinaid=weibouser.get("id")
   authbind=Auth_bind.objects(opid="sina"+str(sinaid)).first()
   if authbind==None:
     avatar_large=weibouser.get("avatar_large")
     avatar=weibouser.get("profile_image_url")
     username=weibouser.get("screen_name")
     username=username+"21223"
     #??????          I
     ID=User.objects.count() + 101
     u=User(username=username,email="!!sina2"+str(sinaid),password="",ID=ID)
     u.avatar=avatar
     u.avatar_big=avatar_large
     u.save()
     a=Auth_bind(ID=ID,opid="sina"+str(sinaid),access_token=access_token,expires_in=str(expires_in))
     a.save()
     Auth.set_login(u.id,username.encode("utf-8"))
     return  web.seeother("/")
   else:
      ID=authbind.ID
      user=User.objects(ID=ID).first()
      Auth.set_login(user.id,user.username.encode("utf-8"))
      return web.seeother("/")
コード例 #2
0
ファイル: auth.py プロジェクト: sinreal/miihui
 def POST(self):
    email=web.input().get("email")
    name=web.input().get("nickname")
    passwd=web.input().get("password")
    if not( email and name and passwd):
          content= u"输入不能为空"
          return render.signup(is_login=False,content=content)  
    if  User.objects(email=email).first() :
          content= u"邮箱已经注册"
          return render.signup(is_login=False,content=content) 
    if   User.objects(username=name).first() :
          content =u"用户名已经被注册"
          return render.signup(is_login=False,content=content) 
    ID=User.objects.count() + 101
    user = User(username=name,email=email,password=passwd,ID=User.objects.count() + 101)
    user.avatar="default.png"
    user.avatar_big="default_big.png"
    #方便管理,只有一级目录
    user.save()
    if user : 
       Auth.set_login(user.id,name.encode("utf-8"))
       return web.seeother("/")
    else:
          content =u"用户名已经被注册"
          return render.signup(is_login=False,content=content)
コード例 #3
0
ファイル: item.py プロジェクト: sinreal/miihui
 def GET(self,id):
    page=int(web.input().get('page','1'))
    item=Node.objects(ID=int(id)).first()
    #todo 分页 or ajax
    comments=Tweet.objects(Q(SubjectID=int(id))&Q(flag__ne=1)).order_by("-ID") 
    #flag=1 means share 
    next=None
    if Auth.is_login():
         user=User.objects(id=Auth.uid()).first()
         mycollect=user.nodes_follow
         if item.ID in mycollect:
            collected=True
         else:
           collected=False
    else:
         user=None
         collected=False
    if item and  item.creatorID:
        creator=User.objects(ID=item.creatorID).first()
    else:
        creator =None
    datalist=[]
    for comment in comments:
       datalist.append((User.objects(ID=comment.AutherID).first(),comment))
    if user==creator :
            editble=True
    else:
           editble=False
    if  user and ( user.email=="*****@*****.**" or user.email=="*****@*****.**"  ):
            editble=True
    return render.item(editble=editble,user=user,creator=creator,item=item,datalist=datalist,collected=collected)
コード例 #4
0
ファイル: app.py プロジェクト: sinreal/miihui
 def GET(self):
   if Auth.is_login():
      user=User.objects(id=Auth.uid()).first()
   else:
      user=None
   nodes=Node.objects(score=20).order_by("-ID")
   if nodes.count()>20:
        nodes=nodes[0:20]
   return render.index(user=user,nodes=nodes)           
コード例 #5
0
ファイル: auth.py プロジェクト: sinreal/miihui
 def POST(self):
      email=web.input().get("email")
      passwd=web.input().get("password")
      key=passwd
      #key=hashlib.md5(passwd).hexdigest()
      user = User.objects(email=email).first()
      if not user :
          return render.login(is_login=Auth.is_login(),content=u"没有这个用户")
      if user.password==key:
          Auth.set_login(user.id,user.username)
          return web.seeother("/")
      return render.login(is_login=Auth.is_login(),content=u"密码错误")
コード例 #6
0
ファイル: app.py プロジェクト: sinreal/miihui
 def GET(self,uid): 
   if Auth.is_login():
       user=User.objects(id=Auth.uid()).first()
   else:
       user=None
   thisguy=User.objects(ID=uid).first()    
   datalist=[]    
   shares=Share_items.objects(creatorID=int(uid))
   counts=(0,0,0)
   for p in shares:
          datalist.append(("share" ,Node.objects(ID=p.itemID).first(),p, friendly_time(p.created).decode("utf-8")))
   return render.share_items(user=user,thisguy=thisguy,datalist=datalist,counts=counts)
コード例 #7
0
ファイル: user.py プロジェクト: sinreal/miihui
 def GET(self,uid):
     #关注我的人 should keep it in  a list ?
     if Auth.is_login():
             me=User.objects(id=Auth.uid()).first()
     else:
            me=None
     user=User.objects(ID=int(uid)).first()
     followeds=User.objects(followings=user.ID)
     page=int(web.input().get("page","1"))
     count=user.followed_count
     if page*10<count:
        next=page+1
     else:
        next=None      
     return render.followeds(user=me,thisguy=user,count=count,next=next,followeds=followeds)
コード例 #8
0
ファイル: app.py プロジェクト: sinreal/miihui
 def GET(self,userID):
   thisguy=User.objects(ID=userID).first()
   c= thisguy.nodes_follow
   if not  c:
     collections=[]
   else:
      collections=[]
      #取最新的收藏
      for _id in c:
        collections.append(Node.objects(ID=_id).first())
   if Auth.is_login():
          me=User.objects(id=Auth.uid()).first()
   else:
         me=None
   counts = thisguy.followings_count,thisguy.followed_count,thisguy.tweet_count      
   return render.usercollections(user=me,thisguy=thisguy, collections=collections, counts =counts)
コード例 #9
0
ファイル: profile.py プロジェクト: sinreal/miihui
 def POST(self):
        uid=Auth.uid()
        user=User.objects(id=uid).first()
        _file= web.input(avatar={})
        if _file['avatar'].filename!="" and  _file['avatar'].filename[-3:]=="jpg":
              fileimg=_file['avatar'].value 
              _filename=TEMP+"/"+str(user.ID)+".jpg"
              open(_filename,"wb").write(fileimg)
              im = Image.open(_filename)
              (width,height)=im.size
              if width<=height:
                im_new=im.resize((100,int(height*100.0/width)),Image.ANTIALIAS)
                im_new.transform((100,100),Image.EXTENT ,(0,0,100,100),Image.BILINEAR).save('m'+uid+".jpg",quality = 95)
                im_new.transform((50,50),Image.EXTENT,(0,0,100,100)).save(STATIC_FILE+'/s'+uid+".jpg",quality = 95)
                im_new.save(STATIC_FILE+'/b'+uid+".jpg",quality = 95)   
              else:    
                im_new=im.resize((int(width*100.0/height),100))
                im_new.transform((100,100),Image.EXTENT,(0,0,100,100),Image.BILINEAR).save('m'+uid+".jpg",quality = 95)
                im_new.transform((50,50),Image.EXTENT,(0,0,100,100)).save(STATIC_FILE+'/s'+uid+".jpg",quality = 95)
                im_new.save(STATIC_FILE+'/b'+uid+".jpg",quality = 95)
              user.avatar="s"+uid+".jpg"
              user.avatar_big="b"+uid+".jpg"                          
              user.save()
        else:
            render.profile_avatar(is_login=True,user=user,content=u"请上传JPG文件")      
        return  render.profile_avatar(is_login=True,user=user,content=u"更新头像成功")
コード例 #10
0
ファイル: user.py プロジェクト: sinreal/miihui
 def GET(self,uid):
     #关注的人
     if Auth.is_login():
            me=User.objects(id=Auth.uid()).first()
     else:
            me=None
     user=User.objects(ID=int(uid)).first()
     followings_ids=user.followings
     followings=[User.objects(ID=idd).first() for idd in followings_ids] 
     page=int(web.input().get("page","1"))
     count=user.followings_count
     if page*10<count:
        next=page+1
     else:
        next=None      
     return  render.followings(user=me,thisguy=user,count=count,next=next,followings=followings)
コード例 #11
0
ファイル: user.py プロジェクト: sinreal/miihui
  def GET(self,uid):
      myuid=Auth.uid()
      page=int(web.input().get("page","1")) 
      thisguy=User.objects(ID=int(uid)).first()
      if not thisguy:
          return  render.notfound()
      thisguy.tweet_count=Tweet.objects(AutherID=thisguy.ID).count()
      counts = thisguy.followings_count,thisguy.followed_count,thisguy.tweet_count
      
      #update count
      if page*20<counts[2]:
         next=page+1
      elif page*20-counts[2]>20 :
         return  web.notfound()
      else:  
         next=None

      if Auth.is_login():
          me=User.objects(id=Auth.uid()).first()
      else:
          me=None
          
      if not me:
           relation=None
      elif me==thisguy:
          relation="self"
      elif thisguy.ID in me.followings:
           relation="ifollowhim"
      else:
           relation=None
      # do i follow that people?
      datalist=[]
      posts=Tweet.objects(AutherID=thisguy.ID).order_by("-ID")[(page-1)*20:page*20]
  
      for p in posts:
          if p.SubjectID>0:
              if p.flag==1:
                 datalist.append(("share" ,Node.objects(ID=p.SubjectID).first(),p, friendly_time(p.created).decode("utf-8")))
              elif p.flag==-1:
                  pass   
              else:   
                 datalist.append(("comment" ,Node.objects(ID=p.SubjectID).first(),p, friendly_time(p.created).decode("utf-8")))
          elif p.flag==-1:
                  pass
          else: 
                datalist.append(("say",p,friendly_time(p.created).decode("utf-8")))  
      return  render.user(user=me,thisguy=thisguy,counts=counts,next=next,datalist=datalist,relation=relation)
コード例 #12
0
ファイル: profile.py プロジェクト: sinreal/miihui
 def POST(self):
        uid=Auth.uid()
        passwd=web.input().get("password")
        passwd1=web.input().get("password1")
        user=User.objects(id=uid).first()
        if passwd and (passwd!=passwd1):
            return render.profile_password(is_login=True,user=user,content=u"两次密码不同,请再次输入")
        return  render.profile_password(is_login=True,user=user,content=u"更新密码成功")
コード例 #13
0
ファイル: profile.py プロジェクト: sinreal/miihui
 def POST(self):
        uid=Auth.uid()
        intro=web.input().get("intro")
        user=User.objects(id=uid).first()
        if intro!=user.intro:
            user.intro=intro                      
        user.save()    
        return  render.profile(is_login=True,user=user,content=u"更新信息成功")
コード例 #14
0
ファイル: item.py プロジェクト: sinreal/miihui
 def GET(self):
     user=User.objects(id=Auth.uid()).first()  
     if web.input().get("count",None):             
          count=web.input().get("count",None)
          piclist=[]
          for i in range(int(count)):
               piclist.append(web.input().get("u"+str(i)))
          title=web.input().get("title")
          #print title
          url=web.input().get("fromurl")
          store=get_store(url).decode("utf-8")
          des=web.input().get("d",None)
          return render.share_bm(user=user,piclist=piclist,store=store,title=title,url=url,des=des)
     return render.share(is_login=True,user=user)
コード例 #15
0
ファイル: app.py プロジェクト: sinreal/miihui
 def POST(self):
     user=User.objects(id=Auth.uid()).first()
     if user.role!=2:
         return "blocked"
     content=web.input().get('txt')
     typet=web.input().get('type')
     subtopID=int(web.input().get('stID','0'))
     if not content:
        return "Content_empty"
     if typet=="post":
         tweet=Tweet(ID=Tweet.objects.count()+101,AutherID=user.ID,SubjectID=subtopID,content=content)
         user.tweet_count+=1
         tweet.save()
         user.save()
     return "Success"
コード例 #16
0
ファイル: user.py プロジェクト: sinreal/miihui
 def POST(self):
   unfoid=web.input().get("unfollow")
   thisguy=User.objects(ID=int(unfoid)).first()
   user=User.objects(id=Auth.uid()).first()
   followings=user.followings
   _id=int(unfoid)
   if _id in followings:
      followings.remove(_id)
      user.followings=followings
      user.followings_count-=1
      thisguy.followed_count-=1
      user.save()
      thisguy.save()
      return "Unfollow_success"
   return "cant unfollow"
コード例 #17
0
ファイル: app.py プロジェクト: sinreal/miihui
 def  POST(self):
      user=User.objects(id=Auth.uid()).first()
      itemid=web.input().get("itemid")
      # print itemid
      #数据结构为 item,收藏此item的ID
      c=Collect.objects(ID=int(itemid))
      if len(c)!=0:
          c.update_one(push__userlist=user.ID)
          user.update(push__nodes_follow=int(itemid))
          user.save()
          c.first().save()
      else:
         c=Collect(ID=user.ID,userlist=[itemid])
         user.update(push__nodes_follow=int(itemid))
         user.save()
         c.save()
      return None
コード例 #18
0
ファイル: user.py プロジェクト: sinreal/miihui
 def POST(self):
   myuid=Auth.uid()
   foid=web.input().get("follow")
   if myuid==str(User.objects(ID=foid).first().id):
       return "not_allowed"
   print str(myuid)==str(User.objects(ID=foid).first().id)
   user=User.objects(id=myuid).first()
   thisguy=User.objects(ID=int(foid)).first()
   if thisguy.ID not in user.followings:
       ids=user.followings
       ids.append(thisguy.ID)
       user.ids=ids
       user.followings_count+=1
       thisguy.followed_count+=1
       user.save()
       thisguy.save()
       return "success"
   return "failed"
コード例 #19
0
ファイル: item.py プロジェクト: sinreal/miihui
 def POST(self):   
     
     name=web.input().get("name")
     _tags=web.input().get("tags")
     source=web.input().get("source")                 
     if _tags:
          tags=[x for x in  _tags.split(",")]
     else:
          tags=[]
     user=User.objects(id=Auth.uid()).first()     
     creatorID=user.ID     
     intro=web.input().get("intro")
     picurl=web.input().get("picurl",None)
     price=web.input().get("price")
     link=web.input().get("source")
     store=get_store("store")
     price=web.input().get("price")
     buyinfo=Buy_info(link=link,store=store,price=price)
     #check if none 
     pic=urllib2.urlopen(picurl).read()
     ID=Node.objects.count()+1
     open(str(ID)+".jpg","wb").write(pic)
     u = UpYun(BUCKETNAME,USER,PASSWORD)
     data = open(str(ID)+".jpg",'rb')
     u.setContentMD5(md5file(data))
     a = u.writeFile('/o'+str(ID)+'.jpg',data)
     if not a:
       return "get picture erro"
     #cut_item_picture(STATIC_FILE,ID,str(ID)+".jpg")  
     node=Node(creatorID=creatorID,ID=ID,name=name,des=intro,picurl=picurl,tags=tags,buy_info=[buyinfo])
     node.picinfo=101    #a out sidelink
     node.save()
     share=Share_items(ID=Share_items.objects.count()+1,creatorID=user.ID,itemID=ID,flag=1,content="")
     share.save()
     #加入到shareitem中
     #todo count更新
     tweet=Tweet(ID=Tweet.objects.count()+1,AutherID=user.ID,SubjectID=ID,flag=1,content=str(ID))
     tweet.save()
     return web.seeother("/item/"+str(ID)+"/")
コード例 #20
0
ファイル: item.py プロジェクト: sinreal/miihui
 def POST(self):
          picurl=web.input().get("check")
          name=web.input().get("name")
          _tags=web.input().get("tags")
          source=web.input().get("source")                 
          if _tags:
            tags=[x for x in  _tags.split(",")]
          else:
            tags=[]
          user=User.objects(id=Auth.uid()).first()     
          creatorID=user.ID     
          intro=web.input().get("intro")
          price=web.input().get("price")
          link=web.input().get("source")
          store=web.input().get("store")
          #store=get_store(link).decode("utf-8")
          price=web.input().get("price")
          buyinfo=Buy_info(link=link,store=store,price=price)
          pic=urllib2.urlopen(picurl).read()
          ID=Node.objects.count()+1
          open(str(ID)+".jpg","wb").write(pic)
          u = UpYun(BUCKETNAME,USER,PASSWORD)
          data = open(str(ID)+".jpg",'rb')
          u.setContentMD5(md5file(data))
          a = u.writeFile('/o'+str(ID)+'.jpg',data)
          if not a:
              return "get picture erro"
          #cut_item_picture(STATIC_FILE,ID,str(ID)+".jpg")  
          node=Node(creatorID=creatorID,ID=ID,name=name,des=intro,picurl=picurl,tags=tags,buy_info=[buyinfo])
          node.picinfo=101    #a out sidelink
          node.save()
          share=Share_items(ID=Share_items.objects.count()+1,creatorID=user.ID,itemID=ID,flag=1,content="")
          share.save()
          content=u'''<h1>发布成功</h1><p>你可以<a href="/item/%s/">去看看</a>或者
          <a href="%s">回到刚才的逛的</a>'''%(str(ID),source)
          return render.info(content=content)
          return web.seeother("/item/"+str(ID)+"/")
コード例 #21
0
ファイル: app.py プロジェクト: sinreal/miihui
  def GET(self):
      page=int(web.input().get("page","1")) 
      me=User.objects(id=Auth.uid()).first()
      #todo ..
      me.tweet_count=Tweet.objects(AutherID=me.ID).count()
      counts = me.followings_count,me.followed_count,me.tweet_count
      c= me.nodes_follow
      if not  c:
         collections=[]
      else:
          collections=[]
          #取最新的收藏
          for _id in c:
            collections.append(Node.objects(ID=_id).first())
      if len(collections)>6:
         collections=collections[0:6]
      print counts[2]   
      if page*20<counts[2]:
         next=page+1
      elif page*20-counts[2]>20 :
         return  web.notfound()
      else:  
         next=None
      datalist=[]
      posts=Tweet.objects(AutherID=me.ID).order_by("-ID")[(page-1)*20:page*20]

      for p in posts:
          if p.SubjectID>0:
              if p.flag==1:
                   datalist.append(("share" ,Node.objects(ID=p.SubjectID).first(),p, friendly_time(p.created).decode("utf-8")))  
              else:
                  datalist.append(("comment" ,Node.objects(ID=p.SubjectID).first(),p, friendly_time(p.created).decode("utf-8")))
          else:
              datalist.append(("say",p,friendly_time(p.created).decode("utf-8")))
              
      return render.home(datalist=datalist,user=me,counts=counts,next=next,collections=collections)
コード例 #22
0
ファイル: auth.py プロジェクト: sinreal/miihui
 def GET(self):
     return render.login(is_login=Auth.is_login())
コード例 #23
0
ファイル: auth.py プロジェクト: sinreal/miihui
 def GET(self):
     return render.signup(is_login=Auth.is_login(),content=None) 
コード例 #24
0
ファイル: profile.py プロジェクト: sinreal/miihui
 def GET(self):
        uid=Auth.uid()
        user=User.objects(id=uid).first()
        
        return render.profile_avatar(is_login=True,user=user)
コード例 #25
0
ファイル: auth.py プロジェクト: sinreal/miihui
 def GET(self):
     Auth.set_logout()
     return render.logout(is_login=False)
コード例 #26
0
ファイル: app.py プロジェクト: sinreal/miihui
 def GET(self):
   return render.tools(is_login=Auth.is_login(),user=None)
コード例 #27
0
ファイル: decorators.py プロジェクト: sinreal/miihui
 def _check_auth(*args,**kwargs):
     if Auth.is_login():
       return handler(*args,**kwargs)
     else:
       web.seeother("/login")
コード例 #28
0
ファイル: app.py プロジェクト: sinreal/miihui
 def GET(self):
   return render.about(is_login=Auth.is_login(),user=None)