def add(request): """ 用户写新的文章 """ current_page = 'user_wiki' title = '投稿' if request.method == 'GET': form = WikiForm() return render('wiki_add.html',locals(),context_instance=RequestContext(request)) form = WikiForm(request.POST) if form.is_valid(): data = form.cleaned_data new_wiki = Entry() new_wiki.author = request.user new_wiki.title = data['title'] new_wiki.content = data['content'] new_wiki.source = data['source'] try: new_wiki.save() except Exception,e: return HttpResponse('保存文章时出错:%s'%e) else: # 开启线程添加文章标签 TagingThread(wiki_object=new_wiki).start() # 开启下载图片的线程 ImageDownloader(new_wiki).start() # 发送信号 new_wiki_was_post.send( sender= new_wiki.__class__, wiki = new_wiki ) return HttpResponseRedirect('/wiki/%d/' %new_wiki.id)
def post(request): """ 匿名用户投稿 """ current_page = APP if request.method == 'GET': form = WikiForm() return render('wiki_post.html', locals(), context_instance=RequestContext(request)) form = WikiForm(request.POST) if form.is_valid(): data = form.cleaned_data try: send_mail(u'投稿', u'文章链接:%s' % data['source'], '*****@*****.**', ['*****@*****.**']) except Exception: pass msg = '感谢你的投稿,链接已发送至管理员' return render('posted.html', locals(), context_instance=RequestContext(request)) else: return render('wiki_post.html', locals(), context_instance=RequestContext(request))
def create_wiki_page(new_page): error = None form = WikiForm() if form.validate_on_submit(): new_wiki = Wiki( page_name=new_page, content=form.content.data, version=1, user_id=current_user.id ) db.session.add(new_wiki) db.session.commit() wiki_rev = WikiRevisions( wiki_parent=new_wiki.id, wiki_post_rev=form.content.data, user_id=new_wiki.user_id, version=new_wiki.version, ) db.session.add(wiki_rev) db.session.commit() flash("You just created a new wiki named <u>%s</u>" % new_wiki.page_name, "success") return redirect(url_for("show_wiki", page_name=new_page)) return render_template( "create_wiki.html", new_page=new_page, form=form, error=error )
def post(request): """ 匿名用户投稿 """ ######################################################################################### # 用户操作行为安全保护 # 计时器 timer = time.time() - request.session.get('time_stamp', 0) # 危险操作次数 action_times = request.session.get('action_times', 0) # 错误次数是否大于最大 if action_times >= 1: if not check_verify(request): return render('verify.html', locals(), context_instance=RequestContext(request)) else: # 重置标志位 reset(request) elif timer > 60: # 重置标志位 reset(request) ######################################################################################### current_page = APP # 处理GET请求 if request.method == 'GET': form = WikiForm() return render('wiki_post.html', locals(), context_instance=RequestContext(request)) # 处理POST请求 form = WikiForm(request.POST) set(request) if form.is_valid(): data = form.cleaned_data try: send_mail(u'投稿', u'文章链接:%s' % data['source'], '*****@*****.**', ['*****@*****.**']) except Exception: pass msg = '感谢你的投稿,链接已发送至管理员' return render('posted.html', locals(), context_instance=RequestContext(request)) else: return render('wiki_post.html', locals(), context_instance=RequestContext(request))
def edit(request,wiki_id): """ 用户编辑文章 """ current_page = 'user_wiki' title = '修改文章' try: wiki_id = int(wiki_id) except ValueError: raise Http404() try: wiki = Entry.objects.get(id=wiki_id,author=request.user) except Entry.DoesNotExist: raise Http404() if wiki.md_content: template = 'wiki_add_md.html' else: template = 'wiki_add.html' if wiki.public: messages.error(request,'文章已经发表,不允许被修改或删除') url = '/wiki/{}/'.format(wiki.id) return HttpResponseRedirect(url) # 处理GET请求 if request.method == 'GET': form = WikiForm(instance=wiki) return render(template,locals(),context_instance=RequestContext(request)) # 处理POST请求 if wiki.md_content: form = WikiMdForm(request.POST) else: form = WikiForm(request.POST) if form.is_valid(): data = form.cleaned_data for k,v in data.items(): setattr(wiki,k,v) try: wiki.save() except Exception,e: messages.error(request,'保存文章时出错:%s'%e) return HttpResponseRedirect('/home/wiki/') else: messages.success(request,'修改成功!') return HttpResponseRedirect('/wiki/%d/' %wiki.id)
def post(request): """ 匿名用户投稿 """ ######################################################################################### # 用户操作行为安全保护 # 计时器 timer = time.time() - request.session.get('time_stamp',0) # 危险操作次数 action_times = request.session.get('action_times',0) # 错误次数是否大于最大 if action_times >= 1: if not check_verify(request): return render('verify.html',locals(),context_instance=RequestContext(request)) else: # 重置标志位 reset(request) elif timer > 60: # 重置标志位 reset(request) ######################################################################################### current_page = APP # 处理GET请求 if request.method == 'GET': form = WikiForm() return render('wiki_post.html',locals(),context_instance=RequestContext(request)) # 处理POST请求 form = WikiForm(request.POST) set(request) if form.is_valid(): data = form.cleaned_data try: send_mail(u'投稿',u'文章链接:%s' %data['source'],'*****@*****.**',['*****@*****.**']) except Exception: pass msg = '感谢你的投稿,链接已发送至管理员' return render('posted.html',locals(),context_instance=RequestContext(request)) else: return render('wiki_post.html',locals(),context_instance=RequestContext(request))
def edit(request, wiki_id): """ 用户编辑文章 """ current_page = 'user_wiki' title = '修改文章' try: wiki_id = int(wiki_id) except ValueError: raise Http404() try: wiki = Entry.objects.get(id=wiki_id, author=request.user) except Entry.DoesNotExist: raise Http404() # 处理GET请求 if request.method == 'GET': form = WikiForm(instance=wiki) return render('wiki_add.html', locals(), context_instance=RequestContext(request)) # 处理POST请求 form = WikiForm(request.POST) if form.is_valid(): data = form.cleaned_data wiki.title = data['title'] wiki.content = data['content'] wiki.source = data['source'] and data[ 'source'] or 'http://pythoner.net/home/%d/' % request.user.id try: wiki.save() except Exception, e: messages.error(request, '保存文章时出错:%s' % e) return HttpResponseRedirect('/home/wiki/') else: messages.success(request, '修改成功!') # 开启添加标签线程 TagingThread(wiki_object=wiki).start() ImageDownloader(wiki).start() return HttpResponseRedirect('/wiki/%d/' % wiki.id)
def edit(request,wiki_id): """ 用户编辑文章 """ current_page = 'user_wiki' title = '修改文章' try: wiki_id = int(wiki_id) except ValueError: raise Http404() try: wiki = Entry.objects.get(id=wiki_id,author=request.user) except Entry.DoesNotExist: raise Http404() # 处理GET请求 if request.method == 'GET': form = WikiForm(instance=wiki) return render('wiki_add.html',locals(),context_instance=RequestContext(request)) # 处理POST请求 form = WikiForm(request.POST) if form.is_valid(): data = form.cleaned_data wiki.title = data['title'] wiki.content = data['content'] wiki.source = data['source'] and data['source'] or 'http://pythoner.net/home/%d/' %request.user.id try: wiki.save() except Exception,e: messages.error(request,'保存文章时出错:%s'%e) return HttpResponseRedirect('/home/wiki/') else: messages.success(request,'修改成功!') # 开启添加标签线程 TagingThread(wiki_object=wiki).start() ImageDownloader(wiki).start() return HttpResponseRedirect('/wiki/%d/' %wiki.id)
def post(request): """ 匿名用户投稿 """ current_page = APP if request.method == 'GET': form = WikiForm() return render('wiki_post.html',locals(),context_instance=RequestContext(request)) form = WikiForm(request.POST) if form.is_valid(): data = form.cleaned_data try: send_mail(u'投稿',u'文章链接:%s' %data['source'],'*****@*****.**',['*****@*****.**']) except Exception: pass msg = '感谢你的投稿,链接已发送至管理员' return render('posted.html',locals(),context_instance=RequestContext(request)) else: return render('wiki_post.html',locals(),context_instance=RequestContext(request))
def add(request, method='markdown'): """ 用户写新的文章 """ current_page = 'user_wiki' title = '分享文章' if request.method == 'GET': if method == 'markdown': form = WikiMdForm() template = 'wiki_add_md.html' else: form = WikiForm() template = 'wiki_add.html' return render(template, locals(), context_instance=RequestContext(request)) if method == 'markdown': form = WikiMdForm(request.POST) else: form = WikiForm(request.POST) if form.is_valid(): data = form.cleaned_data new_wiki = Entry(**data) new_wiki.author = request.user #new_wiki.title = data['title'] #new_wiki.content = data['content'] #new_wiki.source = data['source'] try: new_wiki.save() except Exception, e: return HttpResponse('保存文章时出错:%s' % e) else: # 发送信号 new_wiki_was_post.send(sender=new_wiki.__class__, wiki=new_wiki) return HttpResponseRedirect('/wiki/%d/' % new_wiki.id)
def add(request): """ 用户写新的文章 """ current_page = 'user_wiki' title = '写新笔记' # 处理GET请求 if request.method == 'GET': form = WikiForm() return render('wiki_add.html', locals(), context_instance=RequestContext(request)) # 处理POST请求 form = WikiForm(request.POST) if form.is_valid(): data = form.cleaned_data new_wiki = Entry() new_wiki.author = request.user new_wiki.title = data['title'] new_wiki.content = data['content'] new_wiki.source = data['source'] and data[ 'source'] or 'http://pythoner.net/home/%d/' % request.user.id try: new_wiki.save() except Exception, e: return HttpResponse('保存文章时出错:%s' % e) else: # 开启线程添加文章标签 TagingThread(wiki_object=new_wiki).start() # 开启下载图片的线程 ImageDownloader(new_wiki).start() # 发送信号 new_wiki_was_post.send(sender=new_wiki.__class__, wiki=new_wiki) return HttpResponseRedirect('/wiki/%d/' % new_wiki.id)
def edit_wiki(page_name): error = None wiki_page = Wiki.query.filter_by(page_name=page_name).one() form = WikiForm(obj=wiki_page) if form.validate_on_submit(): wiki_page.content = form.content.data wiki_page.version += 1 revisions = WikiRevisions( wiki_parent=wiki_page.id, wiki_post_rev=form.content.data, user_id=current_user.id, version=wiki_page.version ) db.session.add(revisions) db.session.add(wiki_page) db.session.commit() flash("You just edited wiki page <u>%s</u>" % wiki_page.page_name, "success") return redirect(url_for("show_wiki", page_name=page_name)) return render_template( "edit_wiki.html", form=form, wiki_page=wiki_page, error = error )
def edit(request, wiki_id): """ 用户编辑文章 """ current_page = 'user_wiki' title = '修改文章' try: wiki_id = int(wiki_id) except ValueError: raise Http404() try: wiki = Entry.objects.get(id=wiki_id, author=request.user) except Entry.DoesNotExist: raise Http404() if wiki.md_content: template = 'wiki_add_md.html' else: template = 'wiki_add.html' if wiki.public: messages.error(request, u'文章已经发表,不允许被修改或删除') url = '/wiki/{}/'.format(wiki.id) return HttpResponseRedirect(url) # 处理GET请求 if request.method == 'GET': form = WikiForm(instance=wiki) return render(template, locals(), context_instance=RequestContext(request)) # 处理POST请求 if wiki.md_content: form = WikiMdForm(request.POST) else: form = WikiForm(request.POST) if form.is_valid(): data = form.cleaned_data for k, v in data.items(): setattr(wiki, k, v) try: wiki.save() except Exception, e: messages.error(request, u'保存文章时出错:%s' % e) return HttpResponseRedirect('/home/wiki/') else: messages.success(request, u'修改成功!') return HttpResponseRedirect('/wiki/%d/' % wiki.id)
def add(request,editor='markdown'): """ 用户写新的文章 """ current_page = 'user_wiki' if request.method == 'GET': backup_data = {} for k in ['title','content','md_content','source']: _k = 'backup_{}'.format(k) try: v = request.session.get(_k) backup_data[k] = v except: pass if editor == 'markdown': title = u'分享文章(使用MarkDown编辑器)' form = WikiMdForm() template = 'wiki_add_md.html' else: title = u'分享文章(使用富文本编辑器)' form = WikiForm() template = 'wiki_add.html' page_title = title form.initial = backup_data return render(template,locals(),context_instance=RequestContext(request)) if editor == 'markdown': form = WikiMdForm(request.POST) tpl_name = 'wiki_add_md.html' else: form = WikiForm(request.POST) tpl_name = 'wiki_add.html' if form.is_valid(): data = form.cleaned_data if not data.get('md_content') and not data.get('content'): messages.error(request,u'文章文章内容不能为空') return render(tpl_name,locals(),context_instance=RequestContext(request)) new_wiki = Entry(**data) new_wiki.author = request.user try: new_wiki.save() except Exception,e: msg = u'保存文章时出错' log.error(msg + str(e.message )) return HttpResponse(msg) else: # 发送增加声望的信号 update_user_repulation.send( sender = __name__, request = request, message = u'分享文章成功', user = request.user, action = 'add', content_type = 'wiki', title = new_wiki.title, url = new_wiki.get_absolute_url(), ) # 发送信号 new_wiki_was_post.send( sender= new_wiki.__class__, wiki = new_wiki, ) # 清除备份数据 _keys = request.session.keys() for k in ['title','content','md_content','source']: _k = 'backup_{}'.format(k) if _k in _keys: del request.session[_k] return HttpResponseRedirect('/wiki/%d/' %new_wiki.id)