123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- # -*- 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 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
- @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__sid")
- fco.addTextContain("nick","参赛者姓名","user__nickname")
- fco.addTextContain("nick","作品ID","works_set__uuid")
- 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 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 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)
- kwvars = {'request':request,'pwobj':pwobj}
- 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))
- @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":"导入作品失败","detail":"从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:
- auobj = User.objects.get(username=ud[1])
- cobj = Contestants.objects.creat(user=auobj)
- cobj.save()
- 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 User.DoesNotExist:
- kwvars = {"msg":"导入作品失败","detail":"不存在的参赛用户名:%s (在作品ID为%s的行)"%(ud[1],ud[0]),"error":unicode(e)}
- return render_to_response('error.html',kwvars,RequestContext(request))
- except Exception,e:
- kwvars = {"msg":"导入作品失败","detail":"从xls文件导入参赛作品失败","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)}
- 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))
|