Ver código fonte

Signed-off-by: zry <admin@z-touhou.org>

zry 8 anos atrás
pai
commit
fb3c604633

+ 1 - 0
swyzxwb_photovote/settings.py

@@ -92,6 +92,7 @@ STATIC_URL = '/static/'
 STATICFILES_DIRS = (
     os.path.join(BASE_DIR,'static'),
 )
+PHOTO_DIR_URL = 'http://s.photo.9zry.com/'
 
 MEDIA_ROOT = os.path.join(STATICFILES_DIRS[0],'uploads')
 MEDIA_URL = '/static/uploads/'

+ 6 - 0
templates/sidebar.html

@@ -68,6 +68,12 @@
                     <a href="{% url 'pwlist' %}">参赛作品管理</a>
                 </td>
             </tr>
+            <tr>
+                <td>
+                    <span class="glyphicon glyphicon-open btn-xs"></span>
+                    <a href="{% url 'pwaddxls' %}">导入参赛作品</a>
+                </td>
+            </tr>
             <tr>
                 <td>
                     <span class="glyphicon glyphicon-list-alt btn-xs"></span>

+ 44 - 0
templates/vote/pw.addxls.html

@@ -0,0 +1,44 @@
+{% extends "base.html" %}
+
+{% block title %}
+    导入参赛作品
+{% endblock %}
+
+{% block content %}
+
+<div class="section section-breadcrumbs section-breadcrumbs-backend">
+    <div class="container">
+        <div class="row">
+            <div class="col-md-12">
+                <h1>导入参赛作品</h1>
+            </div>
+        </div>
+    </div>
+</div>
+
+<hr/>
+
+
+	<h4 class="col-md-offset-1">请导入符合格式的XLS文件</h4>
+    <h4 class="col-md-offset-1">请使用<code>空表生成工具</code>生成空表,填写完毕后导入。</h4>
+	<hr/>
+    <form class="form-horizontal" role="form" action={% url "addxlsuserurl" %} method="POST" enctype="multipart/form-data">
+    {% csrf_token %}
+
+        {% for item in form %}
+            <div class="form-group">
+                <label class="control-label col-md-2">{{item.label}}</label>
+                <div class="col-md-2">
+                    {{item}}
+                </div>
+                <div class="col-md-offset-2 col-md-10">
+                    {{item.errors}}
+                </div>
+            </div>
+        {% endfor %}
+
+        <div class="col-md-offset-2">
+                <button type="submit" class="btn btn-danger btn-sm">导 入</button>
+        </div>
+    </form>
+{% endblock %}

+ 1 - 1
vote/models.py

@@ -9,7 +9,7 @@ class Contestants(models.Model):
 
 class PhotoWorks(models.Model):
 	author = models.ForeignKey(Contestants,related_name="works")
-	uuid = models.CharField(max_length=36,db_index=True)
+	uuid = models.CharField(max_length=36,db_index=True,unique=True)
 	title = models.CharField(max_length=255,db_index=True)
 	desc = models.TextField()
 	filename = models.CharField(max_length=64,db_index=True)

+ 1 - 0
vote/urls.py

@@ -10,5 +10,6 @@ urlpatterns = patterns('vote.views',
     url(r'^admin/photoworks/delete/id/(?P<ID>\d+)/$', 'DeletePhotoWorks', name='pwdel'),
     url(r'^admin/photoworks/delete/ipid/(?P<ID>\d+)/$', 'RemovePW_ByIpid', name='pwipidrm'),
     url(r'^admin/photoworks/delete/veip/(?P<ID>\d+)/$', 'ExpPW_ByIpid', name='pwipidv'),
+    url(r'^admin/photoworks/xlsadd/$', 'XLSFilePW', name='pwaddxls'),
 
 )

+ 56 - 1
vote/views.py

@@ -12,6 +12,7 @@ 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
 
 @login_required
 @PermissionVerify()
@@ -140,4 +141,58 @@ def DeleteContestant(request,ID):
 	cobj.delete()
 	return HttpResponseRedirect(reverse('contestantslist'))
 
-# Create your views here.
+@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))