Exemplo n.º 1
0
 def GET(self, arg):
     if user.username == arg:
         status = web.input().status
         email = users.get_confirm_email_by_douban_id(user.douban_id).email
         return view.base02(view.welcome_send_email_feedback(user, status, email), user, siteName)
     else:
         raise web.notfound()
Exemplo n.º 2
0
 def GET(self, arg):
     if user.username == arg:
         status = web.input().status
         email = users.get_confirm_email_by_douban_id(user.douban_id).email
         return view.base02(
             view.welcome_send_email_feedback(user, status, email), user,
             siteName)
     else:
         raise web.notfound()
Exemplo n.º 3
0
    def GET(self):
        # u = users.get_user_by_id(session.get_user_id())
        # ut = u.nicknameChangeTime #得到上次修改昵称的时间
        # c = datetime.datetime.now()#得到当前时间

        # if (c - ut).days < 30: #时间差
        #     can_change_nickname = False
        # else:
        #     can_change_nickname = True

        #得到权限
        per = users.get_permission_by_douid(user.douban_id)
        rights = per[0].rights

        #得到提醒
        notification_results, notification_num = notification.get_unread_notification(
            user.id)
        #得到@提醒
        notification_mention_results, mention_num = notification.get_unread_metion_notifition(
            user.id)
        #链表 得到提醒的详细id\名称等
        ntf_posts = []
        ntf_users = []
        mtf_posts = []
        mtf_users = []

        ntf_list = notification_results.list()
        mtf_list = notification_mention_results.list()
        for x in xrange(len(ntf_list)):
            ntf_posts += postModel.getPostsByPostId(ntf_list[x].pid)
            ntf_users += users.get_users_by_id(ntf_list[x].uid)

        for x in xrange(len(mtf_list)):
            mtf_posts += postModel.getPostsByPostId(mtf_list[x].pid)
            mtf_users += users.get_users_by_id(mtf_list[x].uid)

        ntf_list = ntf_list + mtf_list
        ntf_posts = ntf_posts + mtf_posts
        ntf_users = ntf_users + mtf_users
        notification_num = notification_num + mention_num

        #得到资料设置
        profile = users.get_profile_by_user_id(user.id)
        #得到邮箱验证状态
        confirm = users.get_confirm_email_by_douban_id(user.douban_id)

        return view.base(view.member_setting_profile(user, profile, confirm),
                         user, siteName, rights, ntf_list, notification_num,
                         ntf_posts, ntf_users)
Exemplo n.º 4
0
    def GET(self):
        # u = users.get_user_by_id(session.get_user_id())
        # ut = u.nicknameChangeTime #得到上次修改昵称的时间
        # c = datetime.datetime.now()#得到当前时间

        # if (c - ut).days < 30: #时间差
        #     can_change_nickname = False
        # else:
        #     can_change_nickname = True

        #得到权限
        per = users.get_permission_by_douid(user.douban_id)
        rights = per[0].rights

        #得到提醒
        notification_results, notification_num = notification.get_unread_notification(user.id)
        #得到@提醒
        notification_mention_results, mention_num= notification.get_unread_metion_notifition(user.id)
        #链表 得到提醒的详细id\名称等
        ntf_posts = []
        ntf_users = []
        mtf_posts = []
        mtf_users = []

        ntf_list = notification_results.list()
        mtf_list = notification_mention_results.list()
        for x in xrange(len(ntf_list)):
            ntf_posts += postModel.getPostsByPostId(ntf_list[x].pid)
            ntf_users += users.get_users_by_id(ntf_list[x].uid)

        for x in xrange(len(mtf_list)):
            mtf_posts += postModel.getPostsByPostId(mtf_list[x].pid)
            mtf_users += users.get_users_by_id(mtf_list[x].uid)

        ntf_list = ntf_list + mtf_list
        ntf_posts = ntf_posts + mtf_posts
        ntf_users = ntf_users + mtf_users
        notification_num = notification_num+mention_num

        #得到资料设置
        profile = users.get_profile_by_user_id(user.id)
        #得到邮箱验证状态
        confirm = users.get_confirm_email_by_douban_id(user.douban_id)

        return view.base(view.member_setting_profile(user, profile, confirm), user, siteName, rights, ntf_list, notification_num, ntf_posts, ntf_users)
Exemplo n.º 5
0
class Douban:
    def GET(self):
        data = web.input()

        if data.has_key('code'):
            code = data.code
            provider = 'douban'
            d = config.APIKEY_DICT.get(provider)

            login_service = None
            if provider == config.OPENID_DOUBAN:
                openid_type = config.OPENID_TYPE_DICT[config.OPENID_DOUBAN]
                login_service = DoubanLogin(d['key'], d['secret'],
                                            d['redirect_uri'])
            # elif provider == config.OPENID_SINA:
            #     openid_type = config.OPENID_TYPE_DICT[config.OPENID_SINA]
            #     login_service = SinaLogin(d['key'], d['secret'], d['redirect_uri'])
            # else:
            #     ## 处理以oauth1的方式授权的
            #     if provider == config.OPENID_QQ:
            #         user = _qqweibo_callback(request)

            #     elif provider == config.OPENID_TWITTER:
            #         user = _twitter_callback(request)

            #     if user:
            #         _add_sync_task_and_push_queue(provider, user)
            #         return redirect(url_for('index'))
            #     else:
            #         return "connect to %s fail" % provider

            try:
                token_dict = login_service.get_access_token(code)
            except OAuthLoginError, e:
                return view.error404(
                    'Connection failed'
                )  #note:need to change view name "error404"

            if not (token_dict and token_dict.get("access_token")):
                return (401, "no_access_token")
            try:
                user_info = login_service.get_user_info(
                    token_dict.get("access_token"), token_dict.get("uid"))
            except OAuthLoginError, e:
                return (401, e.msg)

            if user_info:
                douban_id = user_info['id']
                nickname = user_info[u'name']
                avatarPath = user_info['avatar']

                #判断邮箱激活表中是否有此豆瓣ID
                if users.douban_id_exist_in_table_confirm_email(douban_id):
                    #如果此用户填写过email
                    if users.get_confirm_email_by_douban_id(douban_id).email:
                        info = users.get_confirm_email_by_douban_id(douban_id)
                        c = info.confirmed
                        #如果填写的邮箱已经验证
                        if c == 1:
                            #更新用户邮箱 和 昵称 等资料
                            users.update_user_by_douid(
                                douban_id,
                                nickname=nickname,
                                avatarPath=avatarPath,
                                nicknameChangeTime=datetime.datetime.now(),
                                lastLoginIP=web.ctx.ip,
                                lastLoginTime=datetime.datetime.now())
                            # last_user_id = db.query("SELECT LAST_INSERT_ID()")[0].values()[0]

                            last_user_id = users.get_douban_user_by_doubanid(
                                douban_id).id

                            try:
                                city = user_info['loc_name']
                            except Exception, e:
                                city = None

                            try:
                                desc = user_info['desc']
                            except:
                                desc = None

                            users.update_profile(last_user_id,
                                                 city=city,
                                                 bio=desc)

                            session.douban_login(douban_id)
                            raise web.seeother(session.get_last_visited_url())
                        elif c == 0:
                            session.douban_callback(user_info)
                            #返回 提醒用户需要激活邮件 的页面
                            raise web.seeother(
                                '/welcome/' + user_info['uid'] +
                                '/send_email_feedback?status=succesful')

                    #如果没填写email
                    else:
                        session.douban_callback(user_info)
                        #删除表中的记录 为了一会儿重新insert
                        users.del_verification_data_by_douban_id(douban_id)
                        #跳转到邮箱设置页面
                        raise web.seeother('/welcome/' + user_info['uid'])

                #如果是新用户
                else:
                    session.douban_callback(user_info)
                    #跳转到邮箱设置页面
                    raise web.seeother('/welcome/' + user_info['uid'])
Exemplo n.º 6
0
    def GET(self):
        data = web.input()
        if 'code' not in data:
            return view.error404('Connection failed')

        code = data.code
        provider = 'douban'
        d = config.APIKEY_DICT.get(provider)
        if provider == config.OPENID_DOUBAN:
            openid_type = config.OPENID_TYPE_DICT[config.OPENID_DOUBAN]
            douban_login = DoubanLogin(d['key'], d['secret'], d['redirect_uri'])
        token_dict = douban_login.get_access_token(code)
        if not token_dict or not token_dict.get("access_token"):
            return(401, "no_access_token")

        user_info = douban_login.get_user_info(token_dict.get("access_token"), token_dict.get("uid"))
        if not user_info:
            return view.error404('Connection failed')

        douban_id = user_info['id']
        nickname = user_info[u'name']
        avatarPath = user_info['avatar']

        #判断邮箱激活表中是否有此豆瓣ID
        if users.douban_id_exist_in_table_confirm_email(int(douban_id)):
            #如果此用户填写过email
            if users.get_confirm_email_by_douban_id(douban_id).email:
                info = users.get_confirm_email_by_douban_id(douban_id)
                #如果填写的邮箱已经验证
                if info.confirmed:
                    #更新用户邮箱 和 昵称 等资料
                    users.update_user_by_douid(
                        douban_id,
                        nickname = nickname,
                        avatarPath = avatarPath,
                        nicknameChangeTime = datetime.datetime.now(),
                        lastLoginIP = web.ctx.ip,
                        lastLoginTime = datetime.datetime.now()
                    )
                    last_user_id = users.get_douban_user_by_doubanid(douban_id).id
                    city = user_info.get('loc_name')
                    desc = user_info.get('desc')
                    users.update_profile(last_user_id, city = city, bio = desc )
                    session.douban_login(douban_id)
                    raise web.seeother(session.get_last_visited_url())
                elif c == 0:
                    session.douban_callback(user_info)
                    #返回 提醒用户需要激活邮件 的页面
                    raise web.seeother('/welcome/'+ user_info['uid'] +'/send_email_feedback?status=succesful')
            #如果没填写email
            else:
                session.douban_callback(user_info)
                #删除表中的记录 为了一会儿重新insert
                users.del_verification_data_by_douban_id(douban_id)
                #跳转到邮箱设置页面
                raise web.seeother('/welcome/'+ user_info['uid'])
        #如果是新用户
        else:
            session.douban_callback(user_info)
            #跳转到邮箱设置页面
            raise web.seeother('/welcome/'+ user_info['uid'])