class CreateIdcForm(forms.Form): """创建业务验证""" virIP = fields.GenericIPAddressField(required=True, widget=widgets.TextInput(attrs={'class': 'form-inline'}), error_messages={ 'required': '此项不能为空', 'invalid': '请输入正确的IP格式' }) physicalIP = fields.GenericIPAddressField(required=True, widget=widgets.TextInput(attrs={'class': 'form-inline'}), error_messages={'required': '此项不能为空', 'invalid': '请输入正确的IP格式' }) application = fields.CharField(required=True, widget=widgets.TextInput(attrs={'class': 'form-inline'}), error_messages={'required': '此项不能为空'}) port = fields.IntegerField(required=False, widget=widgets.TextInput(attrs={'class': 'form-inline'}), error_messages={'invalid': '请输入正确的端口格式'} ) component = fields.CharField(required=True, widget=widgets.TextInput(attrs={'class': 'form-inline'}), error_messages={ 'required': '此项不能为空', }) Bussiness_idc = fields.ChoiceField( choices=models.Bussiness.objects.values_list('id', 'name'), # choices=models.Idc.Bussiness_idc_id.objects.values_list('id','name'), widget=widgets.Select ) fuzai = fields.ChoiceField( choices=models.Idc.type_Lalancing, widget=widgets.Select ) principal = fields.CharField(required=True, widget=widgets.TextInput(attrs={'class': 'form-inline'}), error_messages={ 'required': '此项不能为空', }) note = fields.CharField(required=False, widget=widgets.TextInput(attrs={'class': 'form-inline'}), ) """业务表还有加自动更新""" def __init__(self, *args, **kwargs): super(CreateIdcForm, self).__init__(*args, **kwargs) self.fields['Bussiness_idc'].choices = models.Bussiness.objects.values_list('id', 'name')
class NetworkForm(forms.Form): addrname = fields.GenericIPAddressField( required=True, error_messages={'required': '地址不能为空','invalid': '必须输入ipv4地址'}, widget=widgets.TextInput(attrs={'class':'form-control','style':'width: 60%;'}) ) gw_addrname = fields.GenericIPAddressField( required=True, error_messages={'required': '网关不能为空','invalid': '必须输入ipv4地址'}, widget=widgets.TextInput(attrs={'class':'form-control','style':'width: 60%;'}) )
class Hostname(Form): ip = fields.GenericIPAddressField( max_length=15, min_length=11, label='主机IP', widget=widgets.TextInput(attrs={ 'class': 'form-control', 'placeholder': '192.168.22.100' }), error_messages={ 'required': '不能为空', 'min_length': '最小为11个字符', 'max_length': '最多为15个字符', }) kernel = fields.CharField( max_length=24, min_length=4, label='主机系统', widget=widgets.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Centos7' }), error_messages={ 'required': '不能为空', 'min_length': '最小为4个字符', 'max_length': '最多为24个字符', })
class HostForm(forms.Form): ip = fields.GenericIPAddressField( required=True, error_messages={ 'required': '不能为空', 'invalid': '格式错误' }, widget=widgets.TextInput(attrs={'class': 'form-control'}), ) port = fields.IntegerField( required=True, error_messages={ 'required': '不能为空', 'invalid': '格式错误' }, widget=widgets.TextInput(attrs={'class': 'form-control'}), ) firm_id = fields.IntegerField(required=True, error_messages={'required': '不能为空'}, widget=widgets.Select( attrs={'class': 'form-control'}, choices=models.Firm.objects.values_list( 'id', 'firm_nam'), )) def __init__(self, *args, **kwargs): super(HostForm, self).__init__(*args, **kwargs) self.fields[ 'firm_id'].widget.choices = models.Firm.objects.values_list( 'id', 'firm_nam')
class HostForm(Form): hostname = fields.CharField( required=True, error_messages={'required': '主机名不能为空'}, widget=widgets.TextInput(attrs={'class': 'form-control'})) host_ip = fields.GenericIPAddressField( required=True, error_messages={ 'required': 'ip不能为空', 'invalid': 'ip格式错误' }, widget=widgets.TextInput(attrs={'class': 'form-control'})) ssh_port = fields.CharField( required=True, error_messages={ 'required': '端口不能为空', 'invalid': '端口格式错误' }, widget=widgets.TextInput(attrs={'class': 'form-control'})) project_name = fields.CharField( required=False, error_messages={ 'required': '项目不能为空', 'invalid': '项目错误' }, widget=widgets.TextInput(attrs={'class': 'form-control'})) sl_id = fields.ChoiceField(choices=[], widget=widgets.Select( attrs={'class': 'form-control'}, )) def __init__(self, *args, **kwargs): super(HostForm, self).__init__(*args, **kwargs) self.fields['sl_id'].choices = models.Service_Line.objects.values_list( 'id', 'service_line_name')
class CreateServerForm(django_forms.Form): username = django_fields.CharField( label='主机名', min_length=4, max_length=20, widget=widgets.TextInput(attrs={'id': 'username'}), error_messages={ 'required': '主机名不能为空', 'min_length': '主机名长度不能小于4个字符', 'max_length': '主机名长度不能大于20个字符' }) ext_ip = django_fields.GenericIPAddressField( label='外网ip', widget=widgets.TextInput(attrs={'id': 'ext_ip'}), ) int_ip = django_fields.GenericIPAddressField( label='内网ip', widget=widgets.TextInput(attrs={'id': 'int_ip'}), ) status = django_fields.ChoiceField( widget=widgets.Select(choices=[], attrs={'id': 'status'}), label='状态', ) def clean(self): clean_data = super(CreateServerForm, self).clean() username = clean_data.get('username') ext_ip = clean_data.get('ext_ip') int_ip = clean_data.get('int_ip') if models.Base.objects.filter(hostname=username): raise ValidationError(message='主机名已存在', code='invalid') if models.Base.objects.filter(ext_ip=ext_ip): raise ValidationError(message='外网IP已存在', code='invalid') if models.Base.objects.filter(int_ip=int_ip): raise ValidationError(message='内网IP已存在', code='invalid') def __init__(self, *args, **kwargs): super(CreateServerForm, self).__init__(*args, **kwargs) d_choices = list( map(lambda x: (x[0], x[1]), models.Base.status_choices)) self.fields['status'].choices = d_choices
class CreatAssetForm(Form): hostname = fields.CharField( required=True, min_length=1, max_length=20, error_messages={'required': '*主机名不能为空'}, widget=widgets.TextInput(attrs={'name': 'hostname'})) ip = fields.GenericIPAddressField( required=True, error_messages={ 'required': '*IP不能为空', 'invalid': '*IP格式错误' }, widget=widgets.TextInput(attrs={'name': 'ip'})) port = fields.CharField(required=True, min_length=1, max_length=5, error_messages={'required': '*端口不能为空'}, widget=widgets.TextInput(attrs={'name': 'port'})) model = fields.CharField(required=True, min_length=1, max_length=20, error_messages={'required': '*类型不能为空'}, widget=widgets.TextInput(attrs={'name': 'model'})) # fields.EmailField() # fields.GenericIPAddressField(protocol='ipv4') env_id = fields.ChoiceField( choices=[], widget=widgets.Select(attrs={'name': 'env_id'})) hardware = fields.CharField( required=True, min_length=1, max_length=20, error_messages={'required': '*硬件配置不能为空'}, widget=widgets.TextInput(attrs={'name': 'hardware'})) bussiness_id = fields.ChoiceField( required=True, choices=[], error_messages={'required': '*主机所属业务线不能为空'}, widget=widgets.Select(attrs={'name': 'bl_id'})) def __init__(self, *args, **kwargs): super(CreatAssetForm, self).__init__(*args, **kwargs) # self.fields已经有所有拷贝的字段 # print(Env.objects.values_list('id', 'name')) # print(UserInfo.objects.values_list('id', 'username')) self.fields['env_id'].choices = Env.objects.values_list('id', 'name') self.fields[ 'bussiness_id'].choices = BussinessLine.objects.values_list( 'id', 'name')
class ModifyForm(Form): hostname = fields.CharField(required=True, error_messages={'required': '主机名不能为空!'}) ip = fields.GenericIPAddressField(required=True, error_messages={ 'required': 'IP不能为空!', 'invalid': 'IP格式错误' }) port = fields.IntegerField(required=True, max_value=65535, min_value=1, error_messages={ 'required': '端口为非空数字,范围1-65535!', })
class IpList( Form, ): # id = fields.UUIDField(required=True) hostname = fields.CharField(required=True) ip = fields.GenericIPAddressField(required=True) product = fields.ChoiceField(choices=[('service', '服务器'), ('switch', '交换机'), ('router', '路由器')], widget=widgets.Select) group = fields.CharField(required=True) user = fields.CharField(required=True) passwd = fields.CharField(required=True) system = fields.ChoiceField(choices=[('linux', 'linux'), ('windows', 'windows')], widget=widgets.Select)
class HostForm(Form): host_name = fields.CharField() host_port = fields.IntegerField() host_addr = fields.GenericIPAddressField() release = fields.CharField() physical = fields.BooleanField() service = fields.CharField() disk = fields.IntegerField() memory = fields.IntegerField() business = fields.MultipleChoiceField(choices=[], widget=widgets.CheckboxSelectMultiple) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) choices = Business.objects.values_list('id', 'business_name') self.fields['business'].choices = choices self.fields['business'].initial = choices[0]
class HostForm(forms.Form): id = fields.IntegerField(required=False) host_name = fields.CharField(widget=widgets.Input(attrs={'class': 'form-control', 'id': False, 'style': 'width:60%;display:inline'})) state = fields.ChoiceField(choices=[(1, '在线'), (2, '下线'), ], widget=widgets.Select(attrs={'class': 'form-control', 'id': False, 'style': 'width:60%;display:inline'})) kind = fields.ChoiceField(choices=[(1, '服务器'), (2, '防火墙'), (3, '路由器'), (4, '交换机'), ], widget=widgets.Select(attrs={'class': 'form-control', 'id': False, 'style': 'width:60%;display:inline'})) group_id = fields.ChoiceField(widget=widgets.Select(attrs={'class': 'form-control', 'id': False, 'style': 'width:60%;display:inline'})) ip = fields.GenericIPAddressField(widget=widgets.Input(attrs={'class': 'form-control', 'id': False, 'style': 'width:60%;display:inline'})) username = fields.CharField(widget=widgets.Input(attrs={'class': 'form-control', 'id': False, 'style': 'width:60%;display:inline'})) password = fields.CharField(widget=widgets.PasswordInput(attrs={'class': 'form-control', 'id': False, 'style': 'width:60%;display:inline'})) # 判断主机名是否重复 def clean_host_name(self): obj_host_name = models.Host.objects.filter(host_name=self.cleaned_data['host_name']) if not obj_host_name: return self.cleaned_data['host_name'] else: if 'id' in self.cleaned_data.keys(): if obj_host_name.filter(id=self.cleaned_data['id']): return self.cleaned_data['host_name'] raise ValidationError('主机名已存在') # 判断ip是否重复 def clean_ip(self): obj_ip = models.Host.objects.filter(ip=self.cleaned_data['ip']) if not obj_ip: return self.cleaned_data['ip'] else: if 'id' in self.cleaned_data.keys(): if obj_ip.filter(id=self.cleaned_data['id']): return self.cleaned_data['ip'] raise ValidationError('ip已存在') # 不重启服务的情况下获取到最新的主机组列表 def __init__(self, *args, **kwargs): super(HostForm, self).__init__(*args, **kwargs) self.fields['group_id'].choices = models.HostGroup.objects.values_list('id', 'name')
class Host(forms.Form): ip = fields.GenericIPAddressField( required=True, error_messages={"required": 'IP不能为空'}, widget=widgets.TextInput(attrs={'placeholder': "请输入IP"})) hostname = fields.CharField( required=True, max_length=20, min_length=3, error_messages={ 'min_length': '密码长度不能小于6', 'max_length': '密码长度不能大于20', 'required': '密码不能为空' }, widget=widgets.TextInput(attrs={'placeholder': '请输入主机名'})) port = fields.IntegerField( required=True, error_messages={'required': '端口号必填'}, widget=widgets.TextInput(attrs={'placeholder': '请输入端口号'}))
class NodeForms(Form): node = fields.CharField(max_length=20, widget=widgets.Input(attrs={ "class": "form-control", "placeholder": "请输入节点名称" })) ip = fields.GenericIPAddressField(widget=widgets.Input( attrs={ "class": "form-control", "placeholder": "请输入节点IP地址" })) description = fields.CharField(max_length=4096, required=False, widget=widgets.Textarea( attrs={ "class": "form-control", "cols": "30", "rows": "10", "placeholder": "输入节点的描述" }))
class AddForm(forms.Form): new_lob = fields.CharField( required=True, error_messages={'required': '业务线名称不能为空'}, widget=widgets.TextInput(attrs={'class': 'form-control'})) ip = fields.GenericIPAddressField( required=True, error_messages={ 'required': 'IP不能为空', 'invalid': 'IP格式错误', }, widget=widgets.TextInput( attrs={'class': 'form-control'})) # 正则表达式,生成HTML标签 port = fields.CharField( required=True, min_length=2, max_length=5, error_messages={ 'required': '端口不能为空', 'min_length': "端口不能小于2个字符", }, widget=widgets.TextInput( attrs={'class': 'form-control'})) # 正则表达式,生成HTML标签 username = fields.CharField( required=True, min_length=6, max_length=18, error_messages={ 'required': '用户名不能为空', 'min_length': "用户名不能小于6个字符" }, widget=widgets.TextInput(attrs={'class': 'form-control'}) # 生成什么HTML插件 ) # 正则表达式,生成HTML标签 password = fields.CharField( required=True, error_messages={'required': '密码不能为空'}, widget=widgets.TextInput( attrs={'class': 'form-control'})) # 正则表达式,生成HTML标签
class AgentAdd(Form): AgentName = fields.CharField( max_length=16, error_messages={'required': '主机名不能为空', 'max_length': '主机名不能超过16位'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'id': 'AgentName', 'placeholder': "Name", }) ) AgentIP = fields.GenericIPAddressField( protocol='ipv4', error_messages={'required': 'IP地址不能为空', 'invalid': '地址格式不正确'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'id': 'AgentIP', 'placeholder': " 0.0.0.0", }) ) AgentPort = fields.IntegerField( max_value=65535, error_messages={'required': '端口不能为空', 'invalid': '端口范围错误', 'max_value': '最大端口范围为65535'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'id': 'AgentPort', 'placeholder': " 0", }) ) Api = fields.CharField( max_length=32, error_messages={'required': 'Api接口不能为空', 'max_length': 'Api接口不能超过32位'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'id': 'Api', 'placeholder': "/api/index.html", }) ) Key = fields.CharField( max_length=16, error_messages={'required': 'Key不能为空', 'max_length': 'Key不能超过16位'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'id': 'Key', 'placeholder': "Key", }) )
class HostsInfo(forms.Form): # instanceid = fields.CharField( # label="InstanceID:", # min_length=3, # max_length=32, # widget=widgets.TextInput(attrs={'class':'form-control','style':'width:50%;'}), # error_messages={'required':'必填','min_length':'大于3个字符','max_length':'小于32个字符'} # ) hostname = fields.CharField(label='Hostname:', min_length=5, max_length=32, widget=widgets.TextInput(attrs={ 'class': 'form-control', 'style': 'width:50%;' }), error_messages={ 'required': '必填', 'min_length': '大于5个字符', 'max_length': '小于32个字符' }) ip = fields.GenericIPAddressField( label='IP:', widget=widgets.TextInput(attrs={ 'class': 'form-control', 'style': 'width:50%;' }), error_messages={ 'required': '必填', 'ip': '请输入可以的IP' }) port = fields.IntegerField(label='Port:', widget=widgets.TextInput(attrs={ 'class': 'form-control', 'style': 'width:50%;' }), error_messages={'required': '必填'})
class Asset_Form(forms.Form): ip_add = fields.GenericIPAddressField(required=True, error_messages={ "GenericIPAddressField": "IP地址格式不对", "required": "IP地址不能为空" }, initial="请输入IP地址") server_name = fields.CharField(max_length=32, required=True, error_messages={ "required": "承载服务不能为空", "max_length": "服务名称不能超过32位", }, widget=widgets.Select()) cpu = fields.CharField() mem = fields.CharField() hard = fields.CharField() region = fields.CharField(required=True, error_messages={"required": "所在区域不能为空"}) position = fields.CharField(required=True, error_messages={"required": "具体地址不能为空"}) cabinet = fields.CharField(required=True, error_messages={"required": "具体机柜位置不能为空"}) shelf_time = fields.DateField(required=True, error_messages={ "required": "上架时间不能为空", "DateField": "时间格式不对" }, label_suffix="注:格式 2014-08-01") description = fields.CharField(required=False, widget=forms.Textarea) def __init__(self, *args, **kwargs): super(Asset_Form, self).__init__(*args, **kwargs) self.fields["server_name"].widget.choices = \ Server.objects.values_list("id", "server_name")
class ip_asset_form(forms.Form): name = fields.CharField( required=True, max_length=64, widget=widgets.TextInput(attrs={'class': 'form-control'}), #error_messages={}, label='名称(网络号):', ) asset_code = fields.CharField( required=True, max_length=64, widget=widgets.TextInput(attrs={'class': 'form-control'}), #error_messages={}, label='资产编码:', ) netmask = fields.GenericIPAddressField( required=True, widget=widgets.TextInput(attrs={'class': 'form-control'}), #error_messages={}, label='掩码:', # initial='请输入掩码', ) first_ip = fields.GenericIPAddressField( required=True, widget=widgets.TextInput(attrs={'class': 'form-control'}), #error_messages={}, label='开始IP:', # initial='请输入开始IP', ) end_ip = fields.GenericIPAddressField( required=True, widget=widgets.TextInput(attrs={'class': 'form-control'}), #error_messages={}, label='结束IP:', # initial='请输入结束IP', ) manufacturer = ModelChoiceField( queryset=models.Manufacturer.objects.all(), widget=widgets.Select(attrs={'class': 'form-control'}), label='运营商:', initial=1) # status = ModelChoiceField( # queryset=dict(models.Asset.asset_status), # widget=widgets.Select(attrs={'class':'form-control'}), # label='状态:', # initial=0 # ) tag = ModelChoiceField( queryset=models.Tag.objects.all(), widget=widgets.Select(attrs={'class': 'form-control'}), label='标签', initial=0) idc = ModelChoiceField( queryset=models.IDC.objects.all(), widget=widgets.Select(attrs={'class': 'form-control'}), label='所属机房', initial=0) comments = fields.TextInput() admin = ModelChoiceField( queryset=models.User.objects.all(), widget=widgets.Select(attrs={'class': 'form-control'}), label='管理人', initial=1, ) approved_by = ModelChoiceField( queryset=models.User.objects.all(), widget=widgets.Select(attrs={'class': 'form-control'}), label='审批者', initial=1, )
class HostForm(Form): """ host表单验证 """ def __init__(self, *args, **kwargs): super(HostForm, self).__init__(*args, **kwargs) self.fields['service_id'].choices = models.Services.objects.values_list('id', 'name') self.fields['idc_id'].choices = models.Idc.objects.values_list('id', 'idc') self.fields['status_id'].choices = models.Status.objects.values_list('id', 'status') self.fields['owner_id'].choices = models.User.objects.values_list('id', 'username') hostname = fields.CharField( required=True, label=u'主机名', max_length=32, error_messages={'required': '主机名不能为空!'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': u'主机名'}) ) private_ip = fields.GenericIPAddressField( required=True, label=u'内网IP', max_length=32, # null=True, error_messages={'required': 'IP不合法!'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': u'内网IP'}) ) public_ip = fields.GenericIPAddressField( required=True, label=u'公网IP', max_length=32, # null=True, error_messages={'required': 'IP不合法!'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': u'公网IP'}) ) os = fields.CharField( required=True, label=u'OS', max_length=16, # default="ubuntu 16.04", error_messages={'required': 'os类型错误!'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': u'os'}) ) cpu = fields.CharField( required=True, label=u'cpu', max_length=10, error_messages={'required': '格式错误!'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': u'cpu'}) ) mem = fields.CharField( required=True, label=u'mem', max_length=16, error_messages={'required': '格式错误!'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': u'mem'}) ) disk = fields.CharField( required=True, label=u'disk', max_length=16, error_messages={'required': '格式错误!'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': u'disk'}) ) service_id = fields.ChoiceField( required=True, label=u'业务线', choices=[], error_messages={'required': '业务线类型错误!'}, widget=widgets.Select(attrs={'class': 'form-control'}) ) idc_id = fields.ChoiceField( required=True, label=u'IDC', choices=[], error_messages={'required': 'IDC类型错误!'}, widget=widgets.Select(attrs={'class': 'form-control'}) ) status_id = fields.ChoiceField( required=True, label=u'主机状态', choices=[], error_messages={'required': '主机状态类型错误!'}, widget=widgets.Select(attrs={'class': 'form-control'}) ) owner_id = fields.ChoiceField( required=True, label=u'负责人', choices=[], error_messages={'required': '负责人未知错误!'}, widget=widgets.Select(attrs={'class': 'form-control'}) )
class EditHostForm(forms.Form): """修改主机表单验证类""" hostname = fields.CharField( max_length=64, error_messages={ 'required': '不能为空', 'invalid': '格式错误', 'max_length': '最大长度不能大于64位' }, label='主机名称', help_text='必填项,Agent与cmdb配置hostname一致', widget=widgets.TextInput(attrs={'class': 'form-control'})) ip = fields.GenericIPAddressField( error_messages={ 'required': '不能为空', 'invalid': '格式错误' }, label='IP地址', help_text='必填项', widget=widgets.TextInput(attrs={'class': 'form-control'})) host_group_id = fields.MultipleChoiceField( required=False, error_messages={'invalid': '格式错误'}, label='主机组', choices=[], widget=widgets.SelectMultiple(attrs={ 'class': 'form-control', 'size': 10 })) template_id = fields.MultipleChoiceField( required=False, error_messages={'invalid': '格式错误'}, label='模板', choices=[], widget=widgets.SelectMultiple(attrs={ 'class': 'form-control', 'size': 10 })) monitor_by = fields.CharField( error_messages={'invalid': '格式错误'}, label='监控方式', help_text='必填项', widget=widgets.Select(choices=[('agent', '客户端'), ('snmp', 'SNMP'), ('api', 'API')], attrs={'class': 'form-control'})) status = fields.IntegerField(error_messages={'invalid': '格式错误'}, label='主机状态', help_text='必填项', widget=widgets.Select( choices=[(3, '未知')], attrs={'class': 'form-control'})) host_alive_check_interval = fields.IntegerField( error_messages={'invalid': '格式错误'}, label='主机存活检测间隔(s)', help_text='必填项', initial=30, widget=widgets.NumberInput(attrs={'class': 'form-control'})) memo = fields.CharField( required=False, error_messages={'invalid': '格式错误'}, label='备注', widget=widgets.Textarea(attrs={'class': 'form-control'})) def __init__(self, *args, **kwargs): super(EditHostForm, self).__init__(*args, **kwargs) self.hid = self.initial['hid'] host_obj = models.Host.objects.filter(id=self.hid).first() self.fields['hostname'].initial = host_obj.hostname self.fields['ip'].initial = host_obj.ip self.fields[ 'host_group_id'].choices = models.HostGroup.objects.values_list( 'id', 'name') self.fields['host_group_id'].initial = [] query_set = models.Host.objects.filter( id=self.hid).values('host_groups__id') for item in query_set: self.fields['host_group_id'].initial.append( item['host_groups__id']) self.fields[ 'template_id'].choices = models.Template.objects.values_list( 'id', 'name') self.fields['template_id'].initial = [] query_set = models.Host.objects.filter( id=self.hid).values('templates__id') for item in query_set: self.fields['template_id'].initial.append(item['templates__id']) self.fields['monitor_by'].initial = host_obj.monitor_by self.fields['status'].initial = host_obj.status self.fields[ 'host_alive_check_interval'].initial = host_obj.host_alive_check_interval self.fields['memo'].initial = host_obj.memo def clean_hostname(self): hostname = self.cleaned_data.get('hostname') count = models.Host.objects.exclude(id=self.hid).filter( hostname=hostname).count() if count: raise ValidationError(_('主机名%(hostname)s已存在'), code='invalid', params={'hostname': hostname}) else: return self.cleaned_data.get('hostname')
class ServerEditForm(forms.ModelForm): # def __init__(self,*args,**kwargs): # self.create_by = kwargs.pop('create_by') # super(ServerEditForm,self).__init__(*args,**kwargs) name = fields.CharField( label="资产名称", error_messages={'required': '资产名称不能为空'}, widget=widgets.Input(attrs={'class': "form-control"})) ip = fields.GenericIPAddressField( label="IP地址", error_messages={'required': 'IP地址不能为空'}, widget=widgets.Input( attrs={ 'class': 'form-control', 'data-inputmask': "'alias': 'ip'", 'data-mask': '' })) ssh_port = fields.IntegerField( label="SSH 端口", widget=widgets.Input(attrs={'class': 'form-control'})) ip2 = fields.GenericIPAddressField( label="公网IP地址", required=False, widget=widgets.Input( attrs={ 'class': 'form-control', 'data-inputmask': "'alias': 'ip'", 'data-mask': '' })) class Meta: model = Server # exclude = ('create_by') fields = [ 'name', 'ip', 'project', 'label', 'is_active', 'idc_name', 'ssh_user', 'ssh_port', 'ip2', 'comment' ] widgets = { 'project': forms.SelectMultiple(attrs={ 'class': 'form-control select2', 'data-placeholder': '业务组' }), 'label': forms.SelectMultiple(attrs={ 'class': 'form-control select2', 'data-placeholder': '标签' }), 'idc_name': forms.Select(attrs={'class': 'form-control select2'}), 'ssh_user': forms.SelectMultiple(attrs={ 'class': 'form-control select2', 'data-placeholder': '用户' }), 'comment': forms.Textarea(attrs={'class': 'form-control'}), } help_texts = { 'name': '* required', 'ip': '* required', 'port': '* required', }
class AssetForm(Form): sn = fields.CharField( max_length=64, required=True, ) hostname = fields.CharField(max_length=128) orgid = fields.CharField( validators=[RegexValidator(r'^[0-9]+$', 'Have to number')]) vendor = fields.CharField(max_length=32) disk = fields.CharField(max_length=32, required=True) mem = fields.CharField(max_length=32, required=True) cpu = fields.CharField(max_length=32, required=True) raid = fields.CharField() product_name = fields.CharField(max_length=64) plans = fields.CharField(max_length=32, required=True) owner = fields.CharField(max_length=64, required=True) tags = fields.CharField(max_length=64, required=True) idc = fields.CharField(max_length=32, required=True) rack = fields.CharField(max_length=64, required=True) int_ip = fields.GenericIPAddressField(max_length=64, required=True) ext_ip = fields.GenericIPAddressField(max_length=64, required=True) ilo_ip = fields.GenericIPAddressField(max_length=64, required=True) os = fields.CharField(max_length=32, required=True) mac = fields.CharField(max_length=64, required=True) create_at = fields.CharField( max_length=8, validators=[RegexValidator(r'^\d+$', 'Have to number')]) rack_unit = fields.IntegerField() note = fields.CharField(max_length=128) status = fields.CharField() def clean_rack_unit(self): value = self.cleaned_data.get('rack_unit', None) if value: value = int(value) if value > 0 and value < 13: return value elif not value: return value else: raise ValidationError('The rack unit is not correct') def clean_rack(self): value = self.cleaned_data.get('rack', None) if not value: return value elif value and Rack.objects.filter(name=value).count(): return value else: raise ValidationError('Not has this rack') def clean_plans(self): value = self.cleaned_data.get('plans') if value and Plans.objects.filter(name=value).count(): return value elif not value: return value else: raise ValidationError('There is no such data') def clean_vendor(self): value = self.cleaned_data.get('vendor') ret = Vendor.objects.filter(name=value) if not ret: raise ValidationError('vendor not find', 'invalid') return value def clean_raid(self): value = self.cleaned_data.get('raid') raid_choices = ('RAID5', 'RAID0', 'RAID1', 'RAID10', 'RAID6', 'DIRECT') if value not in raid_choices: raise ValidationError('Raid choices is error', 'invalid') return value def clean_status(self): value = self.cleaned_data.get('status', None) status_choices = ('RUNNING', 'MAINTANCING', 'STOCK') if str(value).upper() not in status_choices: raise ValidationError('status is error') return value def clean_idc(self): value = self.cleaned_data['idc'] if not value: return value elif value and IDC.objects.filter(name=value).count(): return value else: raise ValidationError('Invalid IDC name') def clean_create_at(self): value = self.cleaned_data.get('create_at', None) value = value.replace('-', '') value = value.replace('/', '') if re.match(r'^20[01]{1}\d{1}[01]{1}\d{01}', value): value = value[:6] elif re.match(r'^19\d{2}[01]{1}\d{1}$', value): value = value[:6] elif not value: return value else: raise ValidationError('datetime is error', 'invalid') return value def clean_mac(self): value = self.cleaned_data['mac'] mac = re.match(r'\w{2}:\w{2}:\w{2}:\w{2}:\w{2}:\w{2}', value) if value and mac: return mac.group() if not value: return value else: raise ValidationError('mac is format error', 'invalid') def clean(self): sn = self.cleaned_data.get('sn') orgid = self.cleaned_data.get('orgid') ret = Asset.objects.filter(sn=sn, orgid=orgid) if ret: raise ValidationError('Data is duplicated', 'invalid') return self.cleaned_data
class ApplicationEditForm(forms.Form): """编辑应用表单认证""" name = fields.CharField( max_length=64, error_messages={ 'required': '不能为空', 'invalid': '格式错误', 'max_length': '最大长度不能大于64位' }, label='应用名称', help_text='必填', widget=widgets.TextInput(attrs={'class': 'form-control'})) path_name = fields.CharField( max_length=64, error_messages={ 'required': '不能为空', 'invalid': '格式错误', 'max_length': '最大长度不能大于64位' }, label='应用目录名', help_text='必填', widget=widgets.TextInput(attrs={'class': 'form-control'})) ip = fields.GenericIPAddressField( error_messages={ 'required': '不能为空', 'invalid': '格式错误' }, label='IP地址', help_text='必填', widget=widgets.TextInput(attrs={'class': 'form-control'})) project_id = fields.IntegerField(error_messages={ 'required': '不能为空', 'invalid': '格式错误' }, label='所属项目', help_text='必填', widget=widgets.Select( choices=[], attrs={'class': 'form-control'})) def __init__(self, *args, **kwargs): super(ApplicationEditForm, self).__init__(*args, **kwargs) self.aid = self.initial['aid'] application_obj = models.Application.objects.filter( id=self.aid).first() self.fields['name'].initial = application_obj.name self.fields['path_name'].initial = application_obj.path_name self.fields['ip'].initial = application_obj.ip self.fields['project_id'].widget.choices = list( models.Project.objects.values_list('id', 'name')) self.fields['project_id'].initial = [application_obj.project_id] def clean_name(self): name = self.cleaned_data.get('name') count = models.Application.objects.exclude(id=self.aid).filter( name=name).count() if count: raise ValidationError(_('应用名称[%(name)s]已存在'), code='invalid', params={'name': name}) return name def clean_project_id(self): project_id = self.cleaned_data.get('project_id') count = models.Project.objects.filter(id=project_id).count() if not count: raise ValidationError(_('所属项目[%(project_id)s]不存在'), code='invalid', params={'project_id': project_id}) return project_id
class HostAppend(Form): host_id = fields.CharField( widget=widgets.TextInput(attrs={'style': 'display: none;'}), required=False, label=id) host_ip = fields.GenericIPAddressField( error_messages={ 'required': '主机地址不能为空', 'invalid': 'IP地址不合法' }, protocol='ipv4', label='主机地址', widget=widgets.TextInput(attrs={'class': 'form-control'})) host_user = fields.CharField( label='主机用户', widget=widgets.TextInput(attrs={'class': 'form-control'}), strip=True) host_pass = fields.CharField( label='主机密码', widget=widgets.TextInput(attrs={'class': 'form-control'}), strip=True) host_port = fields.IntegerField( label='主机端口', initial=22, max_value=65530, min_value=22, widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={ 'required': 'host_port: 请输入有效端口号', 'invalid': '请输入有效端口号', 'min_value': '请输入一个大于或等于1025的端口号', 'max_value': '请输入一个小于或等于65530的端口号' }) app_type = fields.CharField(widget=widgets.Select(choices=[]), label='应用类型', error_messages={'required': '应用类型不能为空'}, strip=True) host_group = fields.CharField(widget=widgets.Select(choices=[]), label='主机组', error_messages={'required': '主机组不能为空'}, strip=True) app_user = fields.CharField( required=False, label='应用用户', widget=widgets.TextInput(attrs={'class': 'form-control'}), strip=True) app_pass = fields.CharField( required=False, label='应用密码', widget=widgets.TextInput(attrs={'class': 'form-control'}), strip=True) app_port = fields.IntegerField( required=False, label='应用端口', max_value=65530, min_value=1025, widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={ 'required': 'app_port: 请输入有效端口号', 'invalid': '请输入有效端口号', 'min_value': '请输入一个大于或等于1025的端口号', 'max_value': '请输入一个小于或等于65530的端口号' }) def __init__(self, *args, **kwargs): super(HostAppend, self).__init__(*args, **kwargs) self.fields[ 'host_group'].widget.choices = models.HostGroup.objects.values_list( 'id', 'host_group_jd') self.fields[ 'app_type'].widget.choices = models.AppType.objects.values_list( 'id', 'app_name')
class CreateBussiness(forms.Form): """业务验证""" business_chooics = fields.ChoiceField( choices=models.Bussiness.business_type, label="业务线", required=True, error_messages={"required": "此选项必填"}, widget=widgets.Select(attrs={'class': 'form-control'})) virIP = fields.GenericIPAddressField( required=True, label="业务IP", widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={ 'required': "此项不能为空", 'invalid': '请输入正确的IP格式' }) application = fields.CharField( required=True, label="业务名称", widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={ 'required': "此项不能为空", }) port = fields.IntegerField( required=False, label="业务端口", widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={'invalid': '请输入正确的端口格式'}) component = fields.CharField( required=True, label="业务用途", min_length=5, max_length=120, widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={ 'required': '此项不能为空', 'min_length': '不能少于5个字符', 'max_length': '不能超过20个字符' }) principal = fields.CharField( required=True, label="负责人", widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={ 'required': '此项不能为空', }) note = fields.CharField( required=False, label="备注", max_length="10", widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={"max_length": "最大不超过10个字符"}) def clean_business_chooics(self): """选择业务线验证""" value = self.cleaned_data.get('business_chooics') if value == '0': raise ValidationError("请选择业务线") return value