mirror of
https://github.com/retspen/webvirtcloud
synced 2025-07-31 12:41:08 +00:00
91 lines
2.9 KiB
Python
91 lines
2.9 KiB
Python
from django.conf import settings
|
|
from django.contrib.auth.models import User
|
|
from django.core.validators import MinValueValidator
|
|
from django.db.models import (CASCADE, DO_NOTHING, BooleanField, CharField,
|
|
ForeignKey, IntegerField, Model, OneToOneField)
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from instances.models import Instance
|
|
|
|
|
|
class UserInstance(Model):
|
|
user = ForeignKey(User, on_delete=CASCADE)
|
|
instance = ForeignKey(Instance, on_delete=CASCADE)
|
|
is_change = BooleanField(default=False)
|
|
is_delete = BooleanField(default=False)
|
|
is_vnc = BooleanField(default=False)
|
|
|
|
def __unicode__(self):
|
|
return self.instance.name
|
|
|
|
|
|
class UserSSHKey(Model):
|
|
user = ForeignKey(User, on_delete=DO_NOTHING)
|
|
keyname = CharField(max_length=25)
|
|
keypublic = CharField(max_length=500)
|
|
|
|
def __unicode__(self):
|
|
return self.keyname
|
|
|
|
|
|
class UserAttributes(Model):
|
|
user = OneToOneField(User, on_delete=CASCADE)
|
|
can_clone_instances = BooleanField(default=True)
|
|
max_instances = IntegerField(default=1,
|
|
help_text="-1 for unlimited. Any integer value",
|
|
validators=[
|
|
MinValueValidator(-1),
|
|
])
|
|
max_cpus = IntegerField(
|
|
default=1,
|
|
help_text="-1 for unlimited. Any integer value",
|
|
validators=[MinValueValidator(-1)],
|
|
)
|
|
max_memory = IntegerField(
|
|
default=2048,
|
|
help_text="-1 for unlimited. Any integer value",
|
|
validators=[MinValueValidator(-1)],
|
|
)
|
|
max_disk_size = IntegerField(
|
|
default=20,
|
|
help_text="-1 for unlimited. Any integer value",
|
|
validators=[MinValueValidator(-1)],
|
|
)
|
|
|
|
@staticmethod
|
|
def create_missing_userattributes(user):
|
|
try:
|
|
userattributes = user.userattributes
|
|
except UserAttributes.DoesNotExist:
|
|
userattributes = UserAttributes(user=user)
|
|
userattributes.save()
|
|
|
|
@staticmethod
|
|
def add_default_instances(user):
|
|
existing_instances = UserInstance.objects.filter(user=user)
|
|
if not existing_instances:
|
|
for instance_name in settings.NEW_USER_DEFAULT_INSTANCES:
|
|
instance = Instance.objects.get(name=instance_name)
|
|
user_instance = UserInstance(user=user, instance=instance)
|
|
user_instance.save()
|
|
|
|
@staticmethod
|
|
def configure_user(user):
|
|
UserAttributes.create_missing_userattributes(user)
|
|
UserAttributes.add_default_instances(user)
|
|
|
|
def __unicode__(self):
|
|
return self.user.username
|
|
|
|
|
|
class PermissionSet(Model):
|
|
"""
|
|
Dummy model for holding set of permissions we need to be automatically added by Django
|
|
"""
|
|
class Meta:
|
|
default_permissions = ()
|
|
permissions = (
|
|
('change_password', _('Can change password')),
|
|
)
|
|
|
|
managed = False
|