Ejemplo n.º 1
0
    def __init__(self, *args, **kwargs):
        super(IPMIForm, self).__init__(*args, **kwargs)
        self.fields['dhcp'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric('
            '"id_dhcp", ["id_ipv4address", "id_ipv4netmaskbit"]);'
        )

        channels = []
        _n = notifier()
        for i in range(1, 17):
            try:
                data = _n.ipmi_get_lan(channel=i)
            except:
                continue

            if not data:
                continue

            channels.append((i, i))

        self.fields['channel'] = forms.ChoiceField(
            choices=channels,
            label=_('Channel'),
        )
        key_order(self, 0, 'channel', instance=True)
Ejemplo n.º 2
0
 def __init__(self, *args, **kwargs):
     if 'instance' in kwargs:
         ins = kwargs.get('instance')
         if ins.smarttest_daymonth == "..":
             ins.smarttest_daymonth = '*/1'
         elif ',' in ins.smarttest_daymonth:
             days = [int(day) for day in ins.smarttest_daymonth.split(',')]
             gap = days[1] - days[0]
             everyx = list(range(0, 32, gap))[1:]
             if everyx == days:
                 ins.smarttest_daymonth = '*/%d' % gap
         if ins.smarttest_hour == "..":
             ins.smarttest_hour = '*/1'
         elif ',' in ins.smarttest_hour:
             hours = [int(hour) for hour in ins.smarttest_hour.split(',')]
             gap = hours[1] - hours[0]
             everyx = list(range(0, 24, gap))
             if everyx == hours:
                 ins.smarttest_hour = '*/%d' % gap
     super(SMARTTestForm, self).__init__(*args, **kwargs)
     key_order(self, 0, 'smarttest_disks', instance=True)
     mchoicefield(self, 'smarttest_month', [
         1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
     ])
     mchoicefield(self, 'smarttest_dayweek', [
         1, 2, 3, 4, 5, 6, 7
     ])
Ejemplo n.º 3
0
 def __init__(self, *args, **kwargs):
     if 'instance' in kwargs:
         ins = kwargs.get('instance')
         if ins.smarttest_daymonth == "..":
             ins.smarttest_daymonth = '*/1'
         elif ',' in ins.smarttest_daymonth:
             days = [int(day) for day in ins.smarttest_daymonth.split(',')]
             gap = days[1] - days[0]
             everyx = list(range(0, 32, gap))[1:]
             if everyx == days:
                 ins.smarttest_daymonth = '*/%d' % gap
         if ins.smarttest_hour == "..":
             ins.smarttest_hour = '*/1'
         elif ',' in ins.smarttest_hour:
             hours = [int(hour) for hour in ins.smarttest_hour.split(',')]
             gap = hours[1] - hours[0]
             everyx = list(range(0, 24, gap))
             if everyx == hours:
                 ins.smarttest_hour = '*/%d' % gap
     super(SMARTTestForm, self).__init__(*args, **kwargs)
     self.fields['smarttest_all_disks'].widget.attrs['onChange'] = (
         'toggleGeneric("id_smarttest_all_disks", ["id_smarttest_disks"], false);'
     )
     key_order(self, 1, 'smarttest_disks', instance=True)
     self.fields['smarttest_disks'].required = False
     mchoicefield(self, 'smarttest_month', [
         1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
     ])
     mchoicefield(self, 'smarttest_dayweek', [
         1, 2, 3, 4, 5, 6, 7
     ])
Ejemplo n.º 4
0
 def __init__(self, *args, **kwargs):
     if "instance" in kwargs:
         kwargs.setdefault("initial", {})
         try:
             kwargs["initial"]["encryption_password"] = notifier().pwenc_decrypt(
                 kwargs["instance"].encryption_password)
         except Exception:
             pass
         try:
             kwargs["initial"]["encryption_salt"] = notifier().pwenc_decrypt(kwargs["instance"].encryption_salt)
         except Exception:
             pass
     super(CloudSyncForm, self).__init__(*args, **kwargs)
     key_order(self, 2, 'attributes', instance=True)
     mchoicefield(self, 'month', [
         1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
     ])
     mchoicefield(self, 'dayweek', [
         1, 2, 3, 4, 5, 6, 7
     ])
     if self.instance.id:
         self.fields['attributes'].initial = {
             'credential': self.instance.credential.id,
         }
         self.fields['attributes'].initial.update(self.instance.attributes)
Ejemplo n.º 5
0
 def __init__(self, *args, **kwargs):
     if "instance" in kwargs:
         kwargs.setdefault("initial", {})
         try:
             kwargs["initial"]["encryption_password"] = notifier().pwenc_decrypt(
                 kwargs["instance"].encryption_password)
         except Exception:
             pass
         try:
             kwargs["initial"]["encryption_salt"] = notifier().pwenc_decrypt(kwargs["instance"].encryption_salt)
         except Exception:
             pass
     super(CloudSyncForm, self).__init__(*args, **kwargs)
     key_order(self, 2, 'attributes', instance=True)
     mchoicefield(self, 'month', [
         1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
     ])
     mchoicefield(self, 'dayweek', [
         1, 2, 3, 4, 5, 6, 7
     ])
     if self.instance.id:
         self.fields['attributes'].initial = {
             'credential': self.instance.credential.id,
         }
         self.fields['attributes'].initial.update(self.instance.attributes)
Ejemplo n.º 6
0
 def __init__(self, *args, **kwargs):
     if 'instance' in kwargs:
         ins = kwargs.get('instance')
         if ins.smarttest_daymonth == "..":
             ins.smarttest_daymonth = '*/1'
         elif ',' in ins.smarttest_daymonth:
             days = [int(day) for day in ins.smarttest_daymonth.split(',')]
             gap = days[1] - days[0]
             everyx = list(range(0, 32, gap))[1:]
             if everyx == days:
                 ins.smarttest_daymonth = '*/%d' % gap
         if ins.smarttest_hour == "..":
             ins.smarttest_hour = '*/1'
         elif ',' in ins.smarttest_hour:
             hours = [int(hour) for hour in ins.smarttest_hour.split(',')]
             gap = hours[1] - hours[0]
             everyx = list(range(0, 24, gap))
             if everyx == hours:
                 ins.smarttest_hour = '*/%d' % gap
     super(SMARTTestForm, self).__init__(*args, **kwargs)
     self.fields['smarttest_all_disks'].widget.attrs['onChange'] = (
         'toggleGeneric("id_smarttest_all_disks", ["id_smarttest_disks"], false);'
     )
     key_order(self, 1, 'smarttest_disks', instance=True)
     self.fields['smarttest_disks'].required = False
     mchoicefield(self, 'smarttest_month',
                  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
     mchoicefield(self, 'smarttest_dayweek', [1, 2, 3, 4, 5, 6, 7])
Ejemplo n.º 7
0
 def __init__(self, *args, **kwargs):
     if 'instance' in kwargs:
         ins = kwargs.get('instance')
         if ins.smarttest_daymonth == "..":
             ins.smarttest_daymonth = '*/1'
         elif ',' in ins.smarttest_daymonth:
             days = [int(day) for day in ins.smarttest_daymonth.split(',')]
             gap = days[1] - days[0]
             everyx = list(range(0, 32, gap))[1:]
             if everyx == days:
                 ins.smarttest_daymonth = '*/%d' % gap
         if ins.smarttest_hour == "..":
             ins.smarttest_hour = '*/1'
         elif ',' in ins.smarttest_hour:
             hours = [int(hour) for hour in ins.smarttest_hour.split(',')]
             gap = hours[1] - hours[0]
             everyx = list(range(0, 24, gap))
             if everyx == hours:
                 ins.smarttest_hour = '*/%d' % gap
     super(SMARTTestForm, self).__init__(*args, **kwargs)
     key_order(self, 0, 'smarttest_disks', instance=True)
     mchoicefield(self, 'smarttest_month', [
         1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
     ])
     mchoicefield(self, 'smarttest_dayweek', [
         1, 2, 3, 4, 5, 6, 7
     ])
Ejemplo n.º 8
0
    def __init__(self, *args, **kwargs):
        super(iSCSITargetExtentForm, self).__init__(*args, **kwargs)
        key_order(self, 1, 'iscsi_target_extent_type', instance=True)

        if not self._api:
            self.fields['iscsi_target_extent_disk'] = forms.ChoiceField(
                choices=(),
                widget=forms.Select(attrs={'maxHeight': 200}),
                label=_('Device'),
                required=False,
            )
        else:
            self.fields['iscsi_target_extent_disk'] = forms.CharField(
                required=False,
            )

        key_order(self, 2, 'iscsi_target_extent_disk', instance=True)

        if self.instance.id:
            with client as c:
                e = self.instance.iscsi_target_extent_path
                exclude = [e] if not self._api else []

                disk_choices = list(c.call(
                    'iscsi.extent.disk_choices', exclude
                ).items())

                disk_choices.sort(key=lambda x: x[1])

            if self.instance.iscsi_target_extent_type == 'File':
                self.fields['iscsi_target_extent_type'].initial = 'File'
            else:
                self.fields['iscsi_target_extent_type'].initial = 'Disk'
            if not self._api:
                self.fields['iscsi_target_extent_disk'].choices = disk_choices
            if self.instance.iscsi_target_extent_type in ('ZVOL', 'HAST'):
                self.fields['iscsi_target_extent_disk'].initial = disk_choices
            else:
                self.fields['iscsi_target_extent_disk'].initial = self.instance.get_device()[5:]
            self._path = self.instance.iscsi_target_extent_path
            self._name = self.instance.iscsi_target_extent_name
        elif not self._api:
            with client as c:
                disk_choices = list(c.call(
                    'iscsi.extent.disk_choices'
                ).items())

                disk_choices.sort(key=lambda x: x[1])

            self.fields['iscsi_target_extent_disk'].choices = disk_choices
        self.fields['iscsi_target_extent_type'].widget.attrs['onChange'] = "iscsiExtentToggle();extentZvolToggle();"
        self.fields['iscsi_target_extent_path'].required = False

        self.fields['iscsi_target_extent_disk'].widget.attrs['onChange'] = (
            'extentZvolToggle();'
        )
Ejemplo n.º 9
0
    def __init__(self, *args, **kwargs):
        super(iSCSITargetExtentForm, self).__init__(*args, **kwargs)
        key_order(self, 1, 'iscsi_target_extent_type', instance=True)

        if not self._api:
            self.fields['iscsi_target_extent_disk'] = forms.ChoiceField(
                choices=(),
                widget=forms.Select(attrs={'maxHeight': 200}),
                label=_('Device'),
                required=False,
            )
        else:
            self.fields['iscsi_target_extent_disk'] = forms.CharField(
                required=False,
            )

        key_order(self, 2, 'iscsi_target_extent_disk', instance=True)

        if self.instance.id:
            with client as c:
                e = self.instance.iscsi_target_extent_path
                exclude = [e] if not self._api else []

                disk_choices = list(c.call(
                    'iscsi.extent.disk_choices', exclude
                ).items())

                disk_choices.sort(key=lambda x: x[1])

            if self.instance.iscsi_target_extent_type == 'File':
                self.fields['iscsi_target_extent_type'].initial = 'File'
            else:
                self.fields['iscsi_target_extent_type'].initial = 'Disk'
            if not self._api:
                self.fields['iscsi_target_extent_disk'].choices = disk_choices
            if self.instance.iscsi_target_extent_type in ('ZVOL', 'HAST'):
                self.fields['iscsi_target_extent_disk'].initial = disk_choices
            else:
                self.fields['iscsi_target_extent_disk'].initial = self.instance.get_device()[5:]
            self._path = self.instance.iscsi_target_extent_path
            self._name = self.instance.iscsi_target_extent_name
        elif not self._api:
            with client as c:
                disk_choices = list(c.call(
                    'iscsi.extent.disk_choices'
                ).items())

                disk_choices.sort(key=lambda x: x[1])

            self.fields['iscsi_target_extent_disk'].choices = disk_choices
        self.fields['iscsi_target_extent_type'].widget.attrs['onChange'] = "iscsiExtentToggle();extentZvolToggle();"
        self.fields['iscsi_target_extent_path'].required = False

        self.fields['iscsi_target_extent_disk'].widget.attrs['onChange'] = (
            'extentZvolToggle();'
        )
Ejemplo n.º 10
0
 def __init__(self, *args, **kwargs):
     super(CloudSyncForm, self).__init__(*args, **kwargs)
     key_order(self, 2, 'attributes', instance=True)
     mchoicefield(self, 'month', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
     mchoicefield(self, 'dayweek', [1, 2, 3, 4, 5, 6, 7])
     if self.instance.id:
         self.fields['attributes'].initial = {
             'credential': self.instance.credential.id,
         }
         self.fields['attributes'].initial.update(self.instance.attributes)
Ejemplo n.º 11
0
 def __init__(self, *args, **kwargs):
     super(VMForm, self).__init__(*args, **kwargs)
     if self.instance.id:
         for i in ('vm_type', 'root_password', 'path', 'size'):
             del self.fields[i]
         if self.instance.vm_type != 'Bhyve':
             del self.fields['bootloader']
     else:
         self.fields['vm_type'].widget.attrs['onChange'] = (
             "vmTypeToggle();")
         key_order(self, 0, 'vm_type', instance=True)
Ejemplo n.º 12
0
    def __init__(self, *args, **kwargs):
        super(CIFS_ShareForm, self).__init__(*args, **kwargs)
        key_order(self, 4, 'cifs_default_permissions', instance=True)

        self.fields['cifs_guestok'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_cifs_guestok", '
            '["id_cifs_guestonly"], true);')
        if self.data:
            if self.data.get('cifs_guestok') is False:
                self.fields['cifs_guestonly'].widget.attrs['disabled'] = \
                    'disabled'
        elif self.instance.cifs_guestok is False:
            self.fields['cifs_guestonly'].widget.attrs['disabled'] = 'disabled'
        self.fields['cifs_name'].required = False
Ejemplo n.º 13
0
    def __init__(self, *args, **kwargs):
        super(iSCSITargetAuthCredentialForm, self).__init__(*args, **kwargs)
        if self._api:
            del self.fields['iscsi_target_auth_secret2']
            del self.fields['iscsi_target_auth_peersecret2']
        else:
            key_order(self, 3, 'iscsi_target_auth_secret2', instance=True)
            key_order(self, 6, 'iscsi_target_auth_peersecret2', instance=True)

            ins = kwargs.get("instance", None)
            if ins:
                self.fields['iscsi_target_auth_secret2'].initial = (
                    self.instance.iscsi_target_auth_secret)
                self.fields['iscsi_target_auth_peersecret2'].initial = (
                    self.instance.iscsi_target_auth_peersecret)
Ejemplo n.º 14
0
    def __init__(self, *args, **kwargs):
        super(iSCSITargetAuthCredentialForm, self).__init__(*args, **kwargs)
        if self._api:
            del self.fields['iscsi_target_auth_secret2']
            del self.fields['iscsi_target_auth_peersecret2']
        else:
            key_order(self, 3, 'iscsi_target_auth_secret2', instance=True)
            key_order(self, 6, 'iscsi_target_auth_peersecret2', instance=True)

            ins = kwargs.get("instance", None)
            if ins:
                self.fields['iscsi_target_auth_secret2'].initial = (
                    self.instance.iscsi_target_auth_secret)
                self.fields['iscsi_target_auth_peersecret2'].initial = (
                    self.instance.iscsi_target_auth_peersecret)
Ejemplo n.º 15
0
    def __init__(self, *args, **kwargs):
        super(CIFS_ShareForm, self).__init__(*args, **kwargs)
        if self.instance.id:
            self.fields['cifs_default_permissions'].initial = False
            self._original_cifs_vfsobjects = self.instance.cifs_vfsobjects
        else:
            self.fields['cifs_default_permissions'].initial = True
            self._original_cifs_vfsobjects = []

        key_order(self, 4, 'cifs_default_permissions', instance=True)

        self.fields['cifs_guestok'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_cifs_guestok", '
            '["id_cifs_guestonly"], true);')
        if self.data:
            if self.data.get('cifs_guestok') is False:
                self.fields['cifs_guestonly'].widget.attrs['disabled'] = \
                    'disabled'
        elif self.instance.cifs_guestok is False:
            self.fields['cifs_guestonly'].widget.attrs['disabled'] = 'disabled'
        self.fields['cifs_name'].required = False
        self.fields['cifs_home'].widget.attrs['onChange'] = (
            "cifs_storage_task_toggle();"
        )

        if self.instance:
            task_dict = {}
            if self.instance.cifs_path:
                with client as c:
                    task_dict = c.call('sharing.cifs.get_storage_tasks',
                                       self.instance.cifs_path)

            elif self.instance.cifs_home:
                with client as c:
                    task_dict = c.call('sharing.cifs.get_storage_tasks',
                                        None, self.instance.cifs_home)

            if task_dict:
                choices = [('', '-----')]
                for task_id, msg in task_dict.items():
                    choices.append((task_id, msg))
                self.fields['cifs_storage_task'].choices = choices

            else:
                self.fields['cifs_storage_task'].choices = (('', '-----'),)
Ejemplo n.º 16
0
    def __init__(self, *args, **kwargs):
        super(NFSForm, self).__init__(*args, **kwargs)
        if self.data and self.data.get('nfs_srv_bindip'):
            if ',' in self.data['nfs_srv_bindip']:
                self.data = self.data.copy()
                self.data.setlist(
                    'nfs_srv_bindip',
                    self.data['nfs_srv_bindip'].split(',')
                )
        self.fields['nfs_srv_bindip'].choices = list(choices.IPChoices())
        if self.instance.id and self.instance.nfs_srv_bindip:
            bindips = []
            for ip in self.instance.nfs_srv_bindip:
                bindips.append(ip)

            self.fields['nfs_srv_bindip'].initial = bindips
        else:
            self.fields['nfs_srv_bindip'].initial = ''
        key_order(self, 2, 'nfs_srv_bindip', instance=True)

        self.fields['nfs_srv_mountd_port'].label = (
            self.fields['nfs_srv_mountd_port'].label.lower()
        )
        self.fields['nfs_srv_rpcstatd_port'].label = (
            self.fields['nfs_srv_rpcstatd_port'].label.lower()
        )
        self.fields['nfs_srv_rpclockd_port'].label = (
            self.fields['nfs_srv_rpclockd_port'].label.lower()
        )
        self.instance._original_nfs_srv_v4 = self.instance.nfs_srv_v4
        self.fields['nfs_srv_v4'].widget.attrs['onChange'] = (
            'javascript:toggleNFSService();'
        )
        self.fields['nfs_srv_v4_v3owner'].widget.attrs['onChange'] = (
            'javascript:toggleNFSService();'
        )
        self.fields['nfs_srv_16'].widget.attrs['onChange'] = (
            'javascript:toggleNFSService();'
        )
        if not self.instance.nfs_srv_v4 or (self.instance.nfs_srv_v4 and self.instance.nfs_srv_16):
            self.fields['nfs_srv_v4_v3owner'].widget.attrs['disabled'] = (
                'disabled'
            )
        if self.instance.nfs_srv_v4_v3owner:
            self.fields['nfs_srv_16'].widget.attrs['disabled'] = 'disabled'
Ejemplo n.º 17
0
    def __init__(self, *args, **kwargs):
        super(NFSForm, self).__init__(*args, **kwargs)
        if self.data and self.data.get('nfs_srv_bindip'):
            if ',' in self.data['nfs_srv_bindip']:
                self.data = self.data.copy()
                self.data.setlist(
                    'nfs_srv_bindip',
                    self.data['nfs_srv_bindip'].split(',')
                )
        self.fields['nfs_srv_bindip'].choices = list(choices.IPChoices())
        if self.instance.id and self.instance.nfs_srv_bindip:
            bindips = []
            for ip in self.instance.nfs_srv_bindip:
                bindips.append(ip)

            self.fields['nfs_srv_bindip'].initial = bindips
        else:
            self.fields['nfs_srv_bindip'].initial = ''
        key_order(self, 2, 'nfs_srv_bindip', instance=True)

        self.fields['nfs_srv_mountd_port'].label = (
            self.fields['nfs_srv_mountd_port'].label.lower()
        )
        self.fields['nfs_srv_rpcstatd_port'].label = (
            self.fields['nfs_srv_rpcstatd_port'].label.lower()
        )
        self.fields['nfs_srv_rpclockd_port'].label = (
            self.fields['nfs_srv_rpclockd_port'].label.lower()
        )
        self.instance._original_nfs_srv_v4 = self.instance.nfs_srv_v4
        self.fields['nfs_srv_v4'].widget.attrs['onChange'] = (
            'javascript:toggleNFSService();'
        )
        self.fields['nfs_srv_v4_v3owner'].widget.attrs['onChange'] = (
            'javascript:toggleNFSService();'
        )
        self.fields['nfs_srv_16'].widget.attrs['onChange'] = (
            'javascript:toggleNFSService();'
        )
        if not self.instance.nfs_srv_v4 or (self.instance.nfs_srv_v4 and self.instance.nfs_srv_16):
            self.fields['nfs_srv_v4_v3owner'].widget.attrs['disabled'] = (
                'disabled'
            )
        if self.instance.nfs_srv_v4_v3owner:
            self.fields['nfs_srv_16'].widget.attrs['disabled'] = 'disabled'
Ejemplo n.º 18
0
    def __init__(self, *args, **kwargs):
        if "instance" in kwargs and kwargs["instance"].id:
            kwargs.setdefault("initial", {})
            try:
                kwargs["initial"]["encryption_password"] = notifier().pwenc_decrypt(
                    kwargs["instance"].encryption_password)
            except Exception:
                pass
            try:
                kwargs["initial"]["encryption_salt"] = notifier().pwenc_decrypt(kwargs["instance"].encryption_salt)
            except Exception:
                pass

            if len(kwargs["instance"].bwlimit) == 1 and kwargs["instance"].bwlimit[0]["time"] == "00:00":
                if kwargs["instance"].bwlimit[0]['bandwidth'] is not None:
                    kwargs["initial"]["bwlimit"] = humanize_size_rclone(kwargs["instance"].bwlimit[0]['bandwidth'])
                else:
                    kwargs["initial"]["bwlimit"] = ""
            else:
                kwargs["initial"]["bwlimit"] = " ".join([
                    f"{limit['time']},{humanize_size_rclone(limit['bandwidth']) if limit['bandwidth'] else 'off'}"
                    for limit in kwargs["instance"].bwlimit
                ])

            kwargs["initial"]["exclude"] = "\n".join(kwargs["instance"].exclude)

        super(CloudSyncForm, self).__init__(*args, **kwargs)
        key_order(self, 2, 'attributes', instance=True)
        mchoicefield(self, 'month', [
            1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
        ])
        mchoicefield(self, 'dayweek', [
            1, 2, 3, 4, 5, 6, 7
        ])
        if self.instance.id:
            self.fields['attributes'].initial = {
                'credential': self.instance.credential.id,
            }
            self.fields['attributes'].initial.update(self.instance.attributes)

        self.fields['direction'].widget.attrs['onChange'] = (
            "cloudSyncDirectionToggle();"
        )
Ejemplo n.º 19
0
    def __init__(self, *args, **kwargs):
        if "instance" in kwargs and kwargs["instance"].id:
            kwargs.setdefault("initial", {})
            try:
                kwargs["initial"]["encryption_password"] = notifier(
                ).pwenc_decrypt(kwargs["instance"].encryption_password)
            except Exception:
                pass
            try:
                kwargs["initial"]["encryption_salt"] = notifier(
                ).pwenc_decrypt(kwargs["instance"].encryption_salt)
            except Exception:
                pass

            if len(kwargs["instance"].bwlimit
                   ) == 1 and kwargs["instance"].bwlimit[0]["time"] == "00:00":
                if kwargs["instance"].bwlimit[0]['bandwidth'] is not None:
                    kwargs["initial"]["bwlimit"] = humanize_size_rclone(
                        kwargs["instance"].bwlimit[0]['bandwidth'])
                else:
                    kwargs["initial"]["bwlimit"] = ""
            else:
                kwargs["initial"]["bwlimit"] = " ".join([
                    f"{limit['time']},{humanize_size_rclone(limit['bandwidth']) if limit['bandwidth'] else 'off'}"
                    for limit in kwargs["instance"].bwlimit
                ])

            kwargs["initial"]["exclude"] = "\n".join(
                kwargs["instance"].exclude)

        super(CloudSyncForm, self).__init__(*args, **kwargs)
        key_order(self, 2, 'attributes', instance=True)
        mchoicefield(self, 'month', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
        mchoicefield(self, 'dayweek', [1, 2, 3, 4, 5, 6, 7])
        if self.instance.id:
            self.fields['attributes'].initial = {
                'credential': self.instance.credential.id,
            }
            self.fields['attributes'].initial.update(self.instance.attributes)

        self.fields['direction'].widget.attrs['onChange'] = (
            "cloudSyncDirectionToggle();")
Ejemplo n.º 20
0
    def __init__(self, *args, **kwargs):
        self.remote = kwargs.pop('remote', None)
        self.initial_fail = False
        with client as c:
            if self.remote:
                try:
                    data = c.call('failover.call_remote', 'ipmi.query',
                                  [[('channel', '=', 1)]])
                except Exception:
                    self.initial_fail = True
                    data = None
            else:
                data = c.call('ipmi.query', [('channel', '=', 1)])
            if data:
                data = data[0]
                num, cidr = struct.unpack('>I',
                                          socket.inet_aton(
                                              data['netmask']))[0], 0
                while num > 0:
                    num = num << 1 & 0xffffffff
                    cidr += 1
                kwargs['initial'] = {
                    'dhcp': data['dhcp'],
                    'ipv4address': data.get('ipaddress'),
                    'ipv4gw': data.get('gateway'),
                    'ipv4netmaskbit': str(cidr),
                    'vlanid': data.get('vlan'),
                }

        super(IPMIForm, self).__init__(*args, **kwargs)
        self.fields['dhcp'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric('
            '"id_dhcp", ["id_ipv4address", "id_ipv4netmaskbit"]);')

        with client as c:
            channels = list(map(lambda i: (i, i), c.call('ipmi.channels')))

        self.fields['channel'] = forms.ChoiceField(
            choices=channels,
            label=_('Channel'),
        )
        key_order(self, 0, 'channel', instance=True)
Ejemplo n.º 21
0
    def __init__(self, *args, **kwargs):
        super(CIFS_ShareForm, self).__init__(*args, **kwargs)
        if self.instance.id:
            self.fields['cifs_default_permissions'].initial = False
            self._original_cifs_vfsobjects = self.instance.cifs_vfsobjects
        else:
            self.fields['cifs_default_permissions'].initial = True
            self._original_cifs_vfsobjects = []

        key_order(self, 4, 'cifs_default_permissions', instance=True)

        self.fields['cifs_guestok'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_cifs_guestok", '
            '["id_cifs_guestonly"], true);')
        if self.data:
            if self.data.get('cifs_guestok') is False:
                self.fields['cifs_guestonly'].widget.attrs['disabled'] = \
                    'disabled'
        elif self.instance.cifs_guestok is False:
            self.fields['cifs_guestonly'].widget.attrs['disabled'] = 'disabled'
        self.fields['cifs_name'].required = False
Ejemplo n.º 22
0
    def __init__(self, *args, **kwargs):
        self.remote = kwargs.pop('remote', None)
        self.initial_fail = False
        with client as c:
            if self.remote:
                try:
                    data = c.call('failover.call_remote', 'ipmi.query', [[('channel', '=', 1)]])
                except Exception:
                    self.initial_fail = True
                    data = None
            else:
                data = c.call('ipmi.query', [('channel', '=', 1)])
            if data:
                data = data[0]
                num, cidr = struct.unpack('>I', socket.inet_aton(data['netmask']))[0], 0
                while num > 0:
                    num = num << 1 & 0xffffffff
                    cidr += 1
                kwargs['initial'] = {
                    'dhcp': data['dhcp'],
                    'ipv4address': data.get('ipaddress'),
                    'ipv4gw': data.get('gateway'),
                    'ipv4netmaskbit': str(cidr),
                    'vlanid': data.get('vlan'),
                }

        super(IPMIForm, self).__init__(*args, **kwargs)
        self.fields['dhcp'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric('
            '"id_dhcp", ["id_ipv4address", "id_ipv4netmaskbit"]);'
        )

        with client as c:
            channels = list(map(lambda i: (i, i), c.call('ipmi.channels')))

        self.fields['channel'] = forms.ChoiceField(
            choices=channels,
            label=_('Channel'),
        )
        key_order(self, 0, 'channel', instance=True)
Ejemplo n.º 23
0
    def __init__(self, *args, **kwargs):
        super(CIFS_ShareForm, self).__init__(*args, **kwargs)
        if self.instance.id:
            self.fields['cifs_default_permissions'].initial = False
            self._original_cifs_vfsobjects = self.instance.cifs_vfsobjects
        else:
            self.fields['cifs_default_permissions'].initial = True
            self._original_cifs_vfsobjects = []

        key_order(self, 4, 'cifs_default_permissions', instance=True)

        self.fields['cifs_guestok'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_cifs_guestok", '
            '["id_cifs_guestonly"], true);')
        if self.data:
            if self.data.get('cifs_guestok') is False:
                self.fields['cifs_guestonly'].widget.attrs['disabled'] = \
                    'disabled'
        elif self.instance.cifs_guestok is False:
            self.fields['cifs_guestonly'].widget.attrs['disabled'] = 'disabled'
        self.fields['cifs_name'].required = False
        self.fields['cifs_home'].widget.attrs['onChange'] = (
            "cifs_storage_task_toggle();"
        )

        if self.instance:
            task_dict = {}
            if self.instance.cifs_path:
                with client as c:
                    task_dict = c.call('sharing.smb.get_storage_tasks',
                                       self.instance.cifs_path)

            if task_dict:
                choices = [('', '-----')]
                for task_id, msg in task_dict.items():
                    choices.append((task_id, msg))
                self.fields['cifs_storage_task'].choices = choices

            else:
                self.fields['cifs_storage_task'].choices = (('', '-----'),)
Ejemplo n.º 24
0
    def __init__(self, *args, **kwargs):
        #FIXME: Workaround for DOJO not showing select with blank values
        if len(args) > 0 and isinstance(args[0], QueryDict):
            new = args[0].copy()
            if new.get('bsdusr_group', None) == '-----':
                new['bsdusr_group'] = ''
            args = (new, ) + args[1:]
        super(bsdUsersForm, self).__init__(*args, **kwargs)
        key_order(self, 3, 'bsdusr_group', instance=True)
        if self._api is True:
            del self.fields['bsdusr_password2']
        self.fields['bsdusr_to_group'].choices = [
            (x.id, x.bsdgrp_group) for x in models.bsdGroups.objects.all()
        ]
        self.fields['bsdusr_password_disabled'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_bsdusr_password_disabled", '
            '["id_bsdusr_locked", "id_bsdusr_sudo"], false);')
        self.fields['bsdusr_locked'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_bsdusr_locked", '
            '["id_bsdusr_password_disabled"], false);')
        self.fields['bsdusr_sudo'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_bsdusr_sudo", '
            '["id_bsdusr_password_disabled"], false);')

        if not self.instance.id:
            try:
                with client as c:
                    self.fields['bsdusr_uid'].initial = c.call(
                        'user.get_next_uid')
            except Exception:
                pass
            self.fields['bsdusr_home'].label = _('Create Home Directory In')
            self.fields['bsdusr_creategroup'].widget.attrs['onChange'] = (
                'javascript:toggleGeneric("id_bsdusr_creategroup", '
                '["id_bsdusr_group"], false);')
            self.fields['bsdusr_group'].widget.attrs['maxHeight'] = 200
            self.fields['bsdusr_group'].widget.attrs['disabled'] = 'disabled'
            self.fields['bsdusr_group'].choices = (
                ('-----', '-----'), ) + tuple(
                    [x for x in self.fields['bsdusr_group'].choices][1:])
            self.fields['bsdusr_group'].required = False
            self.bsdusr_home_saved = '/nonexistent'

        elif self.instance.id:
            self.fields['bsdusr_to_group'].initial = [
                x.bsdgrpmember_group.id
                for x in models.bsdGroupMembership.objects.filter(
                    bsdgrpmember_user=self.instance.id)
            ]

            del self.fields['bsdusr_creategroup']
            self.fields['bsdusr_group'].initial = self.instance.bsdusr_group
            self.advanced_fields = []
            self.bsdusr_home_saved = self.instance.bsdusr_home
            key_order(self, len(self.fields) - 1, 'bsdusr_mode', instance=True)
            self.fields['bsdusr_username'].widget.attrs['readonly'] = True
            self.fields['bsdusr_username'].widget.attrs['class'] = (
                'dijitDisabled dijitTextBoxDisabled '
                'dijitValidationTextBoxDisabled')
            if os.path.exists(self.instance.bsdusr_home):
                mode = os.stat(self.instance.bsdusr_home).st_mode & 0o777
                self.fields['bsdusr_mode'].initial = oct(mode)[2:]
            if self.instance.bsdusr_builtin:
                self.fields['bsdusr_uid'].widget.attrs['readonly'] = True
                self.fields['bsdusr_uid'].widget.attrs['class'] = (
                    'dijitDisabled dijitTextBoxDisabled '
                    'dijitValidationTextBoxDisabled')
                self.fields['bsdusr_group'].widget.attrs['readonly'] = True
                self.fields['bsdusr_group'].widget.attrs['class'] = (
                    'dijitDisabled dijitSelectDisabled')
                self.fields['bsdusr_home'].widget.attrs['readonly'] = True
                self.fields['bsdusr_home'].widget.attrs['class'] = (
                    'dijitDisabled dijitTextBoxDisabled '
                    'dijitValidationTextBoxDisabled')
                self.fields['bsdusr_mode'].widget.attrs['disabled'] = True
                self.fields['bsdusr_mode'].required = False
            if self.instance.bsdusr_locked or self.instance.bsdusr_sudo:
                self.fields['bsdusr_password_disabled'].widget.attrs[
                    'disabled'] = True
            if self.instance.bsdusr_password_disabled is True:
                self.fields['bsdusr_locked'].widget.attrs['disabled'] = True
                self.fields['bsdusr_sudo'].widget.attrs['disabled'] = True
            self.fields['bsdusr_sshpubkey'].initial = (
                self.instance.bsdusr_sshpubkey)
Ejemplo n.º 25
0
 def __init__(self, *args, **kwargs):
     super(VMForm, self).__init__(*args, **kwargs)
     self.fields['vm_type'].widget.attrs['onChange'] = ("vmTypeToggle();")
     key_order(self, 0, 'vm_type', instance=True)
Ejemplo n.º 26
0
    def __init__(self, *args, **kwargs):
        #FIXME: Workaround for DOJO not showing select with blank values
        if len(args) > 0 and isinstance(args[0], QueryDict):
            new = args[0].copy()
            if new.get('bsdusr_group', None) == '-----':
                new['bsdusr_group'] = ''
            args = (new,) + args[1:]
        super(bsdUsersForm, self).__init__(*args, **kwargs)
        key_order(self, 3, 'bsdusr_group', instance=True)
        if self._api is True:
            del self.fields['bsdusr_password2']
        self.fields['bsdusr_to_group'].choices = [
            (x.id, x.bsdgrp_group)
            for x in models.bsdGroups.objects.all()
        ]
        self.fields['bsdusr_password_disabled'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_bsdusr_password_disabled", '
            '["id_bsdusr_locked", "id_bsdusr_sudo"], false);')
        self.fields['bsdusr_locked'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_bsdusr_locked", '
            '["id_bsdusr_password_disabled"], false);')
        self.fields['bsdusr_sudo'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_bsdusr_sudo", '
            '["id_bsdusr_password_disabled"], false);')

        if not self.instance.id:
            try:
                self.fields['bsdusr_uid'].initial = notifier().user_getnextuid()
            except:
                pass
            self.fields['bsdusr_home'].label = _('Create Home Directory In')
            self.fields['bsdusr_creategroup'].widget.attrs['onChange'] = (
                'javascript:toggleGeneric("id_bsdusr_creategroup", '
                '["id_bsdusr_group"], false);')
            self.fields['bsdusr_group'].widget.attrs['maxHeight'] = 200
            self.fields['bsdusr_group'].widget.attrs['disabled'] = 'disabled'
            self.fields['bsdusr_group'].choices = (
                ('-----', '-----'),
            ) + tuple(
                [x for x in self.fields['bsdusr_group'].choices][1:]
            )
            self.fields['bsdusr_group'].required = False
            self.bsdusr_home_saved = '/nonexistent'
            self.bsdusr_home_copy = False

        elif self.instance.id:
            self.fields['bsdusr_to_group'].initial = [
                x.bsdgrpmember_group.id
                for x in models.bsdGroupMembership.objects.filter(
                    bsdgrpmember_user=self.instance.id
                )
            ]

            del self.fields['bsdusr_creategroup']
            self.fields['bsdusr_group'].initial = self.instance.bsdusr_group
            self.advanced_fields = []
            self.bsdusr_home_saved = self.instance.bsdusr_home
            self.bsdusr_home_copy = False
            key_order(self, len(self.fields) - 1, 'bsdusr_mode', instance=True)
            self.fields['bsdusr_username'].widget.attrs['readonly'] = True
            self.fields['bsdusr_username'].widget.attrs['class'] = (
                'dijitDisabled dijitTextBoxDisabled '
                'dijitValidationTextBoxDisabled')
            if os.path.exists(self.instance.bsdusr_home):
                mode = os.stat(self.instance.bsdusr_home).st_mode & 0o777
                self.fields['bsdusr_mode'].initial = oct(mode)[2:]
            if self.instance.bsdusr_builtin:
                self.fields['bsdusr_uid'].widget.attrs['readonly'] = True
                self.fields['bsdusr_uid'].widget.attrs['class'] = (
                    'dijitDisabled dijitTextBoxDisabled '
                    'dijitValidationTextBoxDisabled'
                )
                self.fields['bsdusr_group'].widget.attrs['readonly'] = True
                self.fields['bsdusr_group'].widget.attrs['class'] = (
                    'dijitDisabled dijitSelectDisabled')
                self.fields['bsdusr_home'].widget.attrs['readonly'] = True
                self.fields['bsdusr_home'].widget.attrs['class'] = (
                    'dijitDisabled dijitTextBoxDisabled '
                    'dijitValidationTextBoxDisabled'
                )
                self.fields['bsdusr_mode'].widget.attrs['disabled'] = True
                self.fields['bsdusr_mode'].required = False
            if self.instance.bsdusr_locked or self.instance.bsdusr_sudo:
                self.fields['bsdusr_password_disabled'].widget.attrs[
                    'disabled'
                ] = True
            if self.instance.bsdusr_password_disabled is True:
                self.fields['bsdusr_locked'].widget.attrs['disabled'] = True
                self.fields['bsdusr_sudo'].widget.attrs['disabled'] = True
            self.fields['bsdusr_sshpubkey'].initial = (
                self.instance.bsdusr_sshpubkey
            )
Ejemplo n.º 27
0
            raise forms.ValidationError(
                _("The two password fields didn't match."))
        return password2

    def clean(self):
        cdata = self.cleaned_data
        if not cdata.get("ddns_password"):
            cdata['ddns_password'] = self.instance.ddns_password
        return cdata

    def middleware_clean(self, update):
        update["domain"] = update["domain"].split()
        return update


key_order(DynamicDNSForm, 10, 'ddns_password2')


class SNMPForm(MiddlewareModelForm, ModelForm):

    middleware_attr_prefix = "snmp_"
    middleware_attr_schema = "snmp"
    middleware_exclude_fields = ["v3_password2", "v3_privpassphrase2"]
    middleware_plugin = "snmp"
    is_singletone = True

    snmp_v3_password2 = forms.CharField(
        max_length=40,
        label=_("Confirm Password"),
        widget=forms.widgets.PasswordInput(render_value=True),
        required=False,
Ejemplo n.º 28
0
    def __init__(self, *args, **kwargs):
        super(S3Form, self).__init__(*args, **kwargs)
        key_order(self, 1, 's3_bindip', instance=True)
        key_order(self, 2, 's3_bindport', instance=True)
        key_order(self, 3, 's3_access_key', instance=True)
        key_order(self, 4, 's3_secret_key', instance=True)
        key_order(self, 5, 's3_secret_key2', instance=True)
        key_order(self, 6, 's3_disks', instance=True)
        key_order(self, 7, 's3_certificate', instance=True)
        key_order(self, 8, 's3_mode', instance=True)
        key_order(self, 9, 's3_browser', instance=True)

        self.fields['s3_bindip'].choices = [('0.0.0.0', '0.0.0.0')] + list(
            choices.IPChoices())
        if self.instance.id and self.instance.s3_bindip:
            bindips = []
            for ip in self.instance.s3_bindip:
                bindips.append(ip.encode('utf-8'))

            self.fields['s3_bindip'].initial = (bindips)
        else:
            self.fields['s3_bindip'].initial = ('')

        if self.instance.id:
            self.fields['s3_secret_key2'].initial = self.instance.s3_secret_key
        if self._api is True:
            del self.fields['s3_secret_key2']

        self.fields['s3_mode'].widget = forms.widgets.HiddenInput()
Ejemplo n.º 29
0
 def __init__(self, *args, **kwargs):
     super(VMForm, self).__init__(*args, **kwargs)
     self.fields['vm_type'].widget.attrs['onChange'] = ("vmTypeToggle();")
     key_order(self, 0, 'vm_type', instance=True)
Ejemplo n.º 30
0
        password1 = self.cleaned_data.get("ddns_password")
        password2 = self.cleaned_data.get("ddns_password2")
        if password1 != password2:
            raise forms.ValidationError(
                _("The two password fields didn't match.")
            )
        return password2

    def middleware_clean(self, update):
        update["domain"] = update["domain"].replace(',', ' ').replace(';', ' ').split()
        if not update.get('password'):
            update.pop('password', None)
        return update


key_order(DynamicDNSForm, 10, 'ddns_password2')


class SNMPForm(MiddlewareModelForm, ModelForm):

    middleware_attr_prefix = "snmp_"
    middleware_attr_schema = "snmp"
    middleware_exclude_fields = ["v3_password2", "v3_privpassphrase2"]
    middleware_plugin = "snmp"
    is_singletone = True

    snmp_v3_password2 = forms.CharField(
        max_length=40,
        label=_("Confirm Password"),
        widget=forms.widgets.PasswordInput(render_value=True),
        required=False,
Ejemplo n.º 31
0
    def __init__(self, *args, **kwargs):
        super(S3Form, self).__init__(*args, **kwargs)
        key_order(self, 1, 's3_bindip', instance=True)
        key_order(self, 2, 's3_bindport', instance=True)
        key_order(self, 3, 's3_access_key', instance=True)
        key_order(self, 4, 's3_secret_key', instance=True)
        key_order(self, 5, 's3_secret_key2', instance=True)
        key_order(self, 6, 's3_disks', instance=True)
        key_order(self, 7, 's3_certificate', instance=True)
        key_order(self, 8, 's3_mode', instance=True)
        key_order(self, 9, 's3_browser', instance=True)

        self.fields['s3_bindip'].choices = [('0.0.0.0', '0.0.0.0')] + list(choices.IPChoices())
        if self.instance.id and self.instance.s3_bindip:
            bindips = []
            for ip in self.instance.s3_bindip:
                bindips.append(ip.encode('utf-8'))

            self.fields['s3_bindip'].initial = (bindips)
        else:
            self.fields['s3_bindip'].initial = ('')

        if self.instance.id:
            self.fields['s3_secret_key2'].initial = self.instance.s3_secret_key
        if self._api is True:
            del self.fields['s3_secret_key2']

        self.fields['s3_mode'].widget = forms.widgets.HiddenInput()