123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- # -*- coding: UTF-8 -*-
- from pichublog.models import KVConf,BlogCategoty,BlogPost,BlogComment,LeaveMsg
- from zlogin.models import User
- from django import forms
- from django.core.exceptions import ValidationError
- from siteutil.DataConvert import str2int
- import logging
- logger = logging.getLogger('userlog_file')
- # def mc_validator(value):
- # if self.required and not value:
- # raise ValidationError(self.error_messages['required'], code='required')
- # for val in value:
- # if not User.objects.exists(id=str2int(val)):
- # raise ValidationError(
- # #self.error_messages['invalid_choice'],
- # "errrrrrrrrrrrrrro",
- # code='invalid_choice',
- # params={'value': val},
- # )
- # def mc_validate(self, value):
- # raise ValidationError("Test")
- # if self.required and not value:
- # raise ValidationError(self.error_messages['required'], code='required')
- # for val in value:
- # if not User.objects.exists(id=str2int(val)):
- # raise ValidationError("Invalid User.")
- # # raise ValidationError(
- # # #self.error_messages['invalid_choice'],
- # # "errrrrrrrrrrrrrro",
- # # code='invalid_choice',
- # # params={'value': val},
- # # )
- # def mc_clean(self,value):
- # value = self.to_python(value)
- # self.mc_validate(value)
- # return value
- class UserMultiChoiceField(forms.ModelMultipleChoiceField):
- def validate(self,value):
- if self.required and not value:
- raise ValidationError(self.error_messages['required'], code='required')
- for val in value:
- if not User.objects.exists(id=str2int(val)):
- raise ValidationError(u"用户不存在!")
- class BlogCategotyForm(forms.ModelForm):
- class Meta:
- model = BlogCategoty
- fields = ['engname','title','topli']
- widgets = {
- "engname":forms.TextInput(attrs={'class':'form-control',"placeholder":"请输入英文名(用于URL,仅能使用大小写字母、数字和下划线)"}),
- "title":forms.TextInput(attrs={'class':'form-control',"placeholder":"请输入分类名称"}),
- "topli":forms.TextInput(attrs={'class':'form-control',"placeholder":"请输入置顶文章ID列表,英文逗号隔开,若没有请留空"}),
- }
- def __init__(self,*args,**kwargs):
- super(BlogCategotyForm,self).__init__(*args,**kwargs)
- self.fields['engname'].label=u'英文名'
- self.fields['engname'].error_messages={'required':u'请输入英文名(用于URL,仅能使用大小写字母、数字和下划线)'}
- self.fields['title'].label=u'分类名称'
- self.fields['title'].error_messages={'required':u'请输入分类名称'}
- self.fields['topli'].label=u'置顶列表'
- class EditPostForm(forms.ModelForm):
- class Meta:
- model = BlogPost
- fields = ['title','category','markdown']
- widgets = {
- "title":forms.TextInput(attrs={'class':'form-control',"placeholder":"请输入标题"}),
- "category" : forms.SelectMultiple(attrs={'class':'form-control','size':'10','multiple':'multiple'}),
- "markdown":forms.Textarea(attrs={'class':'form-control',"placeholder":"正文"}),
- }
- def __init__(self,*args,**kwargs):
- super(EditPostForm,self).__init__(*args,**kwargs)
- self.fields['title'].label=u'标题'
- self.fields['title'].required=True
- self.fields['title'].error_messages={'required':u"请输入标题"}
- self.fields['category'].label=u'分类'
- self.fields['markdown'].label=u'正文'
- self.fields['markdown'].required=True
- self.fields['markdown'].error_messages={'required':u"请输入正文"}
- class PostPermForm(forms.ModelForm):
- readuin = UserMultiChoiceField(queryset=None)
- readuex = UserMultiChoiceField(queryset=None)
- commentuin = UserMultiChoiceField(queryset=None)
- commentuex = UserMultiChoiceField(queryset=None)
- class Meta:
- model = BlogPost
- fields = ['private','passwdlck','passwd','readgrp','readuin','readuex','freecomment','commentgrp','commentuin','commentuex']
- #fields = ['private','passwdlck','passwd','freecomment']
- # field_classes = {
- # "readuin":UserMultiChoiceField,
- # "readuex":UserMultiChoiceField,
- # "commentuin":UserMultiChoiceField,
- # "commentuex":UserMultiChoiceField,
- # }
- widgets = {
- "private":forms.CheckboxInput(attrs={'class':'form-control'}),
- "passwdlck":forms.CheckboxInput(attrs={'class':'form-control'}),
- "passwd":forms.TextInput(attrs={'class':'form-control',"placeholder":"请输入访问密码"}),
- "readgrp":forms.TextInput(),
- "readuin":forms.TextInput(),
- "readuex":forms.TextInput(),
- "commentgrp":forms.TextInput(),
- "commentuin":forms.TextInput(),
- "commentuex":forms.TextInput(),
- "readgrp":forms.SelectMultiple(attrs={'class':'form-control','size':'10'}),
- "readuin":forms.SelectMultiple(attrs={'class':'form-control','size':'10'}),
- "readuex":forms.SelectMultiple(attrs={'class':'form-control','size':'10'}),
- "freecomment":forms.CheckboxInput(attrs={'class':'form-control'}),
- "commentgrp":forms.SelectMultiple(attrs={'class':'form-control','size':'10'}),
- "commentuin":forms.SelectMultiple(attrs={'class':'form-control','size':'10'}),
- "commentuex":forms.SelectMultiple(attrs={'class':'form-control','size':'10'}),
- }
- def __init__(self,*args,**kwargs):
- super(PostPermForm,self).__init__(*args,**kwargs)
- self.fields['private'].label=u'设为私密文章'
- self.fields['passwdlck'].label=u'使用密码保护'
- self.fields['passwd'].label=u'访问密码'
- self.fields['passwd'].required=False
- self.fields['readgrp'].label=u'允许访问的用户组'
- self.fields['readgrp'].required=False
- self.fields['readuin'].label=u'额外允许访问的用户'
- self.fields['readuin'].required=False
- if 'instance' in kwargs.keys():
- logger.debug(repr(kwargs['instance'].readuin.all()))
- self.fields['readuin'].queryset=kwargs['instance'].readuin.all()
- else:
- self.fields['readuin'].queryset=User.objects.none()
- self.fields['readuex'].label=u'额外不允许访问的用户'
- self.fields['readuex'].required=False
- if 'instance' in kwargs.keys():
- logger.debug(repr(kwargs['instance'].readuin.all()))
- self.fields['readuex'].queryset=kwargs['instance'].readuex.all()
- else:
- self.fields['readuex'].queryset=User.objects.none()
- self.fields['freecomment'].label=u'允许任何人评论'
- self.fields['commentgrp'].label=u'允许评论的用户组'
- self.fields['commentgrp'].required=False
- self.fields['commentuin'].label=u'额外允许评论的用户'
- self.fields['commentuin'].required=False
- if 'instance' in kwargs.keys():
- logger.debug(repr(kwargs['instance'].readuin.all()))
- self.fields['commentuin'].queryset=kwargs['instance'].commentuin.all()
- else:
- self.fields['commentuin'].queryset=User.objects.none()
- self.fields['commentuex'].label=u'额外不允许评论的用户'
- self.fields['commentuex'].required=False
- if 'instance' in kwargs.keys():
- logger.debug(repr(kwargs['instance'].readuin.all()))
- self.fields['commentuex'].queryset=kwargs['instance'].commentuex.all()
- else:
- self.fields['commentuex'].queryset=User.objects.none()
|