123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- from django import forms
- from captcha.fields import CaptchaField
- from .models import Organizer, CheckIn
- from _datetime import date
- import re
- class RegForm (forms.Form):
- updateFlag = forms.CharField(required=False, widget=forms.HiddenInput())
- originalMobile = forms.IntegerField(required=False, widget=forms.HiddenInput())
- username = forms.CharField(max_length=14, min_length=4, required=True, label='用户名(请输入字母数字及下划线,至少四位)*',
- error_messages={'required': '登录名不能为空。'}, widget=forms.TextInput(attrs={'style': 'width:100%'}))
- nickname = forms.CharField(max_length=14, min_length=2, required=True, label='昵称*',
- error_messages={'required': '昵称不能为空。'}, widget=forms.TextInput(attrs={'style': 'width:100%'}))
- email = forms.EmailField(label='电子邮件*', error_messages={'invalid': '请输入正确的邮件地址。'}, widget=forms.EmailInput(attrs={'style': 'width:100%'}))
- mobile = forms.IntegerField(min_value=13000000000, max_value=18999999999, required=True, label='手机号码*',
- error_messages={'required': '手机号码不能为空。'}, widget=forms.NumberInput(attrs={'style': 'width:100%'}))
- psw1 = forms.CharField(min_length=6, max_length=12, required=True, label='请输入密码(6-12位)*',
- error_messages={'required': '密码不能为空。', 'invalid': '密码长度不够。'}, widget=forms.PasswordInput(attrs={'style': 'width:100%'}))
- psw2 = forms.CharField(min_length=6, max_length=12, required=True, label='再次输入你的密码*', widget=forms.PasswordInput(attrs={'style': 'width:100%'}))
- captcha = CaptchaField(label='验证码*')
- def clean(self):
- cleaned_data = self.cleaned_data
- if cleaned_data['updateFlag'] != 'update': # 如果更新用户数据updateFlag的值为update
- if not re.match('[A-Za-z0-9_]+', cleaned_data['username']):
- raise forms.ValidationError(u'请输入字母数字及下划线,至少四位')
- if (cleaned_data['updateFlag'] == 'update' and cleaned_data['psw1'] == ''): # 如果更新用户数据username是disabled,不会post上来
- pass
- else:
- if len(cleaned_data['psw1']) < 6:
- raise forms.ValidationError(u'密码长度至少6位。')
- if cleaned_data['psw1'] != cleaned_data['psw2']:
- raise forms.ValidationError(u'两次输入的密码不一致。')
- try:
- captcha = cleaned_data['captcha']
- except Exception as e:
- print(e)
- raise forms.ValidationError(u'验证码错误')
- organizer = Organizer()
- if cleaned_data['updateFlag'] == 'update': # 如果更新用户数据updateFlag的值为update
- pass
- else:
- organizer.username = cleaned_data['username']
- if Organizer.sameUsername(organizer):
- raise forms.ValidationError(u'这个用户名已经注册过了,请换一个。')
- if cleaned_data['updateFlag'] == 'update' and cleaned_data['mobile'] == cleaned_data['originalMobile']: # 如果更新用户数据updateFlag的值为update
- pass
- else:
- organizer.mobile = cleaned_data['mobile']
- if Organizer.sameMobile(organizer):
- raise forms.ValidationError(u'这个手机号码已经注册过了,请换一个。')
- del organizer
- return cleaned_data # 注意此处一定要return clean_data,否则会报错
- class CheckInForm(forms.Form):
- # o_ID = forms.CharField(widget=forms.HiddenInput())
- description = forms.CharField(max_length=256, label='问卷标题', widget=forms.TextInput(attrs={'style': 'width:100%', 'class': 'form-control'}))
- startTime = forms.DateField(label='问卷收集开始时间',
- widget=forms.DateTimeInput(attrs={'style': 'width:100%', 'id': 'datepicker', 'class': 'form-control', 'type': 'date', 'value': date.today().isoformat()}))
- endTime = forms.DateField(required=False, label='问卷收集结束时间(如果不设定结束时间,请不要输入)',
- widget=forms.DateTimeInput(attrs={'style': 'width:100%', 'id': 'datepicker2', 'class': 'form-control', 'type': 'date'}))
- maxNum = forms.IntegerField(label='问卷收集限制人数(如无限制,无需输入)', required=False, min_value=1, widget=forms.NumberInput(attrs={'style': 'width:100%', 'class': 'form-control'}))
- # creatorConfirm = forms.ChoiceField(label='问卷收集是否需要组织者当场确认?', choices=[('0', '无需验证'), ('1', '点击确认')], required=False, widget=forms.Select(attrs={'style': 'width:100%', 'class': 'form-control'}))
- # captcha = forms.BooleanField(label='反馈提交时,是否需要输入验证码?', required=False,
- # widget=forms.CheckboxInput(attrs={'data-toggle': "tooltip", 'title': "参与者输入验证码可以确保签到有效性。"}))
- def clean(self):
- cleaned_data = self.cleaned_data
- if cleaned_data['endTime']:
- timeDelta = cleaned_data['endTime'] - cleaned_data['startTime']
- if timeDelta.days < 0:
- raise forms.ValidationError(u'结束时间不能早于开始时间。')
- return cleaned_data # 注意此处一定要return clean_data,否则会报错
- class CaptchaForm(forms.Form):
- myCaptcha = CaptchaField(label='验证码')
- def clean(self):
- cleaned_data = self.cleaned_data
- try:
- captcha = cleaned_data['myCaptcha']
- except Exception as e:
- print(e)
- raise forms.ValidationError(u'验证码错误')
- return cleaned_data # 注意此处一定要return clean_data,否则会报错
- class ForgetPSWForm(forms.Form):
- username = forms.CharField(max_length=14, min_length=2, required=True, label='用户名',
- error_messages={'required': '登录名不能为空。'}, widget=forms.TextInput(attrs={'style': 'width:100%'}))
- mobile = forms.IntegerField(min_value=13000000000, max_value=18999999999, required=True, label='手机号码',
- error_messages={'required': '手机号码不能为空。'}, widget=forms.NumberInput(attrs={'style': 'width:100%'}))
- captcha = CaptchaField(label='验证码', widget=forms.TextInput(attrs={'style':'width:100%'}))
- def clean(self):
- cleaned_data = self.cleaned_data
- try:
- captcha = cleaned_data['captcha']
- except Exception as e:
- print(e)
- raise forms.ValidationError(u'验证码错误')
- return cleaned_data # 注意此处一定要return clean_data,否则会报错
|