forms.py 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. # -*- coding: UTF-8 -*-
  2. from pichublog.models import KVConf,BlogCategoty,BlogPost,BlogComment,LeaveMsg
  3. from zlogin.models import User
  4. from django import forms
  5. from django.core.exceptions import ValidationError
  6. from siteutil.DataConvert import str2int
  7. import logging
  8. logger = logging.getLogger('userlog_file')
  9. # def mc_validator(value):
  10. # if self.required and not value:
  11. # raise ValidationError(self.error_messages['required'], code='required')
  12. # for val in value:
  13. # if not User.objects.exists(id=str2int(val)):
  14. # raise ValidationError(
  15. # #self.error_messages['invalid_choice'],
  16. # "errrrrrrrrrrrrrro",
  17. # code='invalid_choice',
  18. # params={'value': val},
  19. # )
  20. # def mc_validate(self, value):
  21. # raise ValidationError("Test")
  22. # if self.required and not value:
  23. # raise ValidationError(self.error_messages['required'], code='required')
  24. # for val in value:
  25. # if not User.objects.exists(id=str2int(val)):
  26. # raise ValidationError("Invalid User.")
  27. # # raise ValidationError(
  28. # # #self.error_messages['invalid_choice'],
  29. # # "errrrrrrrrrrrrrro",
  30. # # code='invalid_choice',
  31. # # params={'value': val},
  32. # # )
  33. # def mc_clean(self,value):
  34. # value = self.to_python(value)
  35. # self.mc_validate(value)
  36. # return value
  37. class UserMultiChoiceField(forms.ModelMultipleChoiceField):
  38. def validate(self,value):
  39. if self.required and not value:
  40. raise ValidationError(self.error_messages['required'], code='required')
  41. for val in value:
  42. if not User.objects.exists(id=str2int(val)):
  43. raise ValidationError(u"用户不存在!")
  44. class BlogCategotyForm(forms.ModelForm):
  45. class Meta:
  46. model = BlogCategoty
  47. fields = ['engname','title','topli']
  48. widgets = {
  49. "engname":forms.TextInput(attrs={'class':'form-control',"placeholder":"请输入英文名(用于URL,仅能使用大小写字母、数字和下划线)"}),
  50. "title":forms.TextInput(attrs={'class':'form-control',"placeholder":"请输入分类名称"}),
  51. "topli":forms.TextInput(attrs={'class':'form-control',"placeholder":"请输入置顶文章ID列表,英文逗号隔开,若没有请留空"}),
  52. }
  53. def __init__(self,*args,**kwargs):
  54. super(BlogCategotyForm,self).__init__(*args,**kwargs)
  55. self.fields['engname'].label=u'英文名'
  56. self.fields['engname'].error_messages={'required':u'请输入英文名(用于URL,仅能使用大小写字母、数字和下划线)'}
  57. self.fields['title'].label=u'分类名称'
  58. self.fields['title'].error_messages={'required':u'请输入分类名称'}
  59. self.fields['topli'].label=u'置顶列表'
  60. class EditPostForm(forms.ModelForm):
  61. class Meta:
  62. model = BlogPost
  63. fields = ['title','category','markdown']
  64. widgets = {
  65. "title":forms.TextInput(attrs={'class':'form-control',"placeholder":"请输入标题"}),
  66. "category" : forms.SelectMultiple(attrs={'class':'form-control','size':'10','multiple':'multiple'}),
  67. "markdown":forms.Textarea(attrs={'class':'form-control',"placeholder":"正文"}),
  68. }
  69. def __init__(self,*args,**kwargs):
  70. super(EditPostForm,self).__init__(*args,**kwargs)
  71. self.fields['title'].label=u'标题'
  72. self.fields['title'].required=True
  73. self.fields['title'].error_messages={'required':u"请输入标题"}
  74. self.fields['category'].label=u'分类'
  75. self.fields['markdown'].label=u'正文'
  76. self.fields['markdown'].required=True
  77. self.fields['markdown'].error_messages={'required':u"请输入正文"}
  78. class PostPermForm(forms.ModelForm):
  79. readuin = UserMultiChoiceField(queryset=None)
  80. readuex = UserMultiChoiceField(queryset=None)
  81. commentuin = UserMultiChoiceField(queryset=None)
  82. commentuex = UserMultiChoiceField(queryset=None)
  83. class Meta:
  84. model = BlogPost
  85. fields = ['private','passwdlck','passwd','readgrp','readuin','readuex','freecomment','commentgrp','commentuin','commentuex']
  86. #fields = ['private','passwdlck','passwd','freecomment']
  87. # field_classes = {
  88. # "readuin":UserMultiChoiceField,
  89. # "readuex":UserMultiChoiceField,
  90. # "commentuin":UserMultiChoiceField,
  91. # "commentuex":UserMultiChoiceField,
  92. # }
  93. widgets = {
  94. "private":forms.CheckboxInput(attrs={'class':'form-control'}),
  95. "passwdlck":forms.CheckboxInput(attrs={'class':'form-control'}),
  96. "passwd":forms.TextInput(attrs={'class':'form-control',"placeholder":"请输入访问密码"}),
  97. "readgrp":forms.TextInput(),
  98. "readuin":forms.TextInput(),
  99. "readuex":forms.TextInput(),
  100. "commentgrp":forms.TextInput(),
  101. "commentuin":forms.TextInput(),
  102. "commentuex":forms.TextInput(),
  103. "readgrp":forms.SelectMultiple(attrs={'class':'form-control','size':'10'}),
  104. "readuin":forms.SelectMultiple(attrs={'class':'form-control','size':'10'}),
  105. "readuex":forms.SelectMultiple(attrs={'class':'form-control','size':'10'}),
  106. "freecomment":forms.CheckboxInput(attrs={'class':'form-control'}),
  107. "commentgrp":forms.SelectMultiple(attrs={'class':'form-control','size':'10'}),
  108. "commentuin":forms.SelectMultiple(attrs={'class':'form-control','size':'10'}),
  109. "commentuex":forms.SelectMultiple(attrs={'class':'form-control','size':'10'}),
  110. }
  111. def __init__(self,*args,**kwargs):
  112. super(PostPermForm,self).__init__(*args,**kwargs)
  113. self.fields['private'].label=u'设为私密文章'
  114. self.fields['passwdlck'].label=u'使用密码保护'
  115. self.fields['passwd'].label=u'访问密码'
  116. self.fields['passwd'].required=False
  117. self.fields['readgrp'].label=u'允许访问的用户组'
  118. self.fields['readgrp'].required=False
  119. self.fields['readuin'].label=u'额外允许访问的用户'
  120. self.fields['readuin'].required=False
  121. if 'instance' in kwargs.keys():
  122. logger.debug(repr(kwargs['instance'].readuin.all()))
  123. self.fields['readuin'].queryset=kwargs['instance'].readuin.all()
  124. else:
  125. self.fields['readuin'].queryset=User.objects.none()
  126. self.fields['readuex'].label=u'额外不允许访问的用户'
  127. self.fields['readuex'].required=False
  128. if 'instance' in kwargs.keys():
  129. logger.debug(repr(kwargs['instance'].readuin.all()))
  130. self.fields['readuex'].queryset=kwargs['instance'].readuex.all()
  131. else:
  132. self.fields['readuex'].queryset=User.objects.none()
  133. self.fields['freecomment'].label=u'允许任何人评论'
  134. self.fields['commentgrp'].label=u'允许评论的用户组'
  135. self.fields['commentgrp'].required=False
  136. self.fields['commentuin'].label=u'额外允许评论的用户'
  137. self.fields['commentuin'].required=False
  138. if 'instance' in kwargs.keys():
  139. logger.debug(repr(kwargs['instance'].readuin.all()))
  140. self.fields['commentuin'].queryset=kwargs['instance'].commentuin.all()
  141. else:
  142. self.fields['commentuin'].queryset=User.objects.none()
  143. self.fields['commentuex'].label=u'额外不允许评论的用户'
  144. self.fields['commentuex'].required=False
  145. if 'instance' in kwargs.keys():
  146. logger.debug(repr(kwargs['instance'].readuin.all()))
  147. self.fields['commentuex'].queryset=kwargs['instance'].commentuex.all()
  148. else:
  149. self.fields['commentuex'].queryset=User.objects.none()