1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2025-07-31 12:41:08 +00:00

format python code with black

This commit is contained in:
catborise 2022-11-02 08:54:35 +03:00
parent ea409ca863
commit 217e106c8b
55 changed files with 2510 additions and 1454 deletions

View file

@ -5,9 +5,15 @@ from django.utils.translation import gettext_lazy as _
class AddStgPool(forms.Form):
name = forms.CharField(error_messages={'required': _('No pool name has been entered')}, max_length=20)
name = forms.CharField(
error_messages={"required": _("No pool name has been entered")}, max_length=20
)
stg_type = forms.CharField(max_length=10)
target = forms.CharField(error_messages={'required': _('No path has been entered')}, max_length=100, required=False)
target = forms.CharField(
error_messages={"required": _("No path has been entered")},
max_length=100,
required=False,
)
source = forms.CharField(max_length=100, required=False)
ceph_user = forms.CharField(required=False)
ceph_host = forms.CharField(required=False)
@ -17,49 +23,62 @@ class AddStgPool(forms.Form):
source_format = forms.CharField(required=False)
def clean_name(self):
name = self.cleaned_data['name']
have_symbol = re.match('^[a-zA-Z0-9._-]+$', name)
name = self.cleaned_data["name"]
have_symbol = re.match("^[a-zA-Z0-9._-]+$", name)
if not have_symbol:
raise forms.ValidationError(_('The pool name must not contain any special characters'))
raise forms.ValidationError(
_("The pool name must not contain any special characters")
)
elif len(name) > 20:
raise forms.ValidationError(_('The pool name must not exceed 20 characters'))
raise forms.ValidationError(
_("The pool name must not exceed 20 characters")
)
return name
def clean_target(self):
storage_type = self.cleaned_data['stg_type']
target = self.cleaned_data['target']
have_symbol = re.match('^[a-zA-Z0-9/]+$', target)
if storage_type == 'dir' or storage_type == 'netfs':
storage_type = self.cleaned_data["stg_type"]
target = self.cleaned_data["target"]
have_symbol = re.match("^[a-zA-Z0-9/]+$", target)
if storage_type == "dir" or storage_type == "netfs":
if not have_symbol:
raise forms.ValidationError(_('The target must not contain any special characters'))
if storage_type == 'dir' or storage_type == 'netfs':
raise forms.ValidationError(
_("The target must not contain any special characters")
)
if storage_type == "dir" or storage_type == "netfs":
if not target:
raise forms.ValidationError(_('No path has been entered'))
raise forms.ValidationError(_("No path has been entered"))
return target
def clean_source(self):
storage_type = self.cleaned_data['stg_type']
source = self.cleaned_data['source']
have_symbol = re.match('^[a-zA-Z0-9\/]+$', source)
if storage_type == 'logical' or storage_type == 'netfs':
storage_type = self.cleaned_data["stg_type"]
source = self.cleaned_data["source"]
have_symbol = re.match("^[a-zA-Z0-9\/]+$", source)
if storage_type == "logical" or storage_type == "netfs":
if not source:
raise forms.ValidationError(_('No device or path has been entered'))
raise forms.ValidationError(_("No device or path has been entered"))
if not have_symbol:
raise forms.ValidationError(_('The disk source must not contain any special characters'))
raise forms.ValidationError(
_("The disk source must not contain any special characters")
)
return source
class CreateVolumeForm(forms.Form):
name = forms.CharField(max_length=120)
format = forms.ChoiceField(required=True, choices=(('qcow2', 'qcow2 (recommended)'), ('qcow', 'qcow'), ('raw', 'raw')))
format = forms.ChoiceField(
required=True,
choices=(("qcow2", "qcow2 (recommended)"), ("qcow", "qcow"), ("raw", "raw")),
)
size = forms.IntegerField()
meta_prealloc = forms.BooleanField(required=False)
def clean_name(self):
name = self.cleaned_data['name']
have_symbol = re.match('^[a-zA-Z0-9._-]+$', name)
name = self.cleaned_data["name"]
have_symbol = re.match("^[a-zA-Z0-9._-]+$", name)
if not have_symbol:
raise forms.ValidationError(_('The image name must not contain any special characters'))
raise forms.ValidationError(
_("The image name must not contain any special characters")
)
return name
@ -67,14 +86,21 @@ class CloneImage(forms.Form):
name = forms.CharField(max_length=120)
image = forms.CharField(max_length=120)
convert = forms.BooleanField(required=False)
format = forms.ChoiceField(required=False, choices=(('qcow2', 'qcow2 (recommended)'), ('qcow', 'qcow'), ('raw', 'raw')))
format = forms.ChoiceField(
required=False,
choices=(("qcow2", "qcow2 (recommended)"), ("qcow", "qcow"), ("raw", "raw")),
)
meta_prealloc = forms.BooleanField(required=False)
def clean_name(self):
name = self.cleaned_data['name']
have_symbol = re.match('^[a-zA-Z0-9._-]+$', name)
name = self.cleaned_data["name"]
have_symbol = re.match("^[a-zA-Z0-9._-]+$", name)
if not have_symbol:
raise forms.ValidationError(_('The image name must not contain any special characters'))
raise forms.ValidationError(
_("The image name must not contain any special characters")
)
elif len(name) > 120:
raise forms.ValidationError(_('The image name must not exceed 120 characters'))
raise forms.ValidationError(
_("The image name must not exceed 120 characters")
)
return name

View file

@ -3,45 +3,55 @@ from django.utils.translation import gettext_lazy as _
# Create your models here.
class Storages(models.Model):
name = models.CharField(_('name'), max_length=20, error_messages={'required': _('No pool name has been entered')})
status = models.IntegerField(_('status'))
type = models.CharField(_('type'), max_length=100)
size = models.IntegerField(_('size'))
volumes = models.IntegerField(_('volumes'))
name = models.CharField(
_("name"),
max_length=20,
error_messages={"required": _("No pool name has been entered")},
)
status = models.IntegerField(_("status"))
type = models.CharField(_("type"), max_length=100)
size = models.IntegerField(_("size"))
volumes = models.IntegerField(_("volumes"))
class Meta:
managed = False
def __str__(self):
return f'{self.name}'
return f"{self.name}"
class Volume(models.Model):
name = models.CharField(_('name'), max_length=128)
type = models.CharField(_('format'), max_length=12, choices=(('qcow2', 'qcow2 (recommended)'), ('qcow', 'qcow'), ('raw', 'raw')))
allocation = models.IntegerField(_('allocation'))
size = models.IntegerField(_('size'))
name = models.CharField(_("name"), max_length=128)
type = models.CharField(
_("format"),
max_length=12,
choices=(("qcow2", "qcow2 (recommended)"), ("qcow", "qcow"), ("raw", "raw")),
)
allocation = models.IntegerField(_("allocation"))
size = models.IntegerField(_("size"))
class Meta:
managed = False
verbose_name_plural = "Volumes"
def __str__(self):
return f'{self.name}'
return f"{self.name}"
class Storage(models.Model):
state = models.IntegerField(_('state'))
size = models.IntegerField(_('size'))
free = models.IntegerField(_('free'))
status = models.CharField(_('status'), max_length=128)
path = models.CharField(_('path'), max_length=128)
type = models.CharField(_('type'), max_length=128)
autostart = models.BooleanField(_('autostart'))
volumes = models.ForeignKey(Volume, related_name="storage_volumes", on_delete=models.DO_NOTHING)
state = models.IntegerField(_("state"))
size = models.IntegerField(_("size"))
free = models.IntegerField(_("free"))
status = models.CharField(_("status"), max_length=128)
path = models.CharField(_("path"), max_length=128)
type = models.CharField(_("type"), max_length=128)
autostart = models.BooleanField(_("autostart"))
volumes = models.ForeignKey(
Volume, related_name="storage_volumes", on_delete=models.DO_NOTHING
)
class Meta:
managed = False
def __str__(self):
return f'{self.path}'
return f"{self.path}"

View file

@ -27,7 +27,12 @@ def storages(request, compute_id):
errors = False
try:
conn = wvmStorages(compute.hostname, compute.login, compute.password, compute.type)
conn = wvmStorages(
compute.hostname,
compute.login,
compute.password,
compute.type
)
storages = conn.get_storages_info()
secrets = conn.get_secrets()
@ -45,7 +50,11 @@ def storages(request, compute_id):
msg = _("You need create secret for pool")
messages.error(request, msg)
errors = True
if not data["ceph_pool"] and not data["ceph_host"] and not data["ceph_user"]:
if (
not data["ceph_pool"]
and not data["ceph_host"]
and not data["ceph_user"]
):
msg = _("You need input all fields for creating ceph pool")
messages.error(request, msg)
errors = True
@ -69,8 +78,15 @@ def storages(request, compute_id):
data["target"],
)
else:
conn.create_storage(data["stg_type"], data["name"], data["source"], data["target"])
return HttpResponseRedirect(reverse("storage", args=[compute_id, data["name"]]))
conn.create_storage(
data["stg_type"],
data["name"],
data["source"],
data["target"],
)
return HttpResponseRedirect(
reverse("storage", args=[compute_id, data["name"]])
)
else:
for msg_err in form.errors.values():
messages.error(request, msg_err.as_text())
@ -94,19 +110,26 @@ def storage(request, compute_id, pool):
target = os.path.normpath(os.path.join(path, str(f_name)))
if not target.startswith(path):
raise Exception(_("Security Issues with file uploading"))
try:
with open(target, "wb+") as f:
for chunk in f_name.chunks():
f.write(chunk)
except FileNotFoundError:
messages.error(request, _("File not found. Check the path variable and filename"))
messages.error(
request, _("File not found. Check the path variable and filename")
)
compute = get_object_or_404(Compute, pk=compute_id)
meta_prealloc = False
form = CreateVolumeForm()
conn = wvmStorage(compute.hostname, compute.login, compute.password, compute.type, pool)
conn = wvmStorage(
compute.hostname,
compute.login,
compute.password,
compute.type, pool
)
storages = conn.get_storages()
state = conn.is_active()
@ -147,7 +170,9 @@ def storage(request, compute_id, pool):
volname = request.POST.get("volname", "")
vol = conn.get_volume(volname)
vol.delete(0)
messages.success(request, _("Volume: %(vol)s is deleted.") % {"vol": volname})
messages.success(
request, _("Volume: %(vol)s is deleted.") % {"vol": volname}
)
return redirect(reverse("storage", args=[compute.id, pool]))
# return HttpResponseRedirect(request.get_full_path())
if "iso_upload" in request.POST:
@ -156,7 +181,10 @@ def storage(request, compute_id, pool):
messages.error(request, error_msg)
else:
handle_uploaded_file(path, request.FILES["file"])
messages.success(request, _("ISO: %(file)s is uploaded.") % {"file": request.FILES["file"]})
messages.success(
request,
_("ISO: %(file)s is uploaded.") % {"file": request.FILES["file"]},
)
return HttpResponseRedirect(request.get_full_path())
if "cln_volume" in request.POST:
form = CloneImage(request.POST)
@ -174,10 +202,13 @@ def storage(request, compute_id, pool):
else:
format = None
try:
name = conn.clone_volume(data["image"], data["name"], format, meta_prealloc)
name = conn.clone_volume(
data["image"], data["name"], format, meta_prealloc
)
messages.success(
request,
_("%(image)s image cloned as %(name)s successfully") % {"image": data["image"], "name": name},
_("%(image)s image cloned as %(name)s successfully")
% {"image": data["image"], "name": name},
)
return HttpResponseRedirect(request.get_full_path())
except libvirtError as lib_err:
@ -202,7 +233,13 @@ def create_volume(request, compute_id, pool):
compute = get_object_or_404(Compute, pk=compute_id)
meta_prealloc = False
conn = wvmStorage(compute.hostname, compute.login, compute.password, compute.type, pool)
conn = wvmStorage(
compute.hostname,
compute.login,
compute.password,
compute.type,
pool
)
storages = conn.get_storages()
@ -223,7 +260,9 @@ def create_volume(request, compute_id, pool):
disk_owner_uid,
disk_owner_gid,
)
messages.success(request, _("Image file %(name)s is created successfully") % {"name": name})
messages.success(
request, _("Image file %(name)s is created successfully") % {"name": name}
)
else:
for msg_err in form.errors.values():
messages.error(request, msg_err.as_text())
@ -241,7 +280,13 @@ def get_volumes(request, compute_id, pool):
data = {}
compute = get_object_or_404(Compute, pk=compute_id)
try:
conn = wvmStorage(compute.hostname, compute.login, compute.password, compute.type, pool)
conn = wvmStorage(
compute.hostname,
compute.login,
compute.password,
compute.type,
pool
)
conn.refresh()
data["vols"] = sorted(conn.get_volumes())
except libvirtError: