home.py 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. # -*- coding: UTF-8 -*-
  2. from django.http import HttpResponse,HttpResponseRedirect
  3. from django.conf import settings
  4. from django.shortcuts import render_to_response,RequestContext
  5. #from django_hosts.resolvers import reverse
  6. from django.core.cache import get_cache
  7. from django.core.urlresolvers import reverse
  8. from django.contrib import messages
  9. from siteutil.DataConvert import str2int,CheckPOST,str2long,BigIntUniqueID,CacheConfGet
  10. from siteutil.CommonPaginator import SelfPaginator
  11. from zlogin.common.JsonResponse import JsonResponse
  12. from zlogin.decorators import login_detect,login_required,PermNeed
  13. from zlogin import zlauth
  14. from zlogin.zlauth import GetUser,PermCheck
  15. from zlogin.captcha_app import CheckCaptcha,OutsiteCaptchaURL
  16. from pichublog.models import *
  17. from pichublog.forms import *
  18. cache = get_cache("pichublog")
  19. import traceback
  20. @login_detect()
  21. def Home(request):
  22. dbginfo = []
  23. mpid = CacheConfGet(cache,'HomePagePost',default=0)
  24. dbginfo.append(repr(mpid))
  25. try:
  26. mpo = BlogPost.objects.get(id=str2int(mpid))
  27. hp = True
  28. except:
  29. dbginfo.append(traceback.format_exc())
  30. hp = False
  31. if hp:
  32. if not mpo.rendered:
  33. hp = False
  34. kwargs = {"request":request,"hp":hp,"mpo":mpo,"dbginfo":dbginfo}
  35. return render_to_response('home/home.html',kwargs,RequestContext(request))
  36. def LeaveMsgPage(request):
  37. kwargs = {"request":request,'OutsiteCaptchaURL':OutsiteCaptchaURL(request),
  38. "LeaveMsgReviewSwitch":CacheConfGet(cache,'LeaveMsgReviewSwitch',default=True)}
  39. return render_to_response('home/leave.msg.html',kwargs,RequestContext(request))
  40. def AjaxShowLeaveMsg(request):
  41. thisuser = GetUser(request)
  42. owner = PermCheck(request.auth,'pichublog','Admin')
  43. if owner:
  44. cmt = LeaveMsg.objects.all().order_by('-time')
  45. else:
  46. cmt = LeaveMsg.objects.filter(reviewed=True).order_by('-time')
  47. lPage = SelfPaginator(request,cmt,20)
  48. kwvars = {
  49. 'request':request,
  50. 'owner':owner,
  51. 'lPage':lPage,
  52. 'AjaxPaginatorID':'cmt',
  53. }
  54. return render_to_response('home/ajax.leavemsg.html',kwvars,RequestContext(request))
  55. def LeaveMsgAdd(request):
  56. if request.method == "POST":
  57. if request.auth.islogin:
  58. chkpr=CheckPOST(['content'],request.POST.keys())
  59. if not chkpr == "" :
  60. return JsonResponse({"code":400,"msg":"Error Args."})
  61. else:
  62. chkpr=CheckPOST(['content','nick','website','mail','title'],request.POST.keys())
  63. if not chkpr == "" :
  64. return JsonResponse({"code":400,"msg":"Error Args."})
  65. if request.auth.islogin:
  66. content = request.POST.get('content')
  67. title = request.POST.get('title')
  68. stk = request.auth.cookie.get('zl2_token')
  69. LeaveMsg.objects.create(cmid=BigIntUniqueID(),title=title,anonymou=False,stoken=stk,fromuser=request.auth.user,content=content,reviewed=True)
  70. return HttpResponseRedirect(reverse('pichublog_msgboard'))
  71. else:
  72. capt = request.POST.get('captcha')
  73. if not CheckCaptcha(request,capt):
  74. messages.error(request,u"<b>验证码错误</b>")
  75. return HttpResponseRedirect(reverse('pichublog_msgboard'))
  76. content = request.POST.get('content')
  77. nick = request.POST.get('nick')
  78. mail = request.POST.get('mail')
  79. web = request.POST.get('website')
  80. title = request.POST.get('title')
  81. stk = request.auth.cookie.get('zl2_token')
  82. rws = not CacheConfGet(cache,'LeaveMsgReviewSwitch',default=True)
  83. LeaveMsg.objects.create(cmid=BigIntUniqueID(),title=title,anonymou=True,stoken=stk,fromuser=nick,mail=mail,website=web,content=content,reviewed=rws)
  84. return HttpResponseRedirect(reverse('pichublog_msgboard'))
  85. else:
  86. return HttpResponse("405 Method Not Allowed")
  87. @PermNeed('pichublog','Admin')
  88. def SysConf(request):
  89. kwvars = {
  90. "request":request,
  91. }
  92. return render_to_response('home/sysconf.home.html',kwvars,RequestContext(request))
  93. @PermNeed('pichublog','Admin')
  94. def SysVarConf(request):
  95. kwvars = {
  96. "request":request,
  97. }
  98. return render_to_response('home/sysconf.var.html',kwvars,RequestContext(request))
  99. @PermNeed('pichublog','Admin')
  100. def SysVarConfAjaxGet(request):
  101. defaultconf = [
  102. ("LeaveMsgReviewSwitch","访客在留言板的留言要求审核再显示",True,"bool"),
  103. ("CommentsReviewSwitch","访客对文章的评论要求审核再显示",True,"bool"),
  104. ("HomePagePost","首页内容来源文章ID","","str"),
  105. ]
  106. conf = []
  107. for i in defaultconf:
  108. conf.append((i[0],i[1],CacheConfGet(cache,i[0],default=i[2]),i[3]))
  109. kwvars = {
  110. "request":request,
  111. "conf":conf
  112. }
  113. return render_to_response('home/sysconf.var.ajax.list.html',kwvars,RequestContext(request))
  114. @PermNeed('pichublog','Admin')
  115. def SysVarConfAjaxEdit(request):
  116. if request.method == "POST":
  117. chkpr=CheckPOST(['key','value'],request.POST.keys())
  118. if not chkpr == "" :
  119. return JsonResponse({"code":"400","errmsg":"Invalid Args."})
  120. cache.set(request.POST['key'],request.POST['value'])
  121. return JsonResponse({"code":"200"})
  122. else:
  123. return JsonResponse({"code":"400","errmsg":"Invalid Args."})
  124. @PermNeed('pichublog','Admin')
  125. def SysVarConfAjaxToggle(request):
  126. if request.method == "POST":
  127. chkpr=CheckPOST(['key'],request.POST.keys())
  128. if not chkpr == "" :
  129. return JsonResponse({"code":"400","errmsg":"Invalid Args."})
  130. c = cache.get(request.POST['key'])
  131. if c == True:
  132. cache.set(request.POST['key'],False)
  133. elif c == False:
  134. cache.set(request.POST['key'],True)
  135. else:
  136. return JsonResponse({"code":"505","errmsg":"Not Boolean Field"})
  137. return JsonResponse({"code":"200"})
  138. else:
  139. return JsonResponse({"code":"400","errmsg":"Invalid Args."})
  140. @PermNeed('pichublog','Admin')
  141. def CategoryList(request):
  142. cto = BlogCategoty.objects.all()
  143. kwvars = {
  144. "request":request,
  145. "cto":cto,
  146. }
  147. return render_to_response('home/sysconf.category.list.html',kwvars,RequestContext(request))
  148. @PermNeed('pichublog','Admin')
  149. def CategoryAdd(request):
  150. if request.method == "POST":
  151. form = BlogCategotyForm(request.POST)
  152. if form.is_valid():
  153. form.save()
  154. return HttpResponseRedirect(reverse('pichublog_catlist'))
  155. else:
  156. form = BlogCategotyForm()
  157. kwvars = {
  158. "request":request,
  159. 'form':form,
  160. "addmode":True,
  161. }
  162. return render_to_response('home/sysconf.category.edit.html',kwvars,RequestContext(request))
  163. @PermNeed('pichublog','Admin')
  164. def CategoryEdit(request,ID):
  165. try:
  166. bco = BlogCategoty.objects.get(id=ID)
  167. except BlogCategoty.DoesNotExist:
  168. messages.error(request,u"<b>编辑分类失败</b><br /><b>详细信息:</b>找不到ID为%s的分类!"%ID)
  169. return HttpResponseRedirect(reverse('pichublog_catlist'))
  170. if request.method == "POST":
  171. form = BlogCategotyForm(request.POST,instance=bco)
  172. if form.is_valid():
  173. form.save()
  174. return HttpResponseRedirect(reverse('pichublog_catlist'))
  175. else:
  176. form = BlogCategotyForm(instance=bco)
  177. kwvars = {
  178. "request":request,
  179. 'form':form,
  180. "addmode":False,
  181. }
  182. return render_to_response('home/sysconf.category.edit.html',kwvars,RequestContext(request))
  183. @PermNeed('pichublog','Admin')
  184. def CategoryDel(request,ID):
  185. try:
  186. bco = BlogCategoty.objects.get(id=ID).delete()
  187. except BlogCategoty.DoesNotExist:
  188. messages.error(request,u"<b>删除分类失败</b><br /><b>详细信息:</b>找不到ID为%s的分类!"%ID)
  189. return HttpResponseRedirect(reverse('pichublog_catlist'))