Exemple #1
0
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')
Exemple #2
0
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%;'})
    )
Exemple #3
0
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个字符',
        })
Exemple #4
0
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')
Exemple #5
0
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')
Exemple #6
0
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
Exemple #7
0
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')
Exemple #8
0
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!',
                               })
Exemple #9
0
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)
Exemple #10
0
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]
Exemple #11
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')
Exemple #12
0
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': '请输入端口号'}))
Exemple #13
0
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": "输入节点的描述"
                                       }))
Exemple #14
0
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标签
Exemple #15
0
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",
                                        })
    )
Exemple #16
0
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': '必填'})
Exemple #17
0
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")
Exemple #18
0
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,
    )
Exemple #19
0
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'})
    )
Exemple #20
0
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')
Exemple #21
0
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',
        }
Exemple #22
0
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
Exemple #24
0
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')
Exemple #25
0
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