home.py 6.9 KB

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