posts.py 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  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 siteutil.CommonFilter import CommonFilter,FilterCondition
  12. from siteutil.htmlutil import renderMarkdownSafety
  13. from zlogin.common.JsonResponse import JsonResponse
  14. from zlogin.decorators import login_detect,login_required,PermNeed
  15. from zlogin import zlauth
  16. from zlogin.zlauth import GetUser,PermCheck
  17. from zlogin.captcha_app import CheckCaptcha,OutsiteCaptchaURL
  18. from pichublog.models import *
  19. from pichublog.forms import *
  20. import time
  21. cache = get_cache("pichublog")
  22. @PermNeed('pichublog','Admin')
  23. def PostABkList(request):
  24. bpo = BlogPost.objects.all()
  25. ctids = []
  26. ctals = []
  27. for i in BlogCategoty.objects.all():
  28. ctids.append(i.id)
  29. ctals.append(i.title)
  30. fco = FilterCondition()
  31. fco.addTextContain("t","标题","title")
  32. fco.addTextContain("au","作者","author__name")
  33. fco.addDateRange("ct","创建时间","crttime")
  34. fco.addDateRange("pt","发布时间","pubtime")
  35. fco.addSingleChoice("hid","隐藏","hidden",[True,False],alias=["真","假"])
  36. fco.addSingleChoice("prv","私密","private",[True,False],alias=["真","假"])
  37. fco.addSingleChoice("fc","自由评论","freecomment",[True,False],alias=["真","假"])
  38. fco.addMultiChoice("cat","分类","category_id",ctids,alias=ctals)
  39. fList = CommonFilter(request,fco,bpo)
  40. #分页功能
  41. lpg = SelfPaginator(request,fList, 20)
  42. kwvars = {
  43. "request":request,
  44. "lPage":lpg,
  45. 'FilterHTML':fco.RenderHTML(request),
  46. "adminmode":True,
  47. }
  48. return render_to_response('home/post.bk.list.html',kwvars,RequestContext(request))
  49. @PermNeed('pichublog','Writer')
  50. def PostWBkList(request):
  51. bpo = BlogPost.objects.all()
  52. mList = bpo.filter(author=GetUser(request))
  53. ctids = []
  54. ctals = []
  55. for i in BlogCategoty.objects.all():
  56. ctids.append(i.id)
  57. ctals.append(i.title)
  58. fco = FilterCondition()
  59. fco.addTextContain("t","标题","title")
  60. fco.addDateRange("ct","创建时间","crttime")
  61. fco.addDateRange("pt","发布时间","pubtime")
  62. fco.addSingleChoice("hid","隐藏","hidden",[True,False],alias=["真","假"])
  63. fco.addSingleChoice("prv","私密","private",[True,False],alias=["真","假"])
  64. fco.addSingleChoice("fc","自由评论","freecomment",[True,False],alias=["真","假"])
  65. fco.addMultiChoice("cat","分类","category_id",ctids,alias=ctals)
  66. fList = CommonFilter(request,fco,mList)
  67. #分页功能
  68. lpg = SelfPaginator(request,fList, 20)
  69. kwvars = {
  70. "request":request,
  71. "lPage":lpg,
  72. 'FilterHTML':fco.RenderHTML(request),
  73. "adminmode":False,
  74. }
  75. return render_to_response('home/post.bk.list.html',kwvars,RequestContext(request))
  76. def PostList(request,ctname):
  77. bpo = BlogPost.objects.all().filter(rendered=True,hidden=False)
  78. if not ctname == "*":
  79. bpo = bpo.filter(category__engname=ctname)
  80. fco = FilterCondition()
  81. fco.addTextContain("t","标题","title")
  82. fco.addTextContain("au","作者用户名","author__name")
  83. fco.addTextContain("an","作者昵称","author__nick")
  84. fco.addDateRange("ct","创建时间","crttime")
  85. fco.addDateRange("pt","发布时间","pubtime")
  86. fList = CommonFilter(request,fco,bpo)
  87. #分页功能
  88. lpg = SelfPaginator(request,fList, 20)
  89. kwvars = {
  90. "request":request,
  91. "ctname":ctname,
  92. "lPage":lpg,
  93. "ctlist":BlogCategoty.objects.all(),
  94. 'FilterHTML':fco.RenderHTML(request),
  95. }
  96. return render_to_response('home/post.list.html',kwvars,RequestContext(request))
  97. @PermNeed('pichublog','Writer')
  98. def PostAdd(request):
  99. bpo = BlogPost.objects.create(
  100. title = time.strftime("[草稿]%Y-%b-%d %H:%M:%S"),
  101. author = GetUser(request),
  102. rendered = False,
  103. hidden = True,
  104. private = False,
  105. passwdlck = False,
  106. freecomment = True,
  107. )
  108. return HttpResponseRedirect(reverse('pichublog_postedit',args=(bpo.id,)))
  109. def PostView(request,ID):
  110. thisuser = GetUser(request)
  111. try:
  112. bpo = BlogPost.objects.get(id=ID)
  113. except BlogPost.DoesNotExist:
  114. kwvars = {
  115. "request":request,
  116. "ctlist":BlogCategoty.objects.all(),
  117. }
  118. return render_to_response('home/post.err.html',kwvars,RequestContext(request))
  119. if not bpo.rendered:
  120. kwvars = {
  121. "request":request,
  122. "ctlist":BlogCategoty.objects.all(),
  123. }
  124. return render_to_response('home/post.err.html',kwvars,RequestContext(request))
  125. if bpo.hidden:
  126. if not bpo.author == thisuser:
  127. if not PermCheck('pichublog','Admin'):
  128. kwvars = {
  129. "request":request,
  130. "ctlist":BlogCategoty.objects.all(),
  131. }
  132. return render_to_response('home/post.err.html',kwvars,RequestContext(request))
  133. if bpo.private:
  134. if bpo.passwdlck:
  135. if request.method == POST:
  136. if not request.POST.get['ppppppppaaaaaassssssssssssswwwwwooorrrrrdddd'] == bpo.password:
  137. messages.error(request,u"<b>密码错误!</b>")
  138. return HttpResponseRedirect(reverse('pichublog_postpwdf',args=(bpo.id,)))
  139. else:
  140. return HttpResponseRedirect(reverse('pichublog_postpwdf',args=(bpo.id,)))
  141. else:
  142. pmh = False
  143. for hgp in thisuser.group:
  144. if hgp in bpo.readgrp:
  145. if not thisuser in bpo.readuex:
  146. pmh = True
  147. break
  148. if not pmh:
  149. if thisuser in bpo.readuin:
  150. pmh = True
  151. if not pmh:
  152. kwvars = {
  153. "request":request,
  154. "ctlist":BlogCategoty.objects.all(),
  155. }
  156. return render_to_response('home/post.err.html',kwvars,RequestContext(request))
  157. kwvars = {
  158. "request":request,
  159. "title":bpo.title,
  160. "content":bpo.html,
  161. "postid":bpo.id,
  162. "bkmode":False,
  163. }
  164. return render_to_response('home/post.view.html',kwvars,RequestContext(request))
  165. @PermNeed('pichublog','Writer')
  166. def PostPreview(request,ID):
  167. try:
  168. bpo = BlogPost.objects.get(id=ID)
  169. except BlogPost.DoesNotExist:
  170. kwvars = {
  171. "request":request,
  172. "ctlist":BlogCategoty.objects.all(),
  173. }
  174. return render_to_response('home/post.err.html',kwvars,RequestContext(request))
  175. if not PermCheck('pichublog','Admin'):
  176. if not thisuser == bpo.author:
  177. kwvars = {
  178. "request":request,
  179. "ctlist":BlogCategoty.objects.all(),
  180. }
  181. return render_to_response('home/post.err.html',kwvars,RequestContext(request))
  182. kwvars = {
  183. "request":request,
  184. "title":bpo.title,
  185. "content":bpo.html,
  186. "postid":bpo.id,
  187. "bkmode":True,
  188. }
  189. return render_to_response('home/post.view.html',kwvars,RequestContext(request))
  190. def PostEdit(request,ID):
  191. try:
  192. bpo = BlogPost.objects.get(id=ID)
  193. except BlogPost.DoesNotExist:
  194. kwvars = {
  195. "request":request,
  196. "ctlist":BlogCategoty.objects.all(),
  197. "randposts":BlogPost.objects.all().order_by('?')[:5],
  198. }
  199. return render_to_response('home/post.err.html',kwvars,RequestContext(request))
  200. if request.method == "POST":
  201. form = EditPostForm(request.POST,instance=bpo)
  202. if form.is_valid():
  203. nbp = form.save(commit=False)
  204. nbp.html = renderMarkdownSafety(nbp.markdown)
  205. nbp.rendered = True
  206. nbp.save()
  207. form.save_m2m()
  208. return HttpResponseRedirect(reverse('pichublog_postwbklist'))
  209. else:
  210. form = EditPostForm(instance=bpo)
  211. kwvars = {
  212. "request":request,
  213. 'form':form,
  214. }
  215. return render_to_response('home/post.edit.html',kwvars,RequestContext(request))
  216. def PostGrant(request,ID):
  217. try:
  218. bpo = BlogPost.objects.get(id=ID)
  219. except BlogPost.DoesNotExist:
  220. kwvars = {
  221. "request":request,
  222. "ctlist":BlogCategoty.objects.all(),
  223. "randposts":BlogPost.objects.all().order_by('?')[:5],
  224. }
  225. return render_to_response('home/post.err.html',kwvars,RequestContext(request))
  226. def PostHidden(request,ID):
  227. try:
  228. bpo = BlogPost.objects.get(id=ID)
  229. except BlogPost.DoesNotExist:
  230. kwvars = {
  231. "request":request,
  232. "ctlist":BlogCategoty.objects.all(),
  233. "randposts":BlogPost.objects.all().order_by('?')[:5],
  234. }
  235. return render_to_response('home/post.err.html',kwvars,RequestContext(request))
  236. def PostDel(request,ID):
  237. try:
  238. bpo = BlogPost.objects.get(id=ID)
  239. except BlogPost.DoesNotExist:
  240. kwvars = {
  241. "request":request,
  242. "ctlist":BlogCategoty.objects.all(),
  243. "randposts":BlogPost.objects.all().order_by('?')[:5],
  244. }
  245. return render_to_response('home/post.err.html',kwvars,RequestContext(request))