home.py 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  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 django.db.models import Max as DbMax
  10. from siteutil.DataConvert import str2int,CheckPOST,str2long,BigIntUniqueID,CacheConfGet
  11. from siteutil.CommonPaginator import SelfPaginator
  12. from zlogin.common.JsonResponse import JsonResponse
  13. from zlogin.decorators import login_detect,login_required,PermNeed
  14. from zlogin import zlauth
  15. from zlogin.zlauth import GetUser,PermCheck
  16. from zlogin.captcha_app import CheckCaptcha,OutsiteCaptchaURL
  17. from pichublog.models import *
  18. from pichublog.forms import *
  19. cache = get_cache("pichublog")
  20. import traceback
  21. @login_detect()
  22. def Home(request):
  23. mpid = CacheConfGet(cache,'HomePagePost',default=0)
  24. mpo = None
  25. try:
  26. mpo = BlogPost.objects.get(id=str2int(mpid))
  27. hp = True
  28. except:
  29. hp = False
  30. if hp:
  31. if not mpo.rendered:
  32. hp = False
  33. kwargs = {"request":request,"hp":hp,"mpo":mpo}
  34. return render_to_response('home/home.html',kwargs,RequestContext(request))
  35. def LeaveMsgPage(request):
  36. kwargs = {"request":request,'OutsiteCaptchaURL':OutsiteCaptchaURL(request),
  37. "LeaveMsgReviewSwitch":CacheConfGet(cache,'LeaveMsgReviewSwitch',default=True)}
  38. return render_to_response('home/leave.msg.html',kwargs,RequestContext(request))
  39. def AjaxShowLeaveMsg(request):
  40. thisuser = GetUser(request)
  41. owner = PermCheck(request.auth,'pichublog','Admin')
  42. if owner:
  43. cmt = LeaveMsg.objects.all().order_by('-time')
  44. else:
  45. cmt = LeaveMsg.objects.filter(reviewed=True).order_by('-time')
  46. lPage = SelfPaginator(request,cmt,20)
  47. kwvars = {
  48. 'request':request,
  49. 'owner':owner,
  50. 'lPage':lPage,
  51. 'AjaxPaginatorID':'cmt',
  52. }
  53. return render_to_response('home/ajax.leavemsg.html',kwvars,RequestContext(request))
  54. def LeaveMsgAdd(request):
  55. if request.method == "POST":
  56. if request.auth.islogin:
  57. chkpr=CheckPOST(['content'],request.POST.keys())
  58. if not chkpr == "" :
  59. return JsonResponse({"code":400,"msg":"Error Args."})
  60. else:
  61. chkpr=CheckPOST(['content','nick','website','mail','title'],request.POST.keys())
  62. if not chkpr == "" :
  63. return JsonResponse({"code":400,"msg":"Error Args."})
  64. if request.auth.islogin:
  65. content = request.POST.get('content')
  66. title = request.POST.get('title')
  67. stk = request.auth.cookie.get('zl2_token')
  68. LeaveMsg.objects.create(cmid=BigIntUniqueID(),title=title,anonymou=False,stoken=stk,fromuser=request.auth.user,content=content,reviewed=True)
  69. return HttpResponseRedirect(reverse('pichublog_msgboard'))
  70. else:
  71. capt = request.POST.get('captcha')
  72. if not CheckCaptcha(request,capt):
  73. messages.error(request,u"<b>验证码错误</b>")
  74. return HttpResponseRedirect(reverse('pichublog_msgboard'))
  75. content = request.POST.get('content')
  76. nick = request.POST.get('nick')
  77. mail = request.POST.get('mail')
  78. web = request.POST.get('website')
  79. title = request.POST.get('title')
  80. stk = request.auth.cookie.get('zl2_token')
  81. rws = not CacheConfGet(cache,'LeaveMsgReviewSwitch',default=True)
  82. LeaveMsg.objects.create(cmid=BigIntUniqueID(),title=title,anonymou=True,stoken=stk,fromuser=nick,mail=mail,website=web,content=content,reviewed=rws)
  83. return HttpResponseRedirect(reverse('pichublog_msgboard'))
  84. else:
  85. return HttpResponse("405 Method Not Allowed")
  86. @PermNeed('pichublog','Admin')
  87. def SysConf(request):
  88. kwvars = {
  89. "request":request,
  90. }
  91. return render_to_response('home/sysconf.home.html',kwvars,RequestContext(request))
  92. @PermNeed('pichublog','Admin')
  93. def SysVarConf(request):
  94. kwvars = {
  95. "request":request,
  96. }
  97. return render_to_response('home/sysconf.var.html',kwvars,RequestContext(request))
  98. @PermNeed('pichublog','Admin')
  99. def SysVarConfAjaxGet(request):
  100. defaultconf = [
  101. ("LeaveMsgReviewSwitch","访客在留言板的留言要求审核再显示",True,"bool"),
  102. ("CommentsReviewSwitch","访客对文章的评论要求审核再显示",True,"bool"),
  103. ("HomePagePost","首页内容来源文章ID","","str"),
  104. ]
  105. conf = []
  106. for i in defaultconf:
  107. conf.append((i[0],i[1],CacheConfGet(cache,i[0],default=i[2]),i[3]))
  108. kwvars = {
  109. "request":request,
  110. "conf":conf
  111. }
  112. return render_to_response('home/sysconf.var.ajax.list.html',kwvars,RequestContext(request))
  113. @PermNeed('pichublog','Admin')
  114. def SysVarConfAjaxEdit(request):
  115. if request.method == "POST":
  116. chkpr=CheckPOST(['key','value'],request.POST.keys())
  117. if not chkpr == "" :
  118. return JsonResponse({"code":"400","errmsg":"Invalid Args."})
  119. cache.set(request.POST['key'],request.POST['value'])
  120. return JsonResponse({"code":"200"})
  121. else:
  122. return JsonResponse({"code":"400","errmsg":"Invalid Args."})
  123. @PermNeed('pichublog','Admin')
  124. def SysVarConfAjaxToggle(request):
  125. if request.method == "POST":
  126. chkpr=CheckPOST(['key'],request.POST.keys())
  127. if not chkpr == "" :
  128. return JsonResponse({"code":"400","errmsg":"Invalid Args."})
  129. c = cache.get(request.POST['key'])
  130. if c == True:
  131. cache.set(request.POST['key'],False)
  132. elif c == False:
  133. cache.set(request.POST['key'],True)
  134. else:
  135. return JsonResponse({"code":"505","errmsg":"Not Boolean Field"})
  136. return JsonResponse({"code":"200"})
  137. else:
  138. return JsonResponse({"code":"400","errmsg":"Invalid Args."})
  139. @PermNeed('pichublog','Admin')
  140. def CategoryList(request):
  141. kwvars = {
  142. "request":request,
  143. }
  144. return render_to_response('home/sysconf.category.list.html',kwvars,RequestContext(request))
  145. @PermNeed('pichublog','Admin')
  146. def AjaxCategoryList(request):
  147. cto = BlogCategoty.objects.all().order_by('order')
  148. kwvars = {
  149. "request":request,
  150. "cto":cto,
  151. }
  152. return render_to_response('home/sysconf.catlist.ajax.html',kwvars,RequestContext(request))
  153. @PermNeed('pichublog','Admin')
  154. def CategoryAdd(request):
  155. if request.method == "POST":
  156. form = BlogCategotyForm(request.POST)
  157. if form.is_valid():
  158. co = form.save(commit=False)
  159. maxorder = BlogCategoty.objects.all().aggregate(order_max=DbMax('order'))['order_max']
  160. if maxorder == None:
  161. maxorder = 0
  162. co.order = maxorder
  163. co.save()
  164. form.save_m2m()
  165. return HttpResponseRedirect(reverse('pichublog_catlist'))
  166. else:
  167. form = BlogCategotyForm()
  168. kwvars = {
  169. "request":request,
  170. 'form':form,
  171. "addmode":True,
  172. }
  173. return render_to_response('home/sysconf.category.edit.html',kwvars,RequestContext(request))
  174. @PermNeed('pichublog','Admin')
  175. def CategoryEdit(request,ID):
  176. try:
  177. bco = BlogCategoty.objects.get(id=ID)
  178. except BlogCategoty.DoesNotExist:
  179. messages.error(request,u"<b>编辑分类失败</b><br /><b>详细信息:</b>找不到ID为%s的分类!"%ID)
  180. return HttpResponseRedirect(reverse('pichublog_catlist'))
  181. if request.method == "POST":
  182. form = BlogCategotyForm(request.POST,instance=bco)
  183. if form.is_valid():
  184. co = form.save(commit=False)
  185. co.order = BlogCategoty.objects.all().aggregate(order_max=DbMax('order'))['order_max']
  186. co.save()
  187. form.save_m2m()
  188. return HttpResponseRedirect(reverse('pichublog_catlist'))
  189. else:
  190. form = BlogCategotyForm(instance=bco)
  191. kwvars = {
  192. "request":request,
  193. 'form':form,
  194. "addmode":False,
  195. }
  196. return render_to_response('home/sysconf.category.edit.html',kwvars,RequestContext(request))
  197. @PermNeed('pichublog','Admin')
  198. def CategoryDel(request,ID):
  199. try:
  200. bco = BlogCategoty.objects.get(id=ID).delete()
  201. except BlogCategoty.DoesNotExist:
  202. messages.error(request,u"<b>删除分类失败</b><br /><b>详细信息:</b>找不到ID为%s的分类!"%ID)
  203. return HttpResponseRedirect(reverse('pichublog_catlist'))
  204. @PermNeed('pichublog','Admin')
  205. def AjaxCategoryMoveOrder(request):
  206. chkpr = CheckPOST(['dct','mvid'],request.GET.keys())
  207. if not chkpr == "" :
  208. return JsonResponse({"code":400,"msg":"Error Args."})
  209. dct = request.GET.get('dct')
  210. mvid = request.GET.get('mvid')
  211. try:
  212. curo = BlogCategoty.objects.get(id=mvid)
  213. except BlogCategoty.DoesNotExist:
  214. return JsonResponse({"code":404,"msg":"object Not Found."})
  215. if dct == "up":
  216. neo = curo.order - 1
  217. elif dct == "dn":
  218. neo = curo.order + 1
  219. try:
  220. nexto = BlogCategoty.objects.get(order=neo)
  221. except BlogCategoty.DoesNotExist:
  222. return JsonResponse({"code":300,"msg":"Attached Limit."})
  223. except BlogCategoty.MultipleObjectsReturned:
  224. return JsonResponse({"code":500,"isec":"500@AjaxChpOcMv$100","msg":"Internal Server Error, Please Contact With Website Master or Admin."})
  225. o1=nexto.order
  226. o2=curo.order
  227. nexto.order=o2
  228. curo.order=o1
  229. nexto.save()
  230. curo.save()
  231. return JsonResponse({"code":200,"msg":"OK."})