示例#1
0
def send_verify_email():
    if request.method == 'GET':
        user_id = int(request.args['user_id'])
        form = EmailForm(user_id=user_id)
        user_name = User.get_name_by_id(user_id)
        return render_template('sign/send_verify_email.html',
                               user_name=user_name,
                               form=form)
    else:
        form = EmailForm(request.form)

        if form.validate():

            # email
            t_addr = form.email.data

            # user info
            user_id = int(form.user_id.data)
            user_name = User.get_name_by_id(user_id)

            # add this email to user
            User.add_email(user_id, t_addr)

            # gene verify url
            verify_code = hashlib.sha1(user_name).hexdigest()
            verify_url = config.SITE_DOMAIN + "verify_email/douban/" + str(
                user_id) + "/" + verify_code

            # prepare email content
            msgText = '''<h3>点 <a href='%s'>这里</a>,激活你在西窗烛的帐号。</h3>''' % verify_url
            msg = MIMEText(msgText, 'html', 'utf-8')
            msg['From'] = "西窗烛 <" + config.SMTP_FROM + ">"
            msg['To'] = user_name + "<" + t_addr + ">"
            msg['Subject'] = "欢迎来到西窗烛!"

            # send email
            s = smtplib.SMTP(config.SMTP_SERVER, config.SMTP_PORT)
            s.login(config.SMTP_USER, config.SMTP_PASSWORD)
            s.sendmail(config.SMTP_FROM, t_addr, msg.as_string())

            return redirect(url_for('verify_email_callback',
                                    state='send_succ'))
        else:
            user_id = int(form.user_id.data)
            user_name = User.get_name_by_id(user_id)
            return render_template('sign/send_verify_email.html',
                                   user_name=user_name,
                                   form=form)
示例#2
0
def rebuild_comment(comment, replyee_id):
    replyee_name = User.get_name_by_id(replyee_id)
    replyee_abbr = User.get_abbr_by_id(replyee_id)
    comment = "@" + "<a href=" + url_for(
        'user', user_abbr=replyee_abbr
    ) + ">" + replyee_name + "</a>" + "&nbsp;&nbsp;" + comment.split(' ')[1]
    return comment
示例#3
0
def send_verify_email():
    if request.method == 'GET':
        user_id = int(request.args['user_id'])
        form = EmailForm(user_id=user_id)
        user_name = User.get_name_by_id(user_id)
        return render_template('sign/send_verify_email.html', user_name=user_name, form=form)
    else:
        form = EmailForm(request.form)

        if form.validate():

            # email
            t_addr = form.email.data

            # user info
            user_id = int(form.user_id.data)
            user_name = User.get_name_by_id(user_id)

            # add this email to user
            User.add_email(user_id, t_addr)

            # gene verify url
            verify_code = hashlib.sha1(user_name).hexdigest()
            verify_url = config.SITE_DOMAIN + "verify_email/douban/" + str(user_id) + "/" + verify_code

            # prepare email content
            msgText = '''<html>
                <h1>点击下面的链接,激活你在西窗烛的帐号:</h1>
                <a href='%s'>%s</a>
                </html>''' % (verify_url, verify_url)
            msg = MIMEText(msgText, 'html', 'utf-8')
            msg['From'] = "西窗烛 <" + config.SMTP_FROM + ">"
            msg['To'] = user_name + "<" + t_addr + ">"
            msg['Subject'] = "欢迎来到西窗烛!"

            # send email
            s = smtplib.SMTP(config.SMTP_SERVER, config.SMTP_PORT)
            s.login(config.SMTP_USER, config.SMTP_PASSWORD)
            s.sendmail(config.SMTP_FROM, t_addr, msg.as_string())

            return redirect(url_for('verify_email_callback', state='send_succ'))
        else:
            user_id = int(form.user_id.data)
            user_name = User.get_name_by_id(user_id)
            return render_template('sign/send_verify_email.html', user_name=user_name, form=form)
示例#4
0
def verify_email(user_id, verify_code):
    user_name = User.get_name_by_id(user_id)
    user_abbr = User.get_abbr_by_id(user_id)
    if verify_code == hashlib.sha1(user_name).hexdigest():
        User.active_user(user_id)
        session.permanent = True
        session['user_id'] = user_id
        session['user_name'] = user_name
        session['user_abbr'] = user_abbr
        return redirect(url_for('verify_email_callback', state='active_succ'))
    else:
        return redirect(url_for('verify_email_callback', state='active_failed'))
示例#5
0
def verify_email(user_id, verify_code):
	user_name = User.get_name_by_id(user_id)
	user_abbr = User.get_abbr_by_id(user_id)
	if verify_code == hashlib.sha1(user_name).hexdigest():
		User.active_user(user_id)
		session.permanent = True
		session['user_id'] = user_id
		session['user_name'] = user_name
		session['user_abbr'] = user_abbr
		return redirect(url_for('verify_email_callback', state='active_succ'))
	else:
		return redirect(url_for('verify_email_callback', state='active_failed'))
示例#6
0
def auth():
    code = request.args['code']

    # get access token and userID
    url = "https://www.douban.com/service/auth2/token"
    data = {
        'client_id': config.DOUBAN_CLIENT_ID,
        'client_secret': config.DOUBAN_SECRET,
        'redirect_uri': config.DOUBAN_REDIRECT_URI,
        'grant_type': 'authorization_code',
        'code': code
    }
    data = urllib.urlencode(data)
    req = urllib2.Request(url, data)
    response = urllib2.urlopen(req)
    info = eval(response.read())
    user_id = int(info['douban_user_id'])

    # if user exist
    if User.check_exist_by_id(user_id):
        # if user unactive
        if not User.check_active(user_id):
            return redirect(url_for('verify_email_callback', state='unactive', user_id=user_id))
        else:
            # set session
            session.permanent = True
            session['user_id'] = user_id
            session['user_name'] = User.get_name_by_id(user_id)
            session['user_abbr'] = User.get_abbr_by_id(user_id)
            return redirect(url_for('index'))
    # if not exist
    else:
        # get user info
        url = "https://api.douban.com/v2/user/" + str(user_id)
        req = urllib2.Request(url)
        response = urllib2.urlopen(req)
        user_info = eval(response.read().replace('\\', '')) # remove '\' and convert str to dict

        # add user
        user_id = int(user_info['id'])
        user_name = user_info['name']
        abbr = user_info['uid']
        avatar = user_info['avatar']
        signature = user_info['signature']
        desc = user_info['desc']
        location_id = int(user_info['loc_id']) if 'loc_id' in user_info else 0
        location = user_info['loc_name']
        User.add_user(user_id, user_name, abbr, avatar, signature, desc, location_id, location)

        # go to the verify email page
        return redirect(url_for('send_verify_email', user_id=user_id))
示例#7
0
def auth():
	code = request.args['code']

	# get access token and userID
	url = "https://www.douban.com/service/auth2/token"
	data = {
		'client_id': config.DOUBAN_CLIENT_ID,
		'client_secret': config.DOUBAN_SECRET,
		'redirect_uri': config.DOUBAN_REDIRECT_URI,
		'grant_type': 'authorization_code',
		'code': code
	}
	data = urllib.urlencode(data)
	req = urllib2.Request(url, data)
	response = urllib2.urlopen(req)
	info = eval(response.read())
	user_id = int(info['douban_user_id'])

	# if user exist
	if User.check_exist_by_id(user_id):
		# if user unactive
		if not User.check_active(user_id):
			return redirect(url_for('verify_email_callback', state='unactive', user_id=user_id))
		else:
			# set session
			session.permanent = True
			session['user_id'] = user_id
			session['user_name'] = User.get_name_by_id(user_id)
			session['user_abbr'] = User.get_abbr_by_id(user_id)
			return redirect(url_for('index'))
	# if not exist
	else:
		# get user info
		url = "https://api.douban.com/v2/user/" + str(user_id)
		req = urllib2.Request(url)
		response = urllib2.urlopen(req)
		user_info = eval(response.read().replace('\\', ''))	# remove '\' and convert str to dict

		# add user
		user_id = int(user_info['id'])
		user_name = user_info['name']
		abbr = user_info['uid']
		avatar = user_info['avatar']
		signature = user_info['signature']
		desc = user_info['desc']
		location_id = int(user_info['loc_id']) if 'loc_id' in user_info else 0
		location = user_info['loc_name']
		User.add_user(user_id, user_name, abbr, avatar, signature, desc, location_id, location)

		# go to the verify email page
		return redirect(url_for('send_verify_email', user_id=user_id))
示例#8
0
def auth():
    # get current authed userID
    code = request.args['code']
    url = "https://www.douban.com/service/auth2/token"
    data = {
        'client_id': config.DOUBAN_CLIENT_ID,
        'client_secret': config.DOUBAN_SECRET,
        'redirect_uri': config.DOUBAN_REDIRECT_URI,
        'grant_type': 'authorization_code',
        'code': code
    }
    r = requests.post(url, data=data).json()
    user_id = int(r['douban_user_id'])

    # if user exist
    if User.check_exist_by_id(user_id):
        # if user unactive
        if not User.check_active(user_id):
            return redirect(
                url_for('verify_email_callback',
                        state='unactive',
                        user_id=user_id))
        else:
            # set session
            session.permanent = True
            session['user_id'] = user_id
            session['user_name'] = User.get_name_by_id(user_id)
            session['user_abbr'] = User.get_abbr_by_id(user_id)
            return redirect(url_for('index'))
    # if not exist
    else:
        # get user info
        url = "https://api.douban.com/v2/user/" + str(user_id)
        user_info = requests.get(url).json()

        # add user
        user_id = int(user_info['id'])
        user_name = user_info['name']
        abbr = user_info['uid']
        avatar = user_info['avatar']
        signature = user_info['signature']
        desc = user_info['desc']
        location_id = int(user_info['loc_id']) if 'loc_id' in user_info else 0
        location = user_info['loc_name']
        User.add_user(user_id, user_name, abbr, avatar, signature, desc,
                      location_id, location)

        # go to the verify email page
        return redirect(url_for('send_verify_email', user_id=user_id))
示例#9
0
def auth():
    # get current authed userID
    code = request.args['code']
    url = "https://www.douban.com/service/auth2/token"
    data = {
        'client_id': config.DOUBAN_CLIENT_ID,
        'client_secret': config.DOUBAN_SECRET,
        'redirect_uri': config.DOUBAN_REDIRECT_URI,
        'grant_type': 'authorization_code',
        'code': code
    }
    r = requests.post(url, data=data).json()
    user_id = int(r['douban_user_id'])

    # if user exist
    if User.check_exist_by_id(user_id):
        # if user unactive
        if not User.check_active(user_id):
            return redirect(url_for('verify_email_callback', state='unactive', user_id=user_id))
        else:
            # set session
            session.permanent = True
            session['user_id'] = user_id
            session['user_name'] = User.get_name_by_id(user_id)
            session['user_abbr'] = User.get_abbr_by_id(user_id)
            return redirect(url_for('index'))
    # if not exist
    else:
        # get user info
        url = "https://api.douban.com/v2/user/" + str(user_id)
        user_info = requests.get(url).json()

        # add user
        user_id = int(user_info['id'])
        user_name = user_info['name']
        abbr = user_info['uid']
        avatar = user_info['avatar']
        signature = user_info['signature']
        desc = user_info['desc']
        location_id = int(user_info['loc_id']) if 'loc_id' in user_info else 0
        location = user_info['loc_name']
        User.add_user(user_id, user_name, abbr, avatar, signature, desc, location_id, location)

        # go to the verify email page
        return redirect(url_for('send_verify_email', user_id=user_id))
示例#10
0
def rebuild_comment(comment, replyee_id):
	replyee_name = User.get_name_by_id(replyee_id)
	replyee_abbr = User.get_abbr_by_id(replyee_id)
	comment = "@" + "<a href=" + url_for('people', user_abbr=replyee_abbr) + ">" + replyee_name + "</a>" + "&nbsp;&nbsp;" + comment.split(' ')[1]
	return comment