def index(): g.new_pastes = Paste.query.filter_by(is_private=False).filter_by( is_delete=False).order_by('created_time DESC')[:PAGE_SIZE] g.top_tags = Tag.query.order_by('times DESC')[:SIDEBAR_PAGE_SIZE] g.users = User.query.order_by('created_time DESC')[:SIDEBAR_PAGE_SIZE] #import pdb; pdb.set_trace() return render('siteview/index.html')
def openid(): """ 这个函数用来更换OpenID """ if request.method == "POST": return oid.try_login(COMMON_PROVIDERS.get(openid, "google"), ask_for=['email', 'nickname']) return render('userview/openid.html')
def posts(): page = request.args.get('page', 1) try: page = int(page) except: page = 1 g.pagination = Post.query.order_by("created_time DESC").paginate(page, 10) return render('siteview/posts.html')
def rank(): g.top_tags = Tag.query.order_by('times DESC')[:SIDEBAR_PAGE_SIZE] g.top_view_pastes = Paste.query.filter_by(is_private=False).filter_by( is_delete=False).order_by('view_num DESC')[:SIDEBAR_PAGE_SIZE] g.top_comment_pastes = Paste.query.filter_by( is_private=False).order_by('comment_num DESC')[:SIDEBAR_PAGE_SIZE] g.users = User.query.order_by('paste_num DESC')[:SIDEBAR_PAGE_SIZE] return render('rankview/rank.html')
def view(paste_id): model = Paste.query.get_or_404(paste_id) output = request.args.get('output', None) if output == 'raw': resp = make_response(model.content, 200) resp.headers['Content-Type'] = 'text/plain; charset=utf-8' return resp user = getUserObject() form = CommentForm(request.form, csrf_enabled=False) if request.method == 'POST': if user: if form.validate(): content, users = get_usernames_from_comment(form.content.data) comment = PasteComment(user.id, model.id, content) model.comment_num = model.comment_num + 1 if user.id != model.user_id: if user not in model.followers: model.followers.append(user) db.session.add(comment) mt = MessageTemplate.query.filter_by( used_for='new_comment').first() if mt: if model.followers: for to_user in model.followers: if to_user.id != user.id: message = Message( user.id, to_user.id, mt.title % model.title, mt.content % (model.title, url_for('pasteview.view', paste_id=paste_id))) db.session.add(message) mt = MessageTemplate.query.filter_by( used_for='new_comment_has_user').first() if mt: if users: for to_user in users: if to_user.id != user.id: message = Message( user.id, to_user.id, mt.title, mt.content % url_for('pasteview.view', paste_id=paste_id)) db.session.add(message) return redirect(url_for('pasteview.view', paste_id=paste_id)) updateViewTimes(model, paste_id) lexer = find_lexer_class(model.syntax.name) formatter = HtmlFormatter(linenos='table', cssclass="source") g.code = highlight(model.content, lexer(stripall=True), formatter) g.model = model g.user = user g.form = form g.top_users = User.query.order_by('-paste_num')[:PAGE_SIZE] g.top_tags = Tag.query.order_by('-times')[:PAGE_SIZE] g.syntax_theme = request.args.get( 'css', app.config.get('DEFAULT_SYNTAX_CSS_FILE')) g.css_file = "/static/css/themes/%s.css" % g.syntax_theme #g.syntax_themes = SyntaxTheme.get_all_syntax_themes() return render('pasteview/view.html')
def view(user_id=None, slug=None): if slug: model = getUserObject(slug=slug) elif user_id: model = getUserObject(user_id=user_id) if model: g.model = model return render('userview/view.html') abort(404)
def view(tag_name): """ """ model = Tag.query.filter_by(name=tag_name).first_or_404() g.model = model g.pastes = Paste.query.join(Paste.tags).filter(Paste.tags.contains(g.model)).filter(Paste.is_private==False).order_by('pastes.created_time DESC').paginate(1, PAGE_SIZE) g.top_tags = Tag.query.order_by('times DESC').all() g.users = User.query.order_by("paste_num DESC").all()[:SIDEBAR_PAGE_SIZE] return render('tagview/view.html')
def create(): form = PasteForm(request.form, csrf_enabled=False) if request.method == 'POST' and form.validate(): user = g.user paste = Paste(form.syntax.data, user.id) file = request.files.get('code_file', None) if file: paste.content = file.stream.read() elif form.content.data: paste.content = form.content.data if form.title.data: paste.title = form.title.data if form.description.data: paste.description = form.description.data if form.is_private.data: paste.is_private = True user.paste_num = user.paste_num + 1 paste.followers.append(user) db.session.add(user) db.session.add(paste) syntax_obj = Syntax.query.filter_by(id=form.syntax.data).first() tags = [syntax_obj.tag] if form.tag.data: tags.extend(form.tag.data.split()) Tag.updateTags(paste, tags) try: db.session.commit() except: db.session.rollback() abort(500) if user.followers: mt = MessageTemplate.query.filter_by( used_for='create_paste').first() if mt: for to_user in user.followers: message = Message( user.id, to_user.id, mt.title % user.nickname, mt.content % (user.nickname, paste.title, url_for('pasteview.view', paste_id=paste.id))) db.session.add(message) mt = MessageTemplate.query.filter_by( used_for='create_paste_by_tag').first() if mt: for tag in paste.tags: for to_user in tag.followers: if to_user.id != user.id: message = Message( user.id, to_user.id, mt.title % tag.name, mt.content % (tag.name, paste.title, url_for('pasteview.view', paste_id=paste.id))) db.session.add(message) return redirect(url_for('pasteview.view', paste_id=paste.id)) g.form = form return render('pasteview/create.html')
def password(): form = PasswordForm(request.form, csrf_enabled=False) if request.method == 'POST' and form.validate(): user = getUserObject() user.password = hash_password(form.new_password.data) db.session.add(user) flash(u'密码修改成功', 'success') redirect(url_for('userview.logout')) g.form = form return render('userview/password.html')
def search(): keyword = request.args.get('keyword', '') if keyword: g.users = User.query.filter(User.nickname.like("%" + keyword + "%")) g.pastes = Paste.query.filter(Paste.title.like("%" + keyword + "%")) g.tags = Tag.query.filter(Tag.name.like("%" + keyword + "%")) g.keyword = keyword g.top_tags = Tag.query.order_by('times DESC')[:SIDEBAR_PAGE_SIZE] g.top_users = User.query.order_by('paste_num DESC')[:SIDEBAR_PAGE_SIZE] return render('siteview/search.html')
def view(paste_id): model = Paste.query.get_or_404(paste_id) output = request.args.get('output', None) if output == 'raw': resp = make_response(model.content, 200) resp.headers['Content-Type'] = 'text/plain; charset=utf-8' return resp user = getUserObject() form = CommentForm(request.form, csrf_enabled=False) if request.method == 'POST': if user: if form.validate(): content, users = get_usernames_from_comment(form.content.data) comment = PasteComment(user.id, model.id, content) model.comment_num = model.comment_num + 1 if user.id != model.user_id: if user not in model.followers: model.followers.append(user) db.session.add(comment) mt = MessageTemplate.query.filter_by(used_for='new_comment').first() if mt: if model.followers: for to_user in model.followers: if to_user.id != user.id: message = Message(user.id, to_user.id, mt.title % model.title, mt.content % (model.title, url_for('pasteview.view', paste_id=paste_id))) db.session.add(message) mt = MessageTemplate.query.filter_by(used_for='new_comment_has_user').first() if mt: if users: for to_user in users: if to_user.id != user.id: message = Message(user.id, to_user.id, mt.title, mt.content % url_for('pasteview.view', paste_id=paste_id)) db.session.add(message) return redirect(url_for('pasteview.view', paste_id=paste_id)) updateViewTimes(model, paste_id) lexer = find_lexer_class(model.syntax.name) formatter = HtmlFormatter(linenos='table', cssclass="source") g.code = highlight(model.content, lexer(stripall=True), formatter) g.model = model g.user = user g.form = form g.top_users = User.query.order_by('-paste_num')[:PAGE_SIZE] g.top_tags = Tag.query.order_by('-times')[:PAGE_SIZE] g.syntax_theme = request.args.get('css', app.config.get('DEFAULT_SYNTAX_CSS_FILE')) g.css_file = "/static/css/themes/%s.css" % g.syntax_theme #g.syntax_themes = SyntaxTheme.get_all_syntax_themes() return render('pasteview/view.html')
def create(): form = PasteForm(request.form, csrf_enabled=False) if request.method == 'POST' and form.validate(): user = g.user paste = Paste(form.syntax.data, user.id) file = request.files.get('code_file', None) if file: paste.content = file.stream.read() elif form.content.data: paste.content = form.content.data if form.title.data: paste.title = form.title.data if form.description.data: paste.description = form.description.data if form.is_private.data: paste.is_private = True user.paste_num = user.paste_num + 1 paste.followers.append(user) db.session.add(user) db.session.add(paste) syntax_obj = Syntax.query.filter_by(id=form.syntax.data).first() tags = [syntax_obj.tag] if form.tag.data: tags.extend(form.tag.data.split()) Tag.updateTags(paste, tags) try: db.session.commit() except: db.session.rollback() abort(500) if user.followers: mt = MessageTemplate.query.filter_by(used_for='create_paste').first() if mt: for to_user in user.followers: message = Message(user.id, to_user.id, mt.title % user.nickname, mt.content % (user.nickname, paste.title, url_for('pasteview.view', paste_id=paste.id))) db.session.add(message) mt = MessageTemplate.query.filter_by(used_for='create_paste_by_tag').first() if mt: for tag in paste.tags: for to_user in tag.followers: if to_user.id != user.id: message = Message(user.id, to_user.id, mt.title % tag.name, mt.content % (tag.name, paste.title, url_for('pasteview.view', paste_id=paste.id))) db.session.add(message) return redirect(url_for('pasteview.view', paste_id=paste.id)) g.form = form return render('pasteview/create.html')
def create_profile(): form = ProfileForm(request.form) form.nickname.data = request.values.get('nickname') form.email.data = request.values.get('email') if request.method == 'POST' and form.validate(): user = User(form.nickname.data, form.email.data) user.openid = session['openid'] info = UserInfo(user.id) user.info = info db.session.add(user) db.session.add(info) db.session.commit() flash(u'资料建立成功', 'success') session.pop('openid') session['user'] = user.id return redirect("/") g.form = form return render('userview/create_profile.html', next_url=oid.get_next_url())
def manage(): form = UserInfoForm(request.form, csrf_enabled=False) user = getUserObject() if request.method == 'POST' and form.validate(): user.nickname = form.nickname.data user.info.motoo = form.motoo.data user.info.introduction = form.introduction.data db.session.add(user) flash(u'信息修改成功', 'success') return redirect(url_for('userview.manage')) if request.method == 'GET': form.motoo.data = user.info.motoo form.introduction.data = user.info.introduction form.nickname.data = user.nickname if form.errors: for error in form.errors: flash(form.errors[error][0], 'error') g.form = form return render('userview/manage.html')
def register(): form = RegisterForm(request.form, csrf_enabled=False) g.form = form if 'user' in session: flash(u'请先登出再注册新用户', 'error') return render('userview/register.html') if request.method == 'POST' and form.validate(): user = User(form.nickname.data, form.email.data) user.set_password(form.password.data) info = UserInfo(user.id) user.info = info db.session.add(user) db.session.add(info) try: db.session.commit() except Exception, e: abort(500) flash(u'注册成功!', 'success') return redirect(url_for('userview.login'))
def edit(paste_id): model = Paste.query.get_or_404(paste_id) user = getUserObject() g.syntax = Syntax.get_syntax_list() if (model.user.id != user.id) and (not user.check_privilege(4)): abort(403) form = PasteForm(request.form, csrf_enabled=False) if request.method == 'GET': form.title.data = model.title form.content.data = model.content form.syntax.data = str(model.syntax_id) form.tag.data = ' '.join([tag.name for tag in model.tags]) elif request.method == 'POST' and form.validate(): model.title = form.title.data model.content = form.content.data if form.description.data: model.description = form.description.data syntax = Syntax.query.filter_by(id=form.syntax.data).first() model.syntax_id = syntax.id model.modified_time = datetime.now() if form.is_private.data: model.is_private = True tags = form.tag.data.strip().split() Tag.updateTags(model, set(tags)) db.session.add(model) if user.followers: mt = MessageTemplate.query.filter_by( used_for='update_paste').first() if mt: for to_user in user.followers: message = Message( user.id, to_user.id, mt.title % model.title, mt.content % (model.title, url_for('pasteview.view', paste_id=model.id))) db.session.add(message) return redirect(url_for('pasteview.view', paste_id=model.id)) g.model = model g.form = form #g.syntax = Syntax.get_syntax_list() return render('pasteview/edit.html')
def edit(paste_id): model = Paste.query.get_or_404(paste_id) user = getUserObject() g.syntax = Syntax.get_syntax_list() if (model.user.id != user.id) and (not user.check_privilege(4)): abort(403) form = PasteForm(request.form, csrf_enabled=False) if request.method == 'GET': form.title.data = model.title form.content.data = model.content form.syntax.data = str(model.syntax_id) form.tag.data = ' '.join([tag.name for tag in model.tags]) elif request.method == 'POST' and form.validate(): model.title = form.title.data model.content = form.content.data if form.description.data: model.description = form.description.data syntax = Syntax.query.filter_by(id=form.syntax.data).first() model.syntax_id = syntax.id model.modified_time = datetime.now() if form.is_private.data: model.is_private = True tags = form.tag.data.strip().split() Tag.updateTags(model, set(tags)) db.session.add(model) if user.followers: mt = MessageTemplate.query.filter_by(used_for='update_paste').first() if mt: for to_user in user.followers: message = Message(user.id, to_user.id, mt.title % model.title, mt.content % (model.title, url_for('pasteview.view', paste_id=model.id))) db.session.add(message) return redirect(url_for('pasteview.view', paste_id=model.id)) g.model = model g.form = form #g.syntax = Syntax.get_syntax_list() return render('pasteview/edit.html')
def login(): if g.user is not None: return redirect(oid.get_next_url()) form = LoginForm(request.form, csrf_enabled=False) if request.method == 'POST': openid = request.form.get('openid', None) if openid: return oid.try_login(COMMON_PROVIDERS.get(openid, "google"), ask_for=['email', 'nickname']) if form.validate(): user = User.query.filter_by(email=form.email.data).first() if user: if user.password == hash_password(form.password.data): user.last_login_time = datetime.now() session['user'] = str(user.id) flash(u'成功登入', 'success') return redirect(request.args.get('next', '/')) else: flash(u'用户名/密码错误', 'error') g.form = form return render('userview/login.html', next=oid.get_next_url(), error=oid.fetch_error())
def page_error(error): d['title'] = u'页面出错啦' d['message'] = u'您所访问的页面出错啦! 待会再来吧!' app.logger.error(str(error)) return render('error.html', **d), 500
def page_not_found(error): d['title'] = u'页面不存在' d['message'] = u'您所访问的页面不存在, 是不是打错地址了啊?' return render('error.html', **d), 404
def permission_error(error): d['title'] = u'您没有权限' d['message'] = u'您没有权限执行当前的操作, 请登陆或检查url是否错误.' return render('error.html', **d), 403
def messages(): g.model = g.user g.messages = Message.query.filter_by( to_user_id=g.user.id).order_by("created_time DESC").all() return render('siteview/messages.html')
def index(): g.new_pastes = Paste.query.filter_by(is_private=False).filter_by(is_delete=False).order_by('created_time DESC')[:PAGE_SIZE] g.top_tags = Tag.query.order_by('times DESC')[:SIDEBAR_PAGE_SIZE] g.users = User.query.order_by('created_time DESC')[:SIDEBAR_PAGE_SIZE] #import pdb; pdb.set_trace() return render('siteview/index.html')
def post(object_id=None): if not object_id: abort(404) g.post = Post.query.get_or_404(object_id) return render('siteview/post.html')
def rss(user_id): g.user = User.query.get_or_404(user_id) g.pastes = Paste.query.filter_by(user_id=user_id, is_private=False).order_by("created_time DESC").all() return render('rss/user.xml')
if request.method == 'POST' and form.validate(): user = User(form.nickname.data, form.email.data) user.set_password(form.password.data) info = UserInfo(user.id) user.info = info db.session.add(user) db.session.add(info) try: db.session.commit() except Exception, e: abort(500) flash(u'注册成功!', 'success') return redirect(url_for('userview.login')) flash(u'如果您有google帐号, 可以直接使用google提供的openid方式登录, 请点击登录按钮然后选择google帐号登录', 'alert') return render('userview/register.html') @userview.route('/manage', methods=['GET', 'POST']) @login_required def manage(): form = UserInfoForm(request.form, csrf_enabled=False) user = getUserObject() if request.method == 'POST' and form.validate(): user.nickname = form.nickname.data user.info.motoo = form.motoo.data user.info.introduction = form.introduction.data db.session.add(user) flash(u'信息修改成功', 'success') return redirect(url_for('userview.manage')) if request.method == 'GET':
def rss(tag): g.tag = Tag.query.filter_by(name=tag).first() if not g.tag: abort(404) g.pastes = Paste.query.filter(Paste.tags.contains(g.tag)).filter_by(is_private=False).order_by("created_time DESC").all() return render('rss/tag.xml')
def rss(): g.pastes = Paste.query.filter_by( is_private=False).order_by("created_time DESC").all() return render('rss/site.xml')
if request.method == 'POST' and form.validate(): user = User(form.nickname.data, form.email.data) user.set_password(form.password.data) info = UserInfo(user.id) user.info = info db.session.add(user) db.session.add(info) try: db.session.commit() except Exception, e: abort(500) flash(u'注册成功!', 'success') return redirect(url_for('userview.login')) flash(u'如果您有google帐号, 可以直接使用google提供的openid方式登录, 请点击登录按钮然后选择google帐号登录', 'alert') return render('userview/register.html') @userview.route('/manage', methods=['GET', 'POST']) @login_required def manage(): form = UserInfoForm(request.form, csrf_enabled=False) user = getUserObject() if request.method == 'POST' and form.validate(): user.nickname = form.nickname.data user.info.motoo = form.motoo.data user.info.introduction = form.introduction.data db.session.add(user) flash(u'信息修改成功', 'success') return redirect(url_for('userview.manage')) if request.method == 'GET': form.motoo.data = user.info.motoo
def rss(user_id): g.user = User.query.get_or_404(user_id) g.pastes = Paste.query.filter_by( user_id=user_id, is_private=False).order_by("created_time DESC").all() return render('rss/user.xml')
def rss(): g.pastes = Paste.query.filter_by(is_private=False).order_by("created_time DESC").all() return render('rss/site.xml')
def rank(): g.top_tags = Tag.query.order_by('times DESC')[:SIDEBAR_PAGE_SIZE] g.top_view_pastes = Paste.query.filter_by(is_private=False).filter_by(is_delete=False).order_by('view_num DESC')[:SIDEBAR_PAGE_SIZE] g.top_comment_pastes = Paste.query.filter_by(is_private=False).order_by('comment_num DESC')[:SIDEBAR_PAGE_SIZE] g.users = User.query.order_by('paste_num DESC')[:SIDEBAR_PAGE_SIZE] return render('rankview/rank.html')
def page(slug=None): if not slug: abort(404) g.page = Page.query.filter_by(slug=slug).first_or_404() return render('siteview/page.html')
def messages(): g.model = g.user g.messages = Message.query.filter_by(to_user_id=g.user.id).order_by("created_time DESC").all() return render('siteview/messages.html')
def list(): g.users = User.query.order_by('paste_num DESC')[:SIDEBAR_PAGE_SIZE] g.tags = Tag.query.order_by('name').all() g.top_tags = Tag.query.order_by('-times')[:PAGE_SIZE] return render('tagview/list.html')