示例#1
0
文件: looking.py 项目: Waywei/www
def find_setting():
    user = g.user
    look = Looking.query.filter_by(user_id=user.id).first()
    form = LookingForm(obj=look)
    conf.ACCESS_KEY = app.config["QINIU_ACCESS_KEY"]
    conf.SECRET_KEY = app.config["QINIU_SECRET_KEY"]
    policy = rs.PutPolicy("bearwave")
    qiniutoken = policy.token()
    if form.validate_on_submit():
        if not look:
            look = Looking(**form.data)
            look.user = g.user
            look.server_active = True
            look.active_time = datetime.now()
            db.session.add(look)
            db.session.commit()
            return redirect("/member/"+str(user.id)+"#looking-info")
        else:
            form.populate_obj(look)
            look.server_active = True
            look.active_time = datetime.now()
            db.session.commit()
            return redirect("/member/"+str(user.id)+"#looking-info")

    return render('/looking/setting.jade',locals())
示例#2
0
文件: view.py 项目: Waywei/www
def topic_add(slug):
    form = TopicForm()
    node = Node.query.filter_by(slug=slug).first();
    node.topic_count = Topic.query.filter_by(node_id=node.id).count() 

    if form.validate_on_submit():
        topic = Topic(**form.data)
        topic.content = topic.content.strip()
        topic.node = node
        topic.user = g.user
        topic.ip = request.remote_addr
        
        db.session.add(topic)
        db.session.commit()

        #Notification
        users = notiuser(topic.content)
        #print users
        if len(users) > 0 :
            for u in users:
                n = Notification(user_id= u.id,
                        action=g.user,
                        n_type=3,
                        title=topic.title,
                        topic_id=topic.id,
                        content=topic.content)
                notify.incr("notify:user%s" % u.id)
                db.session.add(n)
                db.session.commit()
 
        return redirect('/topic/'+str(topic.id))
    return render('/node/new.jade',locals())
示例#3
0
文件: view.py 项目: Waywei/www
def recent_topic(page=1):
    try:
        topics = Topic.query.order_by(Topic.update_time.desc())\
            .paginate(page,per_page=30)
    except:
        topics = None
    return render('/recent.jade',locals())
示例#4
0
文件: treehole.py 项目: Waywei/www
def recent_treehole(page=1):
    try:
        topics = TreeHole.query.order_by(TreeHole.update_time.desc())\
            .paginate(page,per_page=30)
    except:
        topics = None
    return render('/treehole/list.jade',locals())
示例#5
0
文件: view.py 项目: Waywei/www
def topic_detail(topic_id):
    topic = Topic.query.get_or_404(topic_id)

    if not g.user and topic.node.node_type == 2:
        flash(u"当前话题属于私密节点,需要登陆后才可以访问","warning")
        return redirect("/login")

    node = Node.query.filter_by(id= topic.node_id).first()
    topic.hits += 1
    db.session.commit()
    comments = Comment.query.filter_by(topic_id=topic_id)\
        .order_by(Comment.create_time)
    form = None
    isFav = None
    if g.user:
        mid = str(g.user.id)
        tid = str(topic_id)
        isFav = FavTopic.query.filter_by(user_id=mid, topic_id=tid).first()
        form = CommentForm()
        if form.validate_on_submit():
            comment = Comment(**form.data)
            comment.content = comment.content.strip()
            comment.topic = topic
            comment.user = g.user
            comment.ip   = request.remote_addr
            topic.update_time = datetime.now()
            topic.comment_count += 1

            #Notification
            if g.user.id != topic.user_id:
                n = Notification(
                    user_id= topic.user_id,
                    action_id = g.user.id,
                    n_type = 1,
                    title = topic.title,
                    topic_id= topic.id,
                    content = comment.content
                    )
                db.session.add(n)
                notify.incr("notify:user%s" % topic.user_id)
            
            users = notiuser(comment.content)
            if len(users) > 0:
                for user in users:
                    noti = Notification(
                        user_id= user.id,
                        action_id = g.user.id,
                        n_type = 2,
                        title = topic.title,
                        topic_id = topic.id,
                        content = comment.content
                        )
                    db.session.add(noti)
                    notify.incr("notify:user%s" % user.id)
            db.session.add(comment)
            db.session.commit()
            count = comments.count()
            return redirect('/topic/'+str(topic.id)+'#comment-'+str(count))
    return render('/node/topic.jade',locals())
示例#6
0
文件: view.py 项目: Waywei/www
def index():
    topics = Topic.query.order_by(Topic.update_time.desc()).limit(6).all()
    treehole = TreeHole.query.order_by(TreeHole.create_time.desc())\
            .limit(6).all()
    interviews = Interview.query\
            .order_by(Interview.create_time.desc()).limit(4).all()
    nodelist = [1,2,3,4,5,8]
    node = Node.query.filter(Node.id.in_(nodelist))
    return render('/index.jade',locals())
示例#7
0
文件: user.py 项目: Waywei/www
def setting():
    user = g.user
    form = SettingForm(obj=user)
    if form.validate_on_submit():
        form.populate_obj(user)
        db.session.commit()
        flash(u'设置成功','success')
        return redirect('/member/'+str(g.user.id))
    return render('/setting.jade',locals())
示例#8
0
文件: view.py 项目: Waywei/www
def test():
    namefield = k()
    if request.method == "POST":
        csrf_check()
        namefield.text = request.form["name"]
        if not namefield.text or len(namefield.text) > 20:
            namefield.error = u"not empty"

    return render('test.jade',locals())
示例#9
0
文件: user.py 项目: Waywei/www
def forgetpassword():
    form = ForgetForm()
    if form.validate_on_submit():
        email = form.data['email'].lower()
        name = form.data['username'].lower()
        try:
            user = User.query.filter_by(email = email).first()
        except:
            user = None
        if user and user.username == name:
            result = r.get("resetuser:%s" % email)
            if result:
                finished = k()
                finished.title = u"重新设置密码"
                finished.content = u"重新设置密码的功能在24小时只能使用一次"
                return render('finished.jade',locals())

            uuid = uuid4() 
            pipe = r.pipeline()
            pipe.set("reset:%s" % uuid,email)
            pipe.expire("reset:%s" % uuid,60*60*24)
            pipe.set("resetuser:%s" % email,"1")
            pipe.expire("resetuser:%s" % email,60*60*24)
            pipe.execute()

            subject = u"重新设置密码-BEARWAVE"
            reseturl = "http://www.bearwave.com/resetpassword/"+str(uuid) 
            text = '''

            这是一封系统自动发送的邮件,不能直接回复。
            如果当前操作不是您本人的所为,请忽略这个邮件,但这类操作意味着可能有人对您的隐私有兴趣。

            修改密码可以访问下面的连接
            '''
            msg = text+reseturl
            send_email(email,subject,msg)
            finished = k()
            finished.title = u"重新设置密码"
            finished.content = u"邮件已发送,请注意垃圾邮件箱"
            return render('finished.jade',locals())
        else:
            error = u"邮箱与用户名不匹配"

    return render('/forgetpassword.jade',locals())
示例#10
0
文件: user.py 项目: Waywei/www
def memberinfo(id):
    user = User.query.filter_by(id=id).first_or_404()
    looking = Looking.query.filter_by(user=user).first()
    if g.user:
        mid = str(g.user.id)
        tid = str(id)
        isFav = FavUser.query.filter_by(user_id=mid, target_id=tid).first()
    else:
        ifFav = None
    return render('/member/member.jade',locals())
示例#11
0
文件: treehole.py 项目: Waywei/www
def treehole_add():
    form = TreeHoleForm()
    if form.validate_on_submit():
        th = TreeHole(**form.data)
        th.content = th.content.strip()
        th.ip = request.remote_addr
        db.session.add(th)
        db.session.commit()

        return redirect('/treehole/'+str(th.id))
    return render('/treehole/new.jade',locals())
示例#12
0
文件: user.py 项目: Waywei/www
def membertopic(id):
    user = User.query.filter_by(id=id).first_or_404()
    topics = Topic.query.filter_by(user_id=id).order_by(Topic.create_time.desc()).limit(20)
    if g.user:
        mid = str(g.user.id)
        tid = str(id)
        isFav = FavUser.query.filter_by(user_id=mid, target_id=tid).first()
    else:
        ifFav = None

    return render('/member/topic.jade',locals())
示例#13
0
文件: user.py 项目: Waywei/www
def memberreply(id):
    user = User.query.filter_by(id=id).first_or_404()
    comments = Comment.query.filter_by(user_id=user.id)\
            .order_by(Comment.create_time.desc()).limit(20)
    if g.user:
        mid = str(g.user.id)
        tid = str(id)
        isFav = FavUser.query.filter_by(user_id=mid, target_id=tid).first()
    else:
        ifFav = None

    return render('/member/reply.jade',locals())
示例#14
0
文件: view.py 项目: Waywei/www
def topic_atom():
    xml = r.get("feed:topic")
    if not xml:
        topics = Topic.query\
                .order_by(Topic.create_time.desc()).limit(10).all()
        site = k()
        site.title= u"bearwave 话题"
        site.subtitle = u"最近的话题"
        site.url = u"http://www.bearwave.com"
        site.atomurl = u"http://www.bearwave.com/atom.xml"
        site.topics = topics
        site.time = datetime.now()
        xml =  render('/feed/topic.xml',locals())
        r.setex("feed:topic",xml,60*60)
    return Response(xml, mimetype='text/xml')
示例#15
0
文件: view.py 项目: Waywei/www
def interview_atom():
    xml = r.get("feed:interview")
    if not xml:
        interviews = Interview.query\
                .order_by(Interview.create_time.desc()).limit(10).all()
        site = k()
        site.title= u"bearwave 访谈"
        site.subtitle = u"不同的生活经历,得到不同的生活经验,把他们留给年轻人是一件非常有意义的事情"
        site.url = u"http://www.bearwave.com/interview"
        site.atomurl = u"http://www.bearwave.com/interview/atom.xml"
        site.topics = interviews
        site.time = datetime.now()
        xml =  render('/feed/interview.xml',locals())
        r.setex("feed:interview",xml,60*60)
    return Response(xml, mimetype='text/xml')
示例#16
0
文件: user.py 项目: Waywei/www
def login():
    if g.user:
        flash(u'登陆成功','success')
        return redirect('/setting')
    form = SigninForm()
    if form.validate_on_submit():
        if not form.user:
            return none
        else:
            session.permanent = True
            session['id'] = form.user.id
            session['token'] = form.user.token
            flash(u'登陆成功','success')
            return redirect('/setting')
    return render('/login.jade',locals())
示例#17
0
文件: user.py 项目: Waywei/www
def resetpassword(uuid):
    uid = str(uuid)
    mail = r.get("reset:%s" % uuid)
    if mail:
        form = ResetPasswordForm();
        if form.validate_on_submit():
            user = User.query.filter_by(email=mail).first_or_404()
            user.change_password(form.password.data)
            db.session.commit()
            flash(u"密码修改成功",'success')
            return redirect("/login")

        return render('resetpassword.jade',locals())
        
    else:
        return u"您的链接已经过期,发送后24小时内使用才有效"
示例#18
0
文件: view.py 项目: Waywei/www
def topic_list(slug,page=1):
    try:
        node = Node.query.filter_by(slug=slug).first_or_404()
        if not g.user and node.node_type == 2:
            flash(u"当前节点是私密的节点,需要登陆后才可以访问","warning")
            return redirect("/login")

        node.topic_count = Topic.query.filter_by(node_id=node.id).count() 
        if g.user:
            mid = str(g.user.id)
            tid = str(node.id)
            isFav = FavNode.query.filter_by(user_id=mid, node_id=tid).first()
        topics = Topic.query.filter_by(node_id=node.id)\
            .order_by(Topic.update_time.desc()).paginate(page,per_page=30)
    except:
        isFav = None
        topics = None
        node = None
    return render('/node/node.jade',locals())
示例#19
0
文件: user.py 项目: Waywei/www
def register():
    if g.user:
        logout()
        return redirect('/register')
    form = SignupForm()        

    if form.validate_on_submit():
        user = User(**form.data)
        imgurl = Gravatar(user.email, secure=False, size=100, rating='x')\
                .thumb+'&d=404'
        req = requests.get(imgurl)
        #print "qqqqq"
        #print req.status_code
        if req.status_code == 200:
            user.avatar = "gravatar"
        db.session.add(user)
        db.session.commit()
        session['id'] = user.id
        session['token'] = user.token
        flash(u'注册成功','success')
        return redirect('/member/'+str(user.id))
    return render('/register.jade',locals())
示例#20
0
文件: treehole.py 项目: Waywei/www
def treehole_detail(id):
    th = TreeHole.query.get_or_404(id)
    th.hits += 1
    db.session.commit()
    comments = TreeComment.query.filter_by(treehole_id=id)\
        .order_by(TreeComment.create_time).all()
    form = None
    if g.user:
        form = TreeCommentForm()
        if form.validate_on_submit():
            comment = TreeComment(**form.data)
            comment.content = comment.content.strip()
            comment.treehole_id  = id
            comment.ip   = request.remote_addr
            th.update_time = datetime.now()
            th.comment_count += 1

            db.session.add(comment)
            db.session.commit()
            count = th.comment_count
            return redirect('/treehole/'+str(th.id)+'#comment-'+str(count))
    return render('/treehole/detail.jade',locals())
示例#21
0
文件: user.py 项目: Waywei/www
def memberfavmember():
    user = g.user
    favs = FavUser.query.filter_by(user_id=user.id).limit(30)
    tid = [x.target_id for x in favs]
    favuser = User.query.filter(User.id.in_(tid)).limit(30)
    return render('/my/fav-member.jade',locals())
示例#22
0
文件: user.py 项目: Waywei/www
def memberfavnode():
    user = g.user
    favs = FavNode.query.filter_by(user_id=user.id).limit(30)
    tid = [x.node_id for x in favs]
    favnode = Node.query.filter(Node.id.in_(tid)).all()
    return render('/my/fav-node.jade',locals())
示例#23
0
文件: user.py 项目: Waywei/www
def memberfavtopic():
    user = g.user
    favs = FavTopic.query.filter_by(user_id=user.id).limit(30)
    tid = [x.topic_id for x in favs]
    favtopic = Topic.query.filter(Topic.id.in_(tid)).all()
    return render('/my/fav-topic.jade',locals())
示例#24
0
文件: talk.py 项目: Waywei/www
def interview(page=1):
    interviews = Interview.query\
            .order_by(Interview.create_time.desc())\
            .paginate(page,per_page=10)
    return render('/interview.jade',locals())
示例#25
0
文件: talk.py 项目: Waywei/www
def page_details(url):
    interview = Page.query.filter_by(absurl=url).first_or_404()
    return render('/page.jade',locals())
示例#26
0
文件: user.py 项目: Waywei/www
def avatar():
    conf.ACCESS_KEY = app.config["QINIU_ACCESS_KEY"]
    conf.SECRET_KEY = app.config["QINIU_SECRET_KEY"]
    policy = rs.PutPolicy("bearwave")
    qiniutoken = policy.token()
    return render('/avatar.jade',locals())
示例#27
0
文件: looking.py 项目: Waywei/www
def find_twitter(page=1):
    members = User.query.filter(User.twitter!="")\
        .order_by(User.create_time.desc())\
        .paginate(page,per_page=20)
    return render('/looking/twitter.jade',locals())
示例#28
0
文件: looking.py 项目: Waywei/www
def find_all(page=1):
    looking = Looking.query.filter_by(server_active="1",find_active="1")\
        .order_by(Looking.active_time.desc())\
        .paginate(page,per_page=20)

    return render('/looking/index.jade',locals())
示例#29
0
文件: looking.py 项目: Waywei/www
def find_instagram(page=1):
    members = User.query.filter(User.instagram!="")\
        .order_by(User.create_time.desc())\
        .paginate(page,per_page=20)
    return render('/looking/instagram.jade',locals())
示例#30
0
文件: talk.py 项目: Waywei/www
def interview_details(url):
    interview = Interview.query.filter_by(absurl=url).first_or_404()
    interview.hits += 1
    db.session.commit()
    return render('/interview-details.jade',locals())