user.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  1. #!/usr/bin/env python
  2. #-*- coding: utf-8 -*-
  3. from django.core.urlresolvers import reverse
  4. from django.http import HttpResponse,HttpResponseRedirect
  5. from django.shortcuts import render_to_response,RequestContext
  6. from django.contrib.auth.decorators import login_required
  7. from swyzxwb_photovote.common.CommonPaginator import SelfPaginator
  8. from swyzxwb_photovote.common.CommonFilter import CommonFilter,FilterCondition
  9. from UserManage.views.permission import PermissionVerify
  10. from UserManage.xlsusers import processxls
  11. from UserManage.models import User,RoleList,GroupList
  12. import hashlib
  13. from django.contrib.auth.hashers import make_password
  14. from django.contrib import auth
  15. from django.contrib.auth import get_user_model
  16. from UserManage.forms import LoginUserForm,SignInUserForm,ChangePasswordForm,AddUserForm,EditUserForm,XLSFileForm,RemoveUsersForm,ChangeUserForm,AddAdminForm
  17. def LoginUser(request):
  18. '''用户登录view'''
  19. if request.user.is_authenticated():
  20. return HttpResponseRedirect('/')
  21. if request.method == 'GET' and request.GET.has_key('next'):
  22. next = request.GET['next']
  23. else:
  24. next = '/'
  25. if request.method == "POST":
  26. form = LoginUserForm(request, data=request.POST)
  27. if form.is_valid():
  28. auth.login(request, form.get_user())
  29. return HttpResponseRedirect(request.POST['next'])
  30. else:
  31. form = LoginUserForm(request)
  32. kwvars = {
  33. 'request':request,
  34. 'form':form,
  35. 'next':next,
  36. }
  37. return render_to_response('UserManage/login.html',kwvars,RequestContext(request))
  38. def SignUp(request):
  39. '''用户注册view'''
  40. if request.user.is_authenticated():
  41. return HttpResponseRedirect('/')
  42. if request.method=='POST':
  43. form = SignInUserForm(request.POST)
  44. if form.is_valid():
  45. user = form.save(commit=False)
  46. user.set_password(form.cleaned_data['password'])
  47. user.role=RoleList.objects.get(name=u'学生')
  48. user.is_active = False
  49. user.is_superuser = False
  50. form.save()
  51. return HttpResponseRedirect(reverse('loginurl'))
  52. else:
  53. form = SignInUserForm()
  54. kwvars = {
  55. 'form':form,
  56. 'request':request,
  57. }
  58. return render_to_response('UserManage/user.signup.html',kwvars,RequestContext(request))
  59. @login_required
  60. def LogoutUser(request):
  61. auth.logout(request)
  62. return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
  63. @login_required
  64. def ChangePassword(request):
  65. if request.method=='POST':
  66. form = ChangePasswordForm(user=request.user,data=request.POST)
  67. if form.is_valid():
  68. form.save()
  69. return HttpResponseRedirect(reverse('logouturl'))
  70. else:
  71. form = ChangePasswordForm(user=request.user)
  72. kwvars = {
  73. 'form':form,
  74. 'request':request,
  75. }
  76. return render_to_response('UserManage/password.change.html',kwvars,RequestContext(request))
  77. @login_required
  78. @PermissionVerify()
  79. def ListUser(request):
  80. mList = get_user_model().objects.all()
  81. #筛选器
  82. classobjs = GroupList.objects.all()
  83. allclass=map(lambda x:x.name,classobjs)
  84. fco = FilterCondition()
  85. fco.addTextContain("sid","编号","sid")
  86. fco.addTextContain("name","用户名","username")
  87. fco.addTextContain("nick","姓名","nickname")
  88. fco.addTextContain("mail","邮箱","email")
  89. fco.addMultiChoice("class","班级","classid__name",allclass)
  90. fco.addDateRange("bthdy","生日","birthday")
  91. fco.addSingleChoice("sex","性别","sex",["男","女"])
  92. fList = CommonFilter(request,fco,mList)
  93. #分页功能
  94. lst = SelfPaginator(request,fList, 20)
  95. kwvars = {
  96. 'lPage':lst,
  97. 'request':request,
  98. 'FilterHTML':fco.RenderHTML(request)
  99. }
  100. return render_to_response('UserManage/user.list.html',kwvars,RequestContext(request))
  101. @login_required
  102. @PermissionVerify()
  103. def ListNewUser(request):
  104. mList = get_user_model().objects.filter(is_active=False)
  105. #筛选器
  106. classobjs = GroupList.objects.all()
  107. allclass=map(lambda x:x.name,classobjs)
  108. fco = FilterCondition()
  109. fco.addTextContain("sid","编号","sid")
  110. fco.addTextContain("name","用户名","username")
  111. fco.addTextContain("nick","姓名","nickname")
  112. fco.addTextContain("mail","邮箱","email")
  113. fco.addMultiChoice("class","班级","classid__name",allclass)
  114. fco.addDateRange("bthdy","生日","birthday")
  115. fco.addSingleChoice("sex","性别","sex",["男","女"])
  116. fList = CommonFilter(request,fco,mList)
  117. #分页功能
  118. lst = SelfPaginator(request,fList, 20)
  119. kwvars = {
  120. 'lPage':lst,
  121. 'request':request,
  122. 'FilterHTML':fco.RenderHTML(request)
  123. }
  124. return render_to_response('UserManage/user.listnew.html',kwvars,RequestContext(request))
  125. @login_required
  126. @PermissionVerify()
  127. def AddUser(request):
  128. if request.method=='POST':
  129. form = AddUserForm(request.POST)
  130. if form.is_valid():
  131. user = form.save(commit=False)
  132. user.set_password(form.cleaned_data['password'])
  133. form.save()
  134. return HttpResponseRedirect(reverse('listuserurl'))
  135. else:
  136. form = AddUserForm()
  137. kwvars = {
  138. 'form':form,
  139. 'request':request,
  140. }
  141. return render_to_response('UserManage/user.add.html',kwvars,RequestContext(request))
  142. @login_required
  143. @PermissionVerify()
  144. def AddAdmin(request):
  145. if request.method=='POST':
  146. form = AddAdminForm(request.POST)
  147. if form.is_valid():
  148. user = form.save(commit=False)
  149. user.set_password(form.cleaned_data['password'])
  150. user.role=RoleList.objects.get(name=u'管理员')
  151. user.is_active = True
  152. user.is_superuser = True
  153. form.save()
  154. return HttpResponseRedirect(reverse('listuserurl'))
  155. else:
  156. form = AddAdminForm()
  157. kwvars = {
  158. 'form':form,
  159. 'request':request,
  160. }
  161. return render_to_response('UserManage/user.addadmin.html',kwvars,RequestContext(request))
  162. @login_required
  163. @PermissionVerify()
  164. def EditUser(request,ID):
  165. user = get_user_model().objects.get(id = ID)
  166. if request.method=='POST':
  167. form = EditUserForm(request.POST,instance=user)
  168. if form.is_valid():
  169. form.save()
  170. return HttpResponseRedirect(reverse('listuserurl'))
  171. else:
  172. form = EditUserForm(instance=user
  173. )
  174. kwvars = {
  175. 'ID':ID,
  176. 'form':form,
  177. 'request':request,
  178. }
  179. return render_to_response('UserManage/user.edit.html',kwvars,RequestContext(request))
  180. @login_required
  181. @PermissionVerify()
  182. def DeleteUser(request,ID):
  183. if ID == '1':
  184. return HttpResponse(u'超级管理员不允许删除!!!')
  185. else:
  186. get_user_model().objects.filter(id = ID).delete()
  187. return HttpResponseRedirect(reverse('listuserurl'))
  188. @login_required
  189. @PermissionVerify()
  190. def ResetPassword(request,ID):
  191. user = get_user_model().objects.get(id = ID)
  192. newpassword = get_user_model().objects.make_random_password(length=10,allowed_chars='abcdefghjklmnpqrstuvwxyABCDEFGHJKLMNPQRSTUVWXY3456789')
  193. print '====>ResetPassword:%s-->%s' %(user.username,newpassword)
  194. user.set_password(newpassword)
  195. user.save()
  196. kwvars = {
  197. 'object':user,
  198. 'newpassword':newpassword,
  199. 'request':request,
  200. }
  201. return render_to_response('UserManage/password.reset.html',kwvars,RequestContext(request))
  202. @login_required
  203. def AddXlsError(request):
  204. kwvars = {
  205. 'request':request,
  206. }
  207. return render_to_response('UserManage/user.addxls.error.html',kwvars,RequestContext(request))
  208. @login_required
  209. @PermissionVerify()
  210. def XLSFileUser(request):
  211. if request.method=='POST':
  212. form = XLSFileForm(request.POST,request.FILES)
  213. if form.is_valid():
  214. try:
  215. userdata=processxls(request.FILES['xls'])
  216. except Exception,e:
  217. kwvars = {'request':request,'xerror':e,}
  218. return render_to_response('UserManage/user.addxls.error.html',kwvars,RequestContext(request))
  219. try:
  220. studentrole=RoleList.objects.get(name = u'学生')
  221. querysetlist=[]
  222. for ud in userdata:
  223. if ud[0]!=0:
  224. t_user=User(username=str(ud[0]),
  225. sid=ud[0],
  226. classid=GroupList.objects.get(classid = ud[4]),
  227. is_active=True,
  228. nickname=ud[1],
  229. sex=ud[2],
  230. birthday=ud[5],
  231. password=make_password(ud[3], None, "unsalted_md5"),
  232. role=studentrole)
  233. #t_user.set_password(ud[3])
  234. querysetlist.append(t_user)
  235. User.objects.bulk_create(querysetlist)
  236. return HttpResponseRedirect(reverse('listuserurl'))
  237. except Exception,e:
  238. kwvars = {'request':request,'xerror':e,}
  239. return render_to_response('UserManage/user.addxls.error.html',kwvars,RequestContext(request))
  240. else:
  241. form = XLSFileForm()
  242. kwvars = {
  243. 'form':form,
  244. 'request':request,
  245. }
  246. return render_to_response('UserManage/user.addxls.html',kwvars,RequestContext(request))
  247. @login_required
  248. @PermissionVerify()
  249. def RemoveUsers(request):
  250. #get_user_model().objects.filter(id = ID).delete()
  251. if request.method=='POST':
  252. form = RemoveUsersForm(request.POST)
  253. if form.is_valid():
  254. try:
  255. #classid = GroupList.objects.get(classid = form.cleaned_data["classid"])
  256. for cid in form.cleaned_data["classid"]:
  257. users = get_user_model().objects.filter(classid = cid)
  258. for i in users:
  259. if i.id == 1:
  260. raise Exception,u'超级管理员不允许删除!!!'
  261. users.delete()
  262. return HttpResponseRedirect(reverse('listuserurl'))
  263. except Exception,e:
  264. kwvars = {'request':request,'xerror':e,}
  265. return render_to_response('UserManage/user.remove.error.html',kwvars,RequestContext(request))
  266. else:
  267. form = RemoveUsersForm()
  268. kwvars = {
  269. 'form':form,
  270. 'request':request,
  271. }
  272. return render_to_response('UserManage/user.removeusers.html',kwvars,RequestContext(request))
  273. @login_required
  274. def ChangInfo(request):
  275. user = request.user
  276. if request.method=='POST':
  277. form = ChangeUserForm(request.POST,instance=user)
  278. if form.is_valid():
  279. form.save()
  280. return HttpResponseRedirect('/')
  281. else:
  282. form = ChangeUserForm(instance=user
  283. )
  284. kwvars = {
  285. 'ID':user.id,
  286. 'form':form,
  287. 'request':request,
  288. }
  289. return render_to_response('UserManage/user.change.html',kwvars,RequestContext(request))