forms.py 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. #!/usr/bin/env python
  2. #-*- coding: utf-8 -*-
  3. from django import forms
  4. from django.contrib import auth
  5. from django.contrib.auth import get_user_model
  6. from UserManage.models import User,RoleList,PermissionList,GroupList,GroupListList
  7. import datetime
  8. class LoginUserForm(forms.Form):
  9. username = forms.CharField(label=u'账 号',error_messages={'required':u'账号不能为空'},
  10. widget=forms.TextInput(attrs={'class':'form-control',"placeholder":"请输入账号"}))
  11. password = forms.CharField(label=u'密 码',error_messages={'required':u'密码不能为空'},
  12. widget=forms.PasswordInput(attrs={'class':'form-control',"placeholder":"请输入密码"}))
  13. def __init__(self, request=None, *args, **kwargs):
  14. self.request = request
  15. self.user_cache = None
  16. super(LoginUserForm, self).__init__(*args, **kwargs)
  17. def clean_password(self):
  18. username = self.cleaned_data.get('username')
  19. password = self.cleaned_data.get('password')
  20. if username and password:
  21. self.user_cache = auth.authenticate(username=username,password=password)
  22. if self.user_cache is None:
  23. raise forms.ValidationError(u'账号密码不匹配')
  24. elif not self.user_cache.is_active:
  25. raise forms.ValidationError(u'此账号已被禁用')
  26. return self.cleaned_data
  27. def get_user(self):
  28. return self.user_cache
  29. class ChangePasswordForm(forms.Form):
  30. old_password = forms.CharField(label=u'原始密码',error_messages={'required':'请输入原始密码'},
  31. widget=forms.PasswordInput(attrs={'class':'form-control'}))
  32. new_password1 = forms.CharField(label=u'新密码',error_messages={'required':'请输入新密码'},
  33. widget=forms.PasswordInput(attrs={'class':'form-control'}))
  34. new_password2 = forms.CharField(label=u'重复输入',error_messages={'required':'请重复新输入密码'},
  35. widget=forms.PasswordInput(attrs={'class':'form-control'}))
  36. def __init__(self, user, *args, **kwargs):
  37. self.user = user
  38. super(ChangePasswordForm, self).__init__(*args, **kwargs)
  39. def clean_old_password(self):
  40. old_password = self.cleaned_data["old_password"]
  41. if not self.user.check_password(old_password):
  42. raise forms.ValidationError(u'原密码错误')
  43. return old_password
  44. def clean_new_password2(self):
  45. password1 = self.cleaned_data.get('new_password1')
  46. password2 = self.cleaned_data.get('new_password2')
  47. if len(password1)<6:
  48. raise forms.ValidationError(u'密码必须大于6位')
  49. if password1 and password2:
  50. if password1 != password2:
  51. raise forms.ValidationError(u'两次密码输入不一致')
  52. return password2
  53. def save(self, commit=True):
  54. self.user.set_password(self.cleaned_data['new_password1'])
  55. if commit:
  56. self.user.save()
  57. return self.user
  58. class AddUserForm(forms.ModelForm):
  59. class Meta:
  60. model = User
  61. fields = ('username','password','sid','classid','email','nickname','sex','birthday','role','is_active')
  62. widgets = {
  63. 'username' : forms.TextInput(attrs={'class':'form-control'}),
  64. 'password' : forms.PasswordInput(attrs={'class':'form-control'}),
  65. 'sid' : forms.TextInput(attrs={'class':'form-control'}),
  66. 'classid' : forms.Select(choices=[(x.name,x.name) for x in GroupList.objects.all()],attrs={'class':'form-control'}),
  67. 'email' : forms.TextInput(attrs={'class':'form-control'}),
  68. 'nickname' : forms.TextInput(attrs={'class':'form-control'}),
  69. 'sex' : forms.RadioSelect(choices=((u'男', u'男'),(u'女', u'女'),(u'保密', u'保密')),attrs={'class':'list-inline'}),
  70. 'birthday' : forms.TextInput(attrs={'class':'form-control'}),
  71. 'role' : forms.Select(attrs={'class':'form-control'}),
  72. 'is_active' : forms.Select(choices=((True, u'启用'),(False, u'禁用')),attrs={'class':'form-control'}),
  73. }
  74. def __init__(self,*args,**kwargs):
  75. super(AddUserForm,self).__init__(*args,**kwargs)
  76. self.fields['username'].label=u'账 号'
  77. self.fields['username'].error_messages={'required':u'请输入账号'}
  78. self.fields['password'].label=u'密 码'
  79. self.fields['password'].error_messages={'required':u'请输入密码'}
  80. self.fields['sid'].label=u'学 号'
  81. self.fields['sid'].error_messages={'required':u'请输入学号','invalid':u'请输入有效学号'}
  82. self.fields['classid'].label=u'分 组'
  83. self.fields['classid'].error_messages={'required':u'请输入分组号','invalid':u'请输入有效分组号'}
  84. self.fields['email'].label=u'邮 箱'
  85. self.fields['email'].error_messages={'invalid':u'请输入有效邮箱'}
  86. self.fields['nickname'].label=u'姓 名'
  87. self.fields['nickname'].error_messages={'required':u'请输入姓名'}
  88. self.fields['sex'].label=u'性 别'
  89. self.fields['sex'].error_messages={'required':u'请选择性别'}
  90. self.fields['birthday'].label=u'生 日'
  91. self.fields['birthday'].error_messages={'invalid':u'请输入有效的生日'}
  92. self.fields['role'].label=u'角 色'
  93. self.fields['is_active'].label=u'状 态'
  94. def clean_password(self):
  95. password = self.cleaned_data.get('password')
  96. if len(password) < 6:
  97. raise forms.ValidationError(u'密码必须大于6位')
  98. return password
  99. def clean_sid(self):
  100. sid = self.cleaned_data.get('sid')
  101. if not str(sid).isdigit():
  102. raise forms.ValidationError(u'学号必须为纯数字')
  103. return sid
  104. class EditUserForm(forms.ModelForm):
  105. class Meta:
  106. model = User
  107. fields = ('username','sid','classid','email','nickname','sex','birthday','role','is_active')
  108. widgets = {
  109. 'username' : forms.TextInput(attrs={'class':'form-control'}),
  110. #'password': forms.HiddenInput,
  111. 'sid' : forms.TextInput(attrs={'class':'form-control'}),
  112. 'classid' : forms.Select(choices=[(x.name,x.name) for x in GroupList.objects.all()],attrs={'class':'form-control'}),
  113. 'email' : forms.TextInput(attrs={'class':'form-control'}),
  114. 'nickname' : forms.TextInput(attrs={'class':'form-control'}),
  115. 'sex' : forms.RadioSelect(choices=((u'男', u'男'),(u'女', u'女'),(u'保密', u'保密')),attrs={'class':'list-inline'}),
  116. 'birthday' : forms.TextInput(attrs={'class':'form-control'}),
  117. 'role' : forms.Select(choices=[(x.name,x.name) for x in RoleList.objects.all()],attrs={'class':'form-control'}),
  118. 'is_active' : forms.Select(choices=((True, u'启用'),(False, u'禁用')),attrs={'class':'form-control'}),
  119. }
  120. def __init__(self,*args,**kwargs):
  121. super(EditUserForm,self).__init__(*args,**kwargs)
  122. self.fields['username'].label=u'账 号'
  123. self.fields['username'].error_messages={'required':u'请输入账号'}
  124. self.fields['sid'].label=u'学 号'
  125. self.fields['sid'].error_messages={'required':u'请输入学号','invalid':u'请输入有效学号'}
  126. self.fields['classid'].label=u'分 组'
  127. self.fields['classid'].error_messages={'required':u'请输入分组号','invalid':u'请输入有效分组号'}
  128. self.fields['email'].label=u'邮 箱'
  129. self.fields['email'].error_messages={'invalid':u'请输入有效邮箱'}
  130. self.fields['nickname'].label=u'姓 名'
  131. self.fields['nickname'].error_messages={'required':u'请输入姓名'}
  132. self.fields['sex'].label=u'性 别'
  133. self.fields['sex'].error_messages={'required':u'请选择性别'}
  134. self.fields['birthday'].label=u'生 日'
  135. self.fields['birthday'].error_messages={'invalid':u'请输入有效的生日'}
  136. self.fields['role'].label=u'角 色'
  137. self.fields['is_active'].label=u'状 态'
  138. def clean_password(self):
  139. password = self.cleaned_data.get('password')
  140. if len(password) < 6:
  141. raise forms.ValidationError(u'密码必须大于6位')
  142. return password
  143. def clean_sid(self):
  144. sid = self.cleaned_data.get('sid')
  145. if not str(sid).isdigit():
  146. raise forms.ValidationError(u'学号必须为纯数字')
  147. return sid
  148. class PermissionListForm(forms.ModelForm):
  149. class Meta:
  150. model = PermissionList
  151. widgets = {
  152. 'name' : forms.TextInput(attrs={'class':'form-control'}),
  153. 'url' : forms.TextInput(attrs={'class':'form-control'}),
  154. }
  155. def __init__(self,*args,**kwargs):
  156. super(PermissionListForm,self).__init__(*args,**kwargs)
  157. self.fields['name'].label=u'名 称'
  158. self.fields['name'].error_messages={'required':u'请输入名称'}
  159. self.fields['url'].label=u'URL'
  160. self.fields['url'].error_messages={'required':u'请输入URL'}
  161. class RoleListForm(forms.ModelForm):
  162. class Meta:
  163. model = RoleList
  164. widgets = {
  165. 'name' : forms.TextInput(attrs={'class':'form-control'}),
  166. 'permission' : forms.SelectMultiple(attrs={'class':'form-control','size':'10','multiple':'multiple'}),
  167. #'permission' : forms.CheckboxSelectMultiple(choices=[(x.id,x.name) for x in PermissionList.objects.all()]),
  168. }
  169. def __init__(self,*args,**kwargs):
  170. super(RoleListForm,self).__init__(*args,**kwargs)
  171. self.fields['name'].label=u'名 称'
  172. self.fields['name'].error_messages={'required':u'请输入名称'}
  173. self.fields['permission'].label=u'URL'
  174. self.fields['permission'].required=False
  175. class GroupListForm(forms.ModelForm):
  176. class Meta:
  177. model = GroupList
  178. widgets = {
  179. 'name' : forms.TextInput(attrs={'class':'form-control'}),
  180. 'classid' : forms.TextInput(attrs={'class':'form-control'}),
  181. #'users' : forms.SelectMultiple(attrs={'class':'form-control','size':'10','multiple':'multiple'}),
  182. #'permission' : forms.CheckboxSelectMultiple(choices=[(x.id,x.name) for x in PermissionList.objects.all()]),
  183. }
  184. def __init__(self,*args,**kwargs):
  185. super(GroupListForm,self).__init__(*args,**kwargs)
  186. self.fields['name'].label=u'名 称'
  187. self.fields['name'].error_messages={'required':u'请输入名称'}
  188. self.fields['classid'].label=u'分组号'
  189. self.fields['classid'].error_messages={'required':u'请输入分组号','invalid':u'请输入有效分组号'}
  190. #self.fields['users'].label=u'姓 名'
  191. #self.fields['users'].required=False
  192. class XLSFileForm(forms.Form):
  193. xls = forms.FileField()
  194. def __init__(self,*args,**kwargs):
  195. super(XLSFileForm,self).__init__(*args,**kwargs)
  196. self.fields['xls'].label=u'文 件'
  197. self.fields['xls'].error_messages={'required':u'请输入名称'}
  198. class RemoveUsersForm(forms.ModelForm):
  199. class Meta:
  200. model = GroupListList
  201. widgets = {
  202. 'classid' : forms.SelectMultiple(attrs={'class':'form-control','size':'10','multiple':'multiple'}),
  203. #'permission' : forms.CheckboxSelectMultiple(choices=[(x.id,x.name) for x in PermissionList.objects.all()]),
  204. }
  205. def __init__(self,*args,**kwargs):
  206. super(RemoveUsersForm,self).__init__(*args,**kwargs)
  207. self.fields['classid'].label=u'要删除的用户分组'
  208. self.fields['classid'].required=True
  209. class ChangeUserForm(forms.ModelForm):
  210. class Meta:
  211. model = User
  212. fields = ('email','nickname','sex','birthday')
  213. widgets = {
  214. #'password': forms.HiddenInput,
  215. 'email' : forms.TextInput(attrs={'class':'form-control'}),
  216. 'nickname' : forms.TextInput(attrs={'class':'form-control'}),
  217. 'sex' : forms.RadioSelect(choices=((u'男', u'男'),(u'女', u'女'),(u'保密', u'保密')),attrs={'class':'list-inline'}),
  218. 'birthday' : forms.TextInput(attrs={'class':'form-control'}),
  219. }
  220. def __init__(self,*args,**kwargs):
  221. super(ChangeUserForm,self).__init__(*args,**kwargs)
  222. self.fields['email'].label=u'邮 箱'
  223. self.fields['email'].error_messages={'invalid':u'请输入有效邮箱'}
  224. self.fields['nickname'].label=u'姓 名'
  225. self.fields['nickname'].error_messages={'required':u'请输入姓名'}
  226. self.fields['sex'].label=u'性 别'
  227. self.fields['sex'].error_messages={'required':u'请选择性别'}
  228. self.fields['birthday'].label=u'生 日'
  229. self.fields['birthday'].error_messages={'invalid':u'请输入有效的生日'}
  230. class AddAdminForm(forms.ModelForm):
  231. class Meta:
  232. model = User
  233. fields = ('username','password','sid','email','nickname','sex','birthday')
  234. widgets = {
  235. 'username' : forms.TextInput(attrs={'class':'form-control'}),
  236. 'password' : forms.PasswordInput(attrs={'class':'form-control'}),
  237. 'sid' : forms.TextInput(attrs={'class':'form-control'}),
  238. 'email' : forms.TextInput(attrs={'class':'form-control'}),
  239. 'nickname' : forms.TextInput(attrs={'class':'form-control'}),
  240. 'sex' : forms.RadioSelect(choices=((u'男', u'男'),(u'女', u'女'),(u'保密', u'保密')),attrs={'class':'list-inline'}),
  241. }
  242. def __init__(self,*args,**kwargs):
  243. super(AddAdminForm,self).__init__(*args,**kwargs)
  244. self.fields['username'].label=u'账 号'
  245. self.fields['username'].error_messages={'required':u'请输入账号'}
  246. self.fields['password'].label=u'密 码'
  247. self.fields['password'].error_messages={'required':u'请输入密码'}
  248. self.fields['sid'].label=u'学 号'
  249. self.fields['sid'].error_messages={'required':u'请输入学号','invalid':u'请输入有效学号'}
  250. self.fields['email'].label=u'邮 箱'
  251. self.fields['email'].error_messages={'invalid':u'请输入有效邮箱'}
  252. self.fields['nickname'].label=u'姓 名'
  253. self.fields['nickname'].error_messages={'required':u'请输入姓名'}
  254. self.fields['sex'].label=u'性 别'
  255. self.fields['sex'].error_messages={'required':u'请选择性别'}
  256. self.fields['birthday'].label=u'生 日'
  257. self.fields['birthday'].error_messages={'invalid':u'请输入有效的生日'}
  258. def clean_password(self):
  259. password = self.cleaned_data.get('password')
  260. if len(password) < 6:
  261. raise forms.ValidationError(u'密码必须大于6位')
  262. return password
  263. class SignInUserForm(forms.ModelForm):
  264. class Meta:
  265. model = User
  266. fields = ('username','password','sid','classid','email','nickname','sex','birthday')
  267. widgets = {
  268. 'username' : forms.TextInput(attrs={'class':'form-control'}),
  269. 'password' : forms.PasswordInput(attrs={'class':'form-control'}),
  270. 'sid' : forms.TextInput(attrs={'class':'form-control'}),
  271. 'classid' : forms.Select(choices=[(x.name,x.name) for x in GroupList.objects.all()],attrs={'class':'form-control'}),
  272. 'email' : forms.TextInput(attrs={'class':'form-control'}),
  273. 'nickname' : forms.TextInput(attrs={'class':'form-control'}),
  274. 'sex' : forms.RadioSelect(choices=((u'男', u'男'),(u'女', u'女'),(u'保密', u'保密')),attrs={'class':'list-inline'}),
  275. 'birthday' : forms.TextInput(attrs={'class':'form-control'}),
  276. }
  277. def __init__(self,*args,**kwargs):
  278. super(SignInUserForm,self).__init__(*args,**kwargs)
  279. self.fields['username'].label=u'账 号'
  280. self.fields['username'].error_messages={'required':u'请输入账号'}
  281. self.fields['password'].label=u'密 码'
  282. self.fields['password'].error_messages={'required':u'请输入密码'}
  283. self.fields['sid'].label=u'学 号'
  284. self.fields['sid'].error_messages={'required':u'请输入学号','invalid':u'请输入有效学号'}
  285. self.fields['classid'].label=u'分 组'
  286. self.fields['classid'].error_messages={'required':u'请输入分组号','invalid':u'请输入有效分组号'}
  287. self.fields['email'].label=u'邮 箱'
  288. self.fields['email'].error_messages={'invalid':u'请输入有效邮箱'}
  289. self.fields['nickname'].label=u'姓 名'
  290. self.fields['nickname'].error_messages={'required':u'请输入姓名'}
  291. self.fields['sex'].label=u'性 别'
  292. self.fields['sex'].error_messages={'required':u'请选择性别'}
  293. self.fields['birthday'].label=u'生 日'
  294. self.fields['birthday'].error_messages={'invalid':u'请输入有效的生日'}
  295. def clean_password(self):
  296. password = self.cleaned_data.get('password')
  297. if len(password) < 6:
  298. raise forms.ValidationError(u'密码必须大于6位')
  299. return password
  300. def clean_sid(self):
  301. sid = self.cleaned_data.get('sid')
  302. if not str(sid).isdigit():
  303. raise forms.ValidationError(u'学号必须为纯数字')
  304. return sid