views.py 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. # -*- coding: UTF-8 -*-
  2. from django.core.urlresolvers import reverse
  3. from django.http import HttpResponse,HttpResponseRedirect
  4. from django.shortcuts import render_to_response,RequestContext
  5. from django.contrib.auth.decorators import login_required
  6. from swyzxwb_photovote.common.CommonPaginator import SelfPaginator
  7. from swyzxwb_photovote.common.CommonFilter import CommonFilter,FilterCondition
  8. from swyzxwb_photovote.common.DataConvert import CheckPOST,str2int
  9. from UserManage.views.permission import PermissionVerify
  10. from django.contrib import auth
  11. from django.contrib.auth import get_user_model
  12. from vote.models import *
  13. from UserManage.models import *
  14. from vote.genemptyxls import GenEmptyXLSFunc
  15. from swyzxwb_photovote.common.DataConvert import UniqueID
  16. from UserManage.forms import XLSFileForm
  17. from vote.xlsadd import processPWXLS
  18. @login_required
  19. @PermissionVerify()
  20. def sysRestart(request):
  21. kwvars = {'request':request}
  22. return render_to_response('vote/restart.html',kwvars,RequestContext(request))
  23. @login_required
  24. @PermissionVerify()
  25. def ListContestants(request):
  26. mList = Contestants.objects.all()
  27. #筛选器
  28. classobjs = GroupList.objects.all()
  29. allclass=map(lambda x:x.name,classobjs)
  30. fco = FilterCondition()
  31. fco.addTextContain("sid","参赛者用户名","user__sid")
  32. fco.addTextContain("nick","参赛者姓名","user__nickname")
  33. fco.addTextContain("nick","作品ID","works_set__uuid")
  34. fco.addMultiChoice("class","组别","classid__name",allclass)
  35. fList = CommonFilter(request,fco,mList)
  36. #分页功能
  37. lst = SelfPaginator(request,fList, 20)
  38. kwvars = {
  39. 'lPage':lst,
  40. 'request':request,
  41. 'FilterHTML':fco.RenderHTML(request)
  42. }
  43. return render_to_response('vote/contestant.list.html',kwvars,RequestContext(request))
  44. @login_required
  45. @PermissionVerify()
  46. def ListPhotoWorks(request):
  47. mList = PhotoWorks.objects.all()
  48. #筛选器
  49. classobjs = GroupList.objects.all()
  50. allclass=map(lambda x:x.name,classobjs)
  51. fco = FilterCondition()
  52. fco.addTextContain("uuid","作品ID","uuid")
  53. fco.addTextContain("author","作者用户名","author__user__username")
  54. fco.addTextContain("anick","作者姓名","author__user__nickname")
  55. fco.addTextContain("title","作品标题","title")
  56. fco.addTextContain("file","文件名","filename")
  57. fco.addMultiChoice("ext","扩展名","fileext",['jpg','png','gif'])
  58. fco.addMultiChoice("cls","作者组别","author__user__classid__name",allclass)
  59. fco.addNumberGreatThan("score","分数大于等于","score",True)
  60. fco.addNumberLessThan("score","分数小于等于","score",True)
  61. fco.addNumberEqual("importid","导入批号","ipid")
  62. fList = CommonFilter(request,fco,mList)
  63. #分页功能
  64. lst = SelfPaginator(request,fList, 20)
  65. kwvars = {
  66. 'lPage':lst,
  67. 'request':request,
  68. 'FilterHTML':fco.RenderHTML(request)
  69. }
  70. return render_to_response('vote/pw.list.html',kwvars,RequestContext(request))
  71. @login_required
  72. @PermissionVerify()
  73. def DeletePhotoWorks(request,ID):
  74. PhotoWorks.objects.filter(id = ID).delete()
  75. return HttpResponseRedirect(reverse('pwlist'))
  76. @login_required
  77. @PermissionVerify()
  78. def RemovePW_ByIpid(request,ID):
  79. try:
  80. PhotoWorks.objects.filter(importid=ID).delete()
  81. return HttpResponseRedirect(reverse("pwlist"))
  82. except Exception,e:
  83. kwvars = {"msg":"按批号删除作品失败","detail":"按批号删除作品失败","error":str(e)}
  84. return render_to_response('error.html',kwvars,RequestContext(request))
  85. @login_required
  86. @PermissionVerify()
  87. def ExpPW_ByIpid(request,ID):
  88. try:
  89. pwobj = PhotoWorks.objects.filter(importid=ID)[:10]
  90. lst=map(lambda x:unicode(x.author.user.username)+u"   "+unicode(x.title),pwobj)
  91. ret=u"<br />".join(lst)
  92. return HttpResponse(ret)
  93. except Exception,e:
  94. return HttpResponse(u"错误:"+unicode(e))
  95. def ViewPhotoWorks(request,uuid):
  96. try:
  97. pwobj = PhotoWorks.objects.get(uuid=uuid)
  98. kwvars = {'request':request,'pwobj':pwobj}
  99. return render_to_response('vote/pw.view.html',kwvars,RequestContext(request))
  100. except PhotoWorks.DoesNotExist:
  101. kwvars = {"msg":"404 作品不存在","detail":"您所查看的摄影作品不存在","error":"PhotoWorks '%s' Not Found."%uuid}
  102. return render_to_response('error.html',kwvars,RequestContext(request))
  103. @login_required
  104. @PermissionVerify()
  105. def GenEmptyXLS(request):
  106. if request.method=='POST':
  107. chkpr=CheckPOST(['nor',],request.POST.keys())
  108. if not chkpr == "" :
  109. kwvars = {"msg":"创建空表失败","detail":"POST参数错误","error":"Invalid POST Data. Field '"+chkpr+"' Not Found."}
  110. return render_to_response('error.html',kwvars,RequestContext(request))
  111. else:
  112. try:
  113. xlsname=GenEmptyXLSFunc(str2int(request.POST['nor']))
  114. kwvars = {'request':request,'xlsname':xlsname}
  115. return render_to_response('vote/pw.xlsgendown.html',kwvars,RequestContext(request))
  116. except Exception,e:
  117. kwvars = {"msg":"创建空表失败","detail":"生成进程抛出异常","error":e}
  118. return render_to_response('error.html',kwvars,RequestContext(request))
  119. else:
  120. kwvars = {'request':request}
  121. return render_to_response('vote/pw.xlsgen.html',kwvars,RequestContext(request))
  122. def DeleteContestant(request,ID):
  123. cobj = Contestants.objects.get(id=ID)
  124. cobj.works_set.all().delete()
  125. cobj.delete()
  126. return HttpResponseRedirect(reverse('contestantslist'))
  127. @login_required
  128. @PermissionVerify()
  129. def XLSFilePW(request):
  130. if request.method=='POST':
  131. form = XLSFileForm(request.POST,request.FILES)
  132. if form.is_valid():
  133. try:
  134. userdata=processPWXLS(request.FILES['xls'])
  135. except Exception,e:
  136. kwvars = {"msg":"导入作品失败","detail":"从xls文件导入参赛作品失败","error":unicode(e)}
  137. return render_to_response('error.html',kwvars,RequestContext(request))
  138. try:
  139. ipid = UniqueID()
  140. querysetlist=[]
  141. for ud in userdata:
  142. try:
  143. cobj = Contestants.objects.get(user__username=ud[1])
  144. except Contestants.DoesNotExist:
  145. auobj = User.objects.get(username=ud[1])
  146. cobj = Contestants.objects.creat(user=auobj)
  147. cobj.save()
  148. if ud[0]!="":
  149. try:
  150. t_data=PhotoWorks(uuid=ud[0],
  151. author=cobj,
  152. title=ud[2],
  153. desc=ud[3],
  154. filename=ud[4],
  155. fileext=ud[5],
  156. importid=ipid,
  157. score=0)
  158. #t_user.set_password(ud[3])
  159. querysetlist.append(t_data)
  160. except User.DoesNotExist:
  161. kwvars = {"msg":"导入作品失败","detail":"不存在的参赛用户名:%s (在作品ID为%s的行)"%(ud[1],ud[0]),"error":unicode(e)}
  162. return render_to_response('error.html',kwvars,RequestContext(request))
  163. except Exception,e:
  164. kwvars = {"msg":"导入作品失败","detail":"从xls文件导入参赛作品失败","error":unicode(e)}
  165. return render_to_response('error.html',kwvars,RequestContext(request))
  166. PhotoWorks.objects.bulk_create(querysetlist)
  167. except Exception,e:
  168. kwvars = {"msg":"导入作品失败","detail":"从xls文件导入参赛作品失败","error":unicode(e)}
  169. return render_to_response('error.html',kwvars,RequestContext(request))
  170. return HttpResponseRedirect(reverse('pwlist'))
  171. else:
  172. form = XLSFileForm()
  173. kwvars = {
  174. 'form':form,
  175. 'request':request,
  176. }
  177. return render_to_response('vote/pw.addxls.html',kwvars,RequestContext(request))