/account/views.py

https://github.com/yueyongyue/saltshaker · Python · 423 lines · 379 code · 36 blank · 8 comment · 90 complexity · a0018126441c72af3969d0187769f99e MD5 · raw file

  1. from django.shortcuts import render,render_to_response
  2. from django.http import HttpResponse, HttpResponseRedirect
  3. from django.contrib.auth import logout
  4. from django.contrib.auth import authenticate
  5. from django.contrib.auth import login as auth_login
  6. from django.contrib.auth.decorators import login_required
  7. from django.contrib.auth.models import User
  8. from groups.models import Groups,Hosts
  9. from account.models import UserProfiles,Businesses,Privileges
  10. def login_view(request):
  11. msg = []
  12. if request.POST:
  13. if len(request.POST.get('next')) > 0:
  14. _next = request.POST.get('next')
  15. else:
  16. _next = "/"
  17. username = request.POST.get('username')
  18. password = request.POST.get('password')
  19. user = authenticate(username=username, password=password)
  20. if user is not None:
  21. if user.is_active:
  22. auth_login(request, user)
  23. return HttpResponseRedirect(_next)
  24. else:
  25. msg.append("Disabled account")
  26. else:
  27. msg.append("Password error")
  28. return render(request, 'account/login.html', {'errors': msg})
  29. def logout_view(request):
  30. logout(request)
  31. return HttpResponseRedirect('/account/login')
  32. @login_required(login_url="/account/login/")
  33. def manage_user(request,*args,**kw):
  34. _supermen = request.user
  35. _businesses = Businesses.objects.all()
  36. _privileges = Privileges.objects.all()
  37. _u=User.objects.get(username=_supermen)
  38. if _u.is_superuser == True:
  39. _users = UserProfiles.objects.all()
  40. else:
  41. _userobject = User.objects.get(username=_supermen)
  42. _users = [UserProfiles.objects.get(user=_userobject)]
  43. _success = kw.get("success",False)
  44. _error = kw.get("error",False)
  45. context={
  46. "users":_users,
  47. "success":_success,
  48. "error":_error,
  49. "businesses":_businesses,
  50. "privileges":_privileges,
  51. }
  52. return render(request,"account/manage_user.html",context)
  53. @login_required(login_url="/account/login/")
  54. def del_user(request):
  55. _supermen = request.user
  56. _u=User.objects.get(username=_supermen)
  57. if _u.is_superuser == True:
  58. _users = UserProfiles.objects.all()
  59. else:
  60. return render_to_response("account/error.html",)
  61. _success = False
  62. _error = False
  63. _ids = request.POST.getlist("id")
  64. try:
  65. _filter = User.objects.filter(id__in=_ids)
  66. _filter.delete()
  67. _success = "Delete opearation successed!"
  68. except Exception as e:
  69. _error = "Delete opearation error!"
  70. return manage_user(request,success=_success,error=_error)
  71. @login_required(login_url="/account/login/")
  72. def set_password(request):
  73. _success=False
  74. _error=False
  75. if request.method == "POST":
  76. _username = request.POST.get("username")
  77. _origin = request.POST.get("origin")
  78. _new = request.POST.get("new")
  79. _newagain = request.POST.get("newagain")
  80. if _new == _newagain and len(_new)>0:
  81. try:
  82. _user=User.objects.get(username=_username)
  83. user = authenticate(username=_username, password=_origin)
  84. if user is not None and user.is_active:
  85. _user.set_password(_new)
  86. _user.save()
  87. _success = "Set password for "+ _username +" OK"
  88. else:
  89. _error = "Origin password is not correct!"
  90. except Exception as e:
  91. _error="Set password for "+ _username +" failed"
  92. else:
  93. _error="password error or the twice password not equal"
  94. return manage_user(request,success=_success,error=_error)
  95. @login_required(login_url="/account/login/")
  96. def setup_user(request):
  97. _supermen = request.user
  98. _u=User.objects.get(username=_supermen)
  99. if _u.is_superuser == True:
  100. _users = UserProfiles.objects.all()
  101. else:
  102. return render_to_response("account/error.html",)
  103. _success=False
  104. _error=False
  105. if request.method == "POST":
  106. _username = request.POST.get("username")
  107. _email = request.POST.get("email")
  108. _issuperuser = request.POST.get("issuperuser")
  109. _login_user = request.user
  110. _businesses = request.POST.getlist("business")
  111. _privileges =request.POST.getlist("privilege")
  112. _telephone = request.POST.get("telephone")
  113. _department = request.POST.get("department")
  114. if User.objects.get(username=_login_user).is_superuser == True:
  115. if _issuperuser is not None:
  116. _issuperuser = True
  117. else:
  118. _issuperuser = False
  119. else:
  120. _issuperuser = False
  121. try:
  122. _user = User.objects.get(username=_username)
  123. _user.email = _email
  124. _user.is_superuser = _issuperuser
  125. _user.save()
  126. # modify user profiles
  127. _userobject = User.objects.get(username=_username)
  128. _userprofile = UserProfiles.objects.get(user=_userobject)
  129. _userprofile.department = _department
  130. _userprofile.telephone = _telephone
  131. _userprofile.save()
  132. # clear relationship first
  133. _userprofile.privilege.clear()
  134. _userprofile.business.clear()
  135. # add relationship
  136. for p in _privileges:
  137. if len(p) > 0:
  138. _tmp = Privileges.objects.get(name=p)
  139. _userprofile.privilege.add(_tmp)
  140. for b in _businesses:
  141. if len(b) > 0:
  142. _tmp = Businesses.objects.get(name=b)
  143. _userprofile.business.add(_tmp)
  144. _success = "Modify user " + _username + " OK"
  145. except Exception as e:
  146. _error ="Modify user " + _username + " failed"
  147. return manage_user(request,success=_success,error=_error)
  148. @login_required(login_url="/account/login/")
  149. def add_user(request):
  150. _success=False
  151. _error=False
  152. if request.method=="POST":
  153. _supermen = request.user
  154. _u=User.objects.get(username=_supermen)
  155. if _u.is_superuser == True:
  156. _users = UserProfiles.objects.all()
  157. else:
  158. return render_to_response("account/error.html",)
  159. _username = request.POST.get("username")
  160. _password = request.POST.get("password")
  161. _passwordagain = request.POST.get("passwordagain")
  162. _email = request.POST.get("email")
  163. _businesses = request.POST.getlist("business")
  164. _privileges = request.POST.getlist("privilege")
  165. _telephone = request.POST.get("telephone")
  166. _department = request.POST.get("department")
  167. if _password != _passwordagain:
  168. _error="the twice password that you typed not equal"
  169. return manage_user(request,success=_success,error=_error)
  170. if request.POST.get("superuser") == "true":
  171. _superuser=True
  172. else:
  173. _superuser=False
  174. try:
  175. _user=User.objects.create_user(username=_username,password=_password,email=_email)
  176. _user.is_superuser=_superuser
  177. _user.save()
  178. # add profile for user
  179. _userobject=User.objects.get(username=_username)
  180. _userprofile = UserProfiles(user=_userobject,department=_department,telephone=_telephone)
  181. _userprofile.save()
  182. for p in _privileges:
  183. if len(p) > 0:
  184. _tmp = Privileges.objects.get(name=p)
  185. _userprofile.privilege.add(_tmp)
  186. for b in _businesses:
  187. if len(b) > 0:
  188. _tmp = Businesses.objects.get(name=b)
  189. _userprofile.business.add(_tmp)
  190. _success="Add user "+_username+" OK!!"
  191. except Exception as e:
  192. _error="user already exists or too long!"
  193. else:
  194. pass
  195. return manage_user(request,success=_success,error=_error)
  196. ########################### mange business #######################
  197. @login_required(login_url="/account/login/")
  198. def manage_business(request,*args,**kw):
  199. _supermen = request.user
  200. _u=User.objects.get(username=_supermen)
  201. if _u.is_superuser == True:
  202. pass
  203. else:
  204. return render_to_response("account/error.html",)
  205. _businesses = Businesses.objects.all()
  206. _success = kw.get("success",False)
  207. _error = kw.get("error",False)
  208. context={
  209. "businesses":_businesses,
  210. "success":_success,
  211. "error":_error,
  212. }
  213. return render(request,"account/manage_business.html",context)
  214. @login_required(login_url="/account/login/")
  215. def del_business(request):
  216. _supermen = request.user
  217. _u=User.objects.get(username=_supermen)
  218. if _u.is_superuser == True:
  219. pass
  220. else:
  221. return render_to_response("account/error.html",)
  222. _success=False
  223. _error=False
  224. _ids=request.POST.getlist("id")
  225. try:
  226. _filter=Businesses.objects.filter(id__in=_ids)
  227. _filter.delete()
  228. _success="Delete opearation successed!"
  229. except Exception as e:
  230. _error="Delete opearation error!"
  231. return manage_business(request,success=_success,error=_error)
  232. @login_required(login_url="/account/login/")
  233. def modify_business(request):
  234. _supermen = request.user
  235. _u=User.objects.get(username=_supermen)
  236. if _u.is_superuser == True:
  237. pass
  238. else:
  239. return render_to_response("account/error.html",)
  240. _success=False
  241. _error=False
  242. if request.method=="POST":
  243. _id=request.POST.get("id")
  244. _name=request.POST.get("name")
  245. _enabled=request.POST.get("enabled")
  246. _informations=request.POST.get("informations")
  247. if _enabled is not None:
  248. _enabled=True
  249. else:
  250. _enabled=False
  251. try:
  252. _business=Businesses.objects.get(id=_id)
  253. _name_before=_business.name
  254. _business.name=_name
  255. _business.enabled=_enabled
  256. _business.informations=_informations
  257. _business.save()
  258. _success="Modify Business "+ _name +" OK"
  259. except Exception as e:
  260. _error="Modify Business "+ _name +" failed"
  261. return manage_business(request,success=_success,error=_error)
  262. @login_required(login_url="/account/login/")
  263. def add_business(request):
  264. _supermen = request.user
  265. _u=User.objects.get(username=_supermen)
  266. if _u.is_superuser == True:
  267. pass
  268. else:
  269. return render_to_response("account/error.html",)
  270. _success=False
  271. _error=False
  272. if request.method=="POST":
  273. _name=request.POST.get("name")
  274. _informations=request.POST.get("informations")
  275. if request.POST.get("enabled") == "true":
  276. _enabled=True
  277. else:
  278. _enabled=False
  279. try:
  280. _business=Businesses(name=_name,informations=_informations,enabled=_enabled)
  281. _business.save()
  282. _success="Add business line "+_name+" OK!!"
  283. except Exception as e:
  284. _error="name already exists or too long!"
  285. else:
  286. pass
  287. return manage_business(request,success=_success,error=_error)
  288. ########################### end mange business #######################
  289. ########################### mange privilege #######################
  290. @login_required(login_url="/account/login/")
  291. def manage_privilege(request,*args,**kw):
  292. _supermen = request.user
  293. _u=User.objects.get(username=_supermen)
  294. if _u.is_superuser == True:
  295. pass
  296. else:
  297. return render_to_response("account/error.html",)
  298. _privileges = Privileges.objects.all()
  299. _success = kw.get("success",False)
  300. _error = kw.get("error",False)
  301. context={
  302. "privileges":_privileges,
  303. "success":_success,
  304. "error":_error,
  305. }
  306. return render(request,"account/manage_privilege.html",context)
  307. @login_required(login_url="/account/login/")
  308. def del_privilege(request):
  309. _supermen = request.user
  310. _u=User.objects.get(username=_supermen)
  311. if _u.is_superuser == True:
  312. pass
  313. else:
  314. return render_to_response("account/error.html",)
  315. _success=False
  316. _error=False
  317. _ids=request.POST.getlist("id")
  318. try:
  319. _filter=Privileges.objects.filter(id__in=_ids)
  320. _filter.delete()
  321. _success="Delete opearation successed!"
  322. except Exception as e:
  323. _error="Delete opearation error!"
  324. return manage_privilege(request,success=_success,error=_error)
  325. @login_required(login_url="/account/login/")
  326. def modify_privilege(request):
  327. _supermen = request.user
  328. _u=User.objects.get(username=_supermen)
  329. if _u.is_superuser == True:
  330. pass
  331. else:
  332. return render_to_response("account/error.html",)
  333. _success=False
  334. _error=False
  335. if request.method=="POST":
  336. _id=request.POST.get("id")
  337. _name=request.POST.get("name")
  338. _allow=request.POST.get("allow")
  339. _deny=request.POST.get("deny")
  340. _enabled=request.POST.get("enabled")
  341. _informations=request.POST.get("informations")
  342. if _enabled is not None:
  343. _enabled=True
  344. else:
  345. _enabled=False
  346. try:
  347. _privilege=Privileges.objects.get(id=_id)
  348. _name_before=_privilege.name
  349. _privilege.name=_name
  350. _privilege.allow=_allow
  351. _privilege.deny=_deny
  352. _privilege.enabled=_enabled
  353. _privilege.informations=_informations
  354. _privilege.save()
  355. _success="Modify privilege "+ _name +" OK"
  356. except Exception as e:
  357. _error="Modify privilege "+ _name +" failed"
  358. return manage_privilege(request,success=_success,error=_error)
  359. @login_required(login_url="/account/login/")
  360. def add_privilege(request):
  361. _supermen = request.user
  362. _u=User.objects.get(username=_supermen)
  363. if _u.is_superuser == True:
  364. pass
  365. else:
  366. return render_to_response("account/error.html",)
  367. _success=False
  368. _error=False
  369. if request.method=="POST":
  370. _name=request.POST.get("name")
  371. _deny=request.POST.get("deny")
  372. _allow=request.POST.get("allow")
  373. _informations=request.POST.get("informations")
  374. if request.POST.get("enabled") == "true":
  375. _enabled=True
  376. else:
  377. _enabled=False
  378. try:
  379. _privilege=Privileges(name=_name,allow=_allow,deny=_deny,informations=_informations,enabled=_enabled)
  380. _privilege.save()
  381. _success="Add privilege "+_name+" OK!!"
  382. except Exception as e:
  383. _error="name already exists or too long!"
  384. else:
  385. pass
  386. return manage_privilege(request,success=_success,error=_error)
  387. ########################### end manage privilege ###########################