123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- #!/usr/bin/env python
- #-*- 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 UserManage.views.permission import PermissionVerify
- from UserManage.xlsusers import processxls
- from UserManage.models import User,RoleList,GroupList
- import hashlib
- from django.contrib.auth.hashers import make_password
- from django.contrib import auth
- from django.contrib.auth import get_user_model
- from UserManage.forms import LoginUserForm,SignInUserForm,ChangePasswordForm,AddUserForm,EditUserForm,XLSFileForm,RemoveUsersForm,ChangeUserForm,AddAdminForm
- from swyzxwb_photovote.common.DataConvert import UniqueID
- def LoginUser(request):
- '''用户登录view'''
- if request.user.is_authenticated():
- return HttpResponseRedirect('/')
- if request.method == 'GET' and request.GET.has_key('next'):
- next = request.GET['next']
- else:
- next = '/'
- if request.method == "POST":
- form = LoginUserForm(request, data=request.POST)
- if form.is_valid():
- auth.login(request, form.get_user())
- return HttpResponseRedirect(request.POST['next'])
- else:
- form = LoginUserForm(request)
- kwvars = {
- 'request':request,
- 'form':form,
- 'next':next,
- }
- return render_to_response('UserManage/login.html',kwvars,RequestContext(request))
- def SignUp(request):
- '''用户注册view'''
- if request.user.is_authenticated():
- return HttpResponseRedirect('/')
- if request.method=='POST':
- form = SignInUserForm(request.POST)
- if form.is_valid():
- user = form.save(commit=False)
- user.set_password(form.cleaned_data['password'])
- user.role=RoleList.objects.get(name=u'学生')
- user.is_active = False
- user.is_superuser = False
- form.save()
- return HttpResponseRedirect(reverse('loginurl'))
- else:
- form = SignInUserForm()
- kwvars = {
- 'form':form,
- 'request':request,
- }
- return render_to_response('UserManage/user.signup.html',kwvars,RequestContext(request))
- @login_required
- def LogoutUser(request):
- auth.logout(request)
- return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
- @login_required
- def ChangePassword(request):
- if request.method=='POST':
- form = ChangePasswordForm(user=request.user,data=request.POST)
- if form.is_valid():
- form.save()
- return HttpResponseRedirect(reverse('logouturl'))
- else:
- form = ChangePasswordForm(user=request.user)
- kwvars = {
- 'form':form,
- 'request':request,
- }
- return render_to_response('UserManage/password.change.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def ListUser(request):
- mList = get_user_model().objects.all()
- #筛选器
- classobjs = GroupList.objects.all()
- allclass=map(lambda x:x.name,classobjs)
- fco = FilterCondition()
- fco.addTextContain("sid","编号","sid")
- fco.addTextContain("name","用户名","username")
- fco.addTextContain("nick","姓名","nickname")
- fco.addTextContain("mail","邮箱","email")
- fco.addMultiChoice("class","班级","classid__name",allclass)
- fco.addDateRange("bthdy","生日","birthday")
- fco.addNumberEqual("importid","导入批号","ipid")
- fco.addSingleChoice("sex","性别","sex",["男","女"])
- fList = CommonFilter(request,fco,mList)
- #分页功能
- lst = SelfPaginator(request,fList, 20)
- kwvars = {
- 'lPage':lst,
- 'request':request,
- 'FilterHTML':fco.RenderHTML(request)
- }
- return render_to_response('UserManage/user.list.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def AddUser(request):
- if request.method=='POST':
- form = AddUserForm(request.POST)
- if form.is_valid():
- user = form.save(commit=False)
- user.set_password(form.cleaned_data['password'])
- user.importid = UniqueID()
- print "Unique HASH",user.importid
- form.save()
- return HttpResponseRedirect(reverse('listuserurl'))
- else:
- form = AddUserForm()
- kwvars = {
- 'form':form,
- 'request':request,
- }
- return render_to_response('UserManage/user.add.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def AddAdmin(request):
- if request.method=='POST':
- form = AddAdminForm(request.POST)
- if form.is_valid():
- user = form.save(commit=False)
- user.set_password(form.cleaned_data['password'])
- user.role=RoleList.objects.get(name=u'管理员')
- user.importid = UniqueID()
- user.is_active = True
- user.is_superuser = True
- form.save()
- return HttpResponseRedirect(reverse('listuserurl'))
- else:
- form = AddAdminForm()
- kwvars = {
- 'form':form,
- 'request':request,
- }
- return render_to_response('UserManage/user.addadmin.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def EditUser(request,ID):
- user = get_user_model().objects.get(id = ID)
- if request.method=='POST':
- if not request.POST['role']==user.role.id:
- if request.POST['username']==request.user.username:
- kwvars = {'request':request,'xerror':"您不能修改自己的角色",}
- return render_to_response('UserManage/user.edit.error.html',kwvars,RequestContext(request))
- elif request.POST['role']=="1":
- if not request.user.is_superuser:
- kwvars = {'request':request,'xerror':"您无权给用户赋予网站管理员权限,这需要超级管理员权限(root账号)",}
- return render_to_response('UserManage/user.edit.error.html',kwvars,RequestContext(request))
- form = EditUserForm(request.POST,instance=user)
- if form.is_valid():
- form.save()
- return HttpResponseRedirect(reverse('listuserurl'))
- else:
- form = EditUserForm(instance=user
- )
- kwvars = {
- 'ID':ID,
- 'form':form,
- 'request':request,
- }
- return render_to_response('UserManage/user.edit.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def DeleteUser(request,ID):
- if ID == '1':
- return HttpResponse(u'超级管理员不允许删除!!!')
- else:
- get_user_model().objects.filter(id = ID).delete()
- return HttpResponseRedirect(reverse('listuserurl'))
- @login_required
- @PermissionVerify()
- def ResetPassword(request,ID):
- user = get_user_model().objects.get(id = ID)
- newpassword = get_user_model().objects.make_random_password(length=10,allowed_chars='abcdefghjklmnpqrstuvwxyABCDEFGHJKLMNPQRSTUVWXY3456789')
- print '====>ResetPassword:%s-->%s' %(user.username,newpassword)
- user.set_password(newpassword)
- user.save()
- kwvars = {
- 'object':user,
- 'newpassword':newpassword,
- 'request':request,
- }
- return render_to_response('UserManage/password.reset.html',kwvars,RequestContext(request))
- @login_required
- def AddXlsError(request):
- kwvars = {
- 'request':request,
- }
- return render_to_response('UserManage/user.addxls.error.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def XLSFileUser(request):
- if request.method=='POST':
- form = XLSFileForm(request.POST,request.FILES)
- if form.is_valid():
- try:
- userdata=processxls(request.FILES['xls'])
- except Exception,e:
- kwvars = {'request':request,'xerror':e,}
- return render_to_response('UserManage/user.addxls.error.html',kwvars,RequestContext(request))
- try:
- studentrole=RoleList.objects.get(name = u'普通学生')
- ipid = UniqueID()
- querysetlist=[]
- for ud in userdata:
- if ud[0]!=0:
- try:
- t_user=User(username=str(ud[0]),
- sid=ud[0],
- classid=GroupList.objects.get(classid = ud[4]),
- is_active=True,
- nickname=ud[1],
- sex=ud[2],
- birthday=ud[5],
- password=make_password(ud[3], None, "unsalted_md5"),
- role=studentrole,
- importid = ipid)
- #t_user.set_password(ud[3])
- querysetlist.append(t_user)
- except GroupList.DoesNotExist:
- kwvars = {'request':request,'xerror':u"无效的分组ID:%d (在学号为%d的行)"%(ud[4],ud[0])}
- return render_to_response('UserManage/user.addxls.error.html',kwvars,RequestContext(request))
- except Exception,e:
- kwvars = {'request':request,'xerror':e,}
- return render_to_response('UserManage/user.addxls.error.html',kwvars,RequestContext(request))
- User.objects.bulk_create(querysetlist)
- except Exception,e:
- kwvars = {'request':request,'xerror':e,}
- return render_to_response('UserManage/user.addxls.error.html',kwvars,RequestContext(request))
- return HttpResponseRedirect(reverse('listuserurl'))
-
- else:
- form = XLSFileForm()
- kwvars = {
- 'form':form,
- 'request':request,
- }
- return render_to_response('UserManage/user.addxls.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def RemoveUsers(request):
- #get_user_model().objects.filter(id = ID).delete()
- if request.method=='POST':
- form = RemoveUsersForm(request.POST)
- if form.is_valid():
- try:
- #classid = GroupList.objects.get(classid = form.cleaned_data["classid"])
- for cid in form.cleaned_data["classid"]:
- users = get_user_model().objects.filter(classid = cid)
-
- for i in users:
- if i.id == 1:
- raise Exception,u'超级管理员不允许删除!!!'
- users.delete()
- return HttpResponseRedirect(reverse('listuserurl'))
- except Exception,e:
- kwvars = {'request':request,'xerror':e,}
- return render_to_response('UserManage/user.remove.error.html',kwvars,RequestContext(request))
- else:
- form = RemoveUsersForm()
- kwvars = {
- 'form':form,
- 'request':request,
- }
- return render_to_response('UserManage/user.removeusers.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def RemoveUsers_ByIpid(request,ID):
- try:
- uobj = User.objects.filter(importid=ID).delete()
- return HttpResponseRedirect(reverse("listuserurl"))
- except Exception,e:
- kwvars = {'request':request,'xerror':e,}
- return render_to_response('UserManage/user.remove.error.html',kwvars,RequestContext(request))
- @login_required
- @PermissionVerify()
- def ExpUsers_ByIpid(request,ID):
- try:
- uobj = User.objects.filter(importid=ID)[:10]
- lst=map(lambda x:unicode(x.sid)+u" "+unicode(x.nickname),uobj)
- ret=u"<br />".join(lst)
- return HttpResponse(ret)
- except Exception,e:
- return HttpResponse(u"错误:"+unicode(e))
- @login_required
- def ChangInfo(request):
- user = request.user
- if request.method=='POST':
- form = ChangeUserForm(request.POST,instance=user)
- if form.is_valid():
- form.save()
- return HttpResponseRedirect('/')
- else:
- form = ChangeUserForm(instance=user
- )
- kwvars = {
- 'ID':user.id,
- 'form':form,
- 'request':request,
- }
- return render_to_response('UserManage/user.change.html',kwvars,RequestContext(request))
|