123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 |
- # -*- coding: UTF-8 -*-
- from django.core.urlresolvers import reverse
- from django.http import HttpResponse,HttpResponseRedirect
- from django.shortcuts import render_to_response,RequestContext
- from django.contrib.auth.decorators import login_required
- from swyzxwb_photovote.common.CommonPaginator import SelfPaginator
- from swyzxwb_photovote.common.CommonFilter import CommonFilter,FilterCondition
- from swyzxwb_photovote.common.DataConvert import CheckPOST,str2int
- from UserManage.views.permission import PermissionVerify
- from django.contrib import auth
- from django.contrib.auth import get_user_model
- from django.conf import settings
- from vote.models import *
- from UserManage.models import *
- from vote.genemptyxls import GenEmptyXLSFunc
- from swyzxwb_photovote.common.DataConvert import UniqueID
- from UserManage.forms import XLSFileForm
- from vote.xlsadd import processPWXLS
- import uuid
- #import traceback
- @login_required
- @PermissionVerify()
- def sysRestart(request):
- kwvars = {'request':request}
- return render_to_response('vote/restart.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def ListContestants(request):
- mList = Contestants.objects.all()
- #筛选器
- classobjs = GroupList.objects.all()
- allclass=map(lambda x:x.name,classobjs)
- fco = FilterCondition()
- fco.addTextContain("sid","参赛者用户名","user__username")
- fco.addTextContain("nick","参赛者姓名","user__nickname")
- fco.addTextContain("nick","作品ID","works_set__uuid")
- fco.addTextContain("title","作品标题","works_set__title")
- fco.addMultiChoice("class","组别","classid__name",allclass)
-
- fList = CommonFilter(request,fco,mList)
- #分页功能
- lst = SelfPaginator(request,fList, 20)
- kwvars = {
- 'lPage':lst,
- 'request':request,
- 'FilterHTML':fco.RenderHTML(request)
- }
- return render_to_response('vote/contestant.list.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def ListVoteRecords(request):
- mList = VoteRecords.objects.all()
- #筛选器
- fco = FilterCondition()
- fco.addTextContain("cun","参赛者用户名","target__author__user__sid")
- fco.addTextContain("cnk","参赛者姓名","target__author__user__nickname")
- fco.addTextContain("vun","投票者用户名","voter__username")
- fco.addTextContain("vnk","投票者姓名","voter__nickname")
- fco.addTextContain("pwid","作品ID","target__uuid")
- fco.addTextContain("pwtt","作品标题","target__title")
-
- fList = CommonFilter(request,fco,mList)
- #分页功能
- lst = SelfPaginator(request,fList, 20)
- kwvars = {
- 'lPage':lst,
- 'request':request,
- 'FilterHTML':fco.RenderHTML(request)
- }
- return render_to_response('vote/vr.list.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def ListPhotoWorks(request):
- mList = PhotoWorks.objects.all()
- #筛选器
- classobjs = GroupList.objects.all()
- allclass=map(lambda x:x.name,classobjs)
- fco = FilterCondition()
- fco.addTextContain("uuid","作品ID","uuid")
- fco.addTextContain("author","作者用户名","author__user__username")
- fco.addTextContain("anick","作者姓名","author__user__nickname")
- fco.addTextContain("title","作品标题","title")
- fco.addTextContain("file","文件名","filename")
- fco.addMultiChoice("ext","扩展名","fileext",['jpg','png','gif'])
- fco.addMultiChoice("cls","作者组别","author__user__classid__name",allclass)
- fco.addNumberGreatThan("score","分数大于等于","score",True)
- fco.addNumberLessThan("score","分数小于等于","score",True)
- fco.addNumberEqual("importid","导入批号","ipid")
- fList = CommonFilter(request,fco,mList)
- #分页功能
- lst = SelfPaginator(request,fList, 20)
- kwvars = {
- 'lPage':lst,
- 'request':request,
- 'FilterHTML':fco.RenderHTML(request)
- }
- return render_to_response('vote/pw.list.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def ListTopPhotoWorks(request):
- mList = PhotoWorks.objects.all().order_by('-score')
- #分页功能
- lst = SelfPaginator(request,mList, 20)
- kwvars = {
- 'lPage':lst,
- 'request':request
- }
- return render_to_response('vote/pw.toplist.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def ListPersonalPW(request):
- mList = PhotoWorks.objects.filter(author__user=request.user)
- #分页功能
- lst = SelfPaginator(request,mList, 20)
- kwvars = {
- 'lPage':lst,
- 'request':request
- }
- return render_to_response('vote/pw.plist.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def DeletePhotoWorks(request,ID):
- PhotoWorks.objects.filter(id = ID).delete()
- return HttpResponseRedirect(reverse('pwlist'))
- @login_required
- @PermissionVerify()
- def RemovePW_ByIpid(request,ID):
- try:
- PhotoWorks.objects.filter(importid=ID).delete()
- return HttpResponseRedirect(reverse("pwlist"))
- except Exception,e:
- kwvars = {"msg":"按批号删除作品失败","detail":"按批号删除作品失败","error":str(e)}
- return render_to_response('error.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def ExpPW_ByIpid(request,ID):
- try:
- pwobj = PhotoWorks.objects.filter(importid=ID)[:10]
- lst=map(lambda x:unicode(x.author.user.username)+u" "+unicode(x.title),pwobj)
- ret=u"<br />".join(lst)
- return HttpResponse(ret)
- except Exception,e:
- return HttpResponse(u"错误:"+unicode(e))
- def ViewPhotoWorks(request,uuid):
- try:
- pwobj = PhotoWorks.objects.get(uuid=uuid)
- try:
- npwobj = PhotoWorks.objects.get(id=pwobj.id+1)
- hasnext = True
- nextuuid = npwobj.uuid
- except PhotoWorks.DoesNotExist:
- hasnext = False
- nextuuid = ""
- if request.user.is_authenticated():
- try:
- vrobj = VoteRecords.objects.get(voter=request.user)
- hadvoted = True
- votedpw = vrobj.target.title
- except VoteRecords.DoesNotExist:
- hadvoted = False
- votedpw = ""
- else:
- hadvoted = False
- votedpw = ""
- kwvars = {'request':request,'pwobj':pwobj,'pwurl':settings.PHOTO_DIR_URL,'hasnext':hasnext,'nextuuid':nextuuid,'hadvoted':hadvoted,'votedpw':votedpw}
- return render_to_response('vote/pw.view.html',kwvars,RequestContext(request))
- except PhotoWorks.DoesNotExist:
- kwvars = {"msg":"404 作品不存在","detail":"您所查看的摄影作品不存在","error":"PhotoWorks '%s' Not Found."%uuid}
- return render_to_response('error.html',kwvars,RequestContext(request))
- def FrontListPhotoWorks(request):
- pwlist = PhotoWorks.objects.all()
- lst = SelfPaginator(request,pwlist, 16)
- kwvars = {'request':request,'lPage':lst,'pwurl':settings.PHOTO_DIR_URL,'thumbargs':settings.THUMB_ARGS}
- return render_to_response('vote/pw.flist.html',kwvars,RequestContext(request))
- def VotePhotoWorks(request,uuid):
- try:
- pwobj = PhotoWorks.objects.get(uuid=uuid)
- if request.method=='POST':
- chkpr=CheckPOST(['comment',],request.POST.keys())
- if not chkpr == "" :
- kwvars = {"msg":"投票失败","detail":"POST参数错误","error":"Invalid POST Data. Field '"+chkpr+"' Not Found."}
- return render_to_response('error.html',kwvars,RequestContext(request))
- cmt = request.POST['comment']
- try:
- vrobj = VoteRecords.objects.get(voter=request.user)
- oldpw = vrobj.target
- vrobj.target = pwobj
- vrobj.comment = cmt
- vrobj.save()
- oldpw.score = VoteRecords.objects.filter(target=oldpw).count()
- oldpw.save()
- except VoteRecords.DoesNotExist:
- vrobj = VoteRecords.objects.create(voter=request.user,target=pwobj,comment=cmt)
- pwobj.score = VoteRecords.objects.filter(target=pwobj).count()
- pwobj.save()
- return HttpResponseRedirect(reverse('pwflist'))
- else:
- kwvars = {'request':request,'pwobj':pwobj,'pwurl':settings.PHOTO_DIR_URL}
- return render_to_response('vote/pw.vote.html',kwvars,RequestContext(request))
- except PhotoWorks.DoesNotExist:
- kwvars = {"msg":"404 作品不存在","detail":"您所投票的摄影作品不存在","error":"PhotoWorks '%s' Not Found."%uuid}
- return render_to_response('error.html',kwvars,RequestContext(request))
- @login_required
- def PersonalVoteRec(request):
- try:
- vrobj = VoteRecords.objects.get(voter=request.user)
- hadvoted = True
- except VoteRecords.DoesNotExist:
- hadvoted = False
- vrobj = None
- kwvars = {'request':request,'hadvoted':hadvoted,'vrobj':vrobj,'pwurl':settings.PHOTO_DIR_URL}
- return render_to_response('vote/vr.flist.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def GenEmptyXLS(request):
- if request.method=='POST':
- chkpr=CheckPOST(['nor',],request.POST.keys())
- if not chkpr == "" :
- kwvars = {"msg":"创建空表失败","detail":"POST参数错误","error":"Invalid POST Data. Field '"+chkpr+"' Not Found."}
- return render_to_response('error.html',kwvars,RequestContext(request))
- else:
- try:
- xlsname=GenEmptyXLSFunc(str2int(request.POST['nor']))
- kwvars = {'request':request,'xlsname':xlsname}
- return render_to_response('vote/pw.xlsgendown.html',kwvars,RequestContext(request))
- except Exception,e:
- kwvars = {"msg":"创建空表失败","detail":"生成进程抛出异常","error":e}
- return render_to_response('error.html',kwvars,RequestContext(request))
-
- else:
- kwvars = {'request':request}
- return render_to_response('vote/pw.xlsgen.html',kwvars,RequestContext(request))
- def DeleteContestant(request,ID):
- cobj = Contestants.objects.get(id=ID)
- cobj.works_set.all().delete()
- cobj.delete()
- return HttpResponseRedirect(reverse('contestantslist'))
- @login_required
- @PermissionVerify()
- def XLSFilePW(request):
- if request.method=='POST':
- form = XLSFileForm(request.POST,request.FILES)
- if form.is_valid():
- try:
- userdata=processPWXLS(request.FILES['xls'])
- except Exception,e:
- kwvars = {"msg":u"导入作品失败","detail":u"解析xls文件失败","error":unicode(e)}
- return render_to_response('error.html',kwvars,RequestContext(request))
- try:
- ipid = UniqueID()
- querysetlist=[]
- for ud in userdata:
- try:
- cobj = Contestants.objects.get(user__username=ud[1])
- except Contestants.DoesNotExist:
- try:
- auobj = User.objects.get(username=ud[1])
- cobj = Contestants.objects.create(user=auobj)
- cobj.save()
- except User.DoesNotExist:
- kwvars = {"msg":u"导入作品失败","detail":u"参赛者用户名错误","error":u"不存在的参赛者用户名: %s (在作品ID为%s的行)"%(ud[1],ud[0])}
- return render_to_response('error.html',kwvars,RequestContext(request))
- if ud[0]!="":
- try:
- t_data=PhotoWorks(uuid=ud[0],
- author=cobj,
- title=ud[2],
- desc=ud[3],
- filename=ud[4],
- fileext=ud[5],
- importid=ipid,
- score=0)
-
- #t_user.set_password(ud[3])
- querysetlist.append(t_data)
- except Exception,e:
- kwvars = {"msg":u"导入作品失败","detail":u"导入参赛作品到数据库失败","error":unicode(e)}
- return render_to_response('error.html',kwvars,RequestContext(request))
- PhotoWorks.objects.bulk_create(querysetlist)
- except Exception,e:
- kwvars = {"msg":"导入作品失败","detail":"从xls文件导入参赛作品失败","error":unicode(e)}
- #kwvars = {"msg":u"导入作品失败","detail":unicode(e),"error":traceback.format_exc()}
- return render_to_response('error.html',kwvars,RequestContext(request))
- return HttpResponseRedirect(reverse('pwlist'))
-
- else:
- form = XLSFileForm()
- kwvars = {
- 'form':form,
- 'request':request,
- }
- return render_to_response('vote/pw.addxls.html',kwvars,RequestContext(request))
|