2015-02-27 08:53:51 +00:00
|
|
|
from django.db import models
|
|
|
|
from django.contrib.auth.models import User
|
2017-10-05 06:08:04 +00:00
|
|
|
from django.conf import settings
|
2015-02-27 08:53:51 +00:00
|
|
|
from instances.models import Instance
|
2018-07-30 06:24:29 +00:00
|
|
|
from django.core.validators import MinValueValidator
|
2015-02-27 08:53:51 +00:00
|
|
|
|
|
|
|
|
|
|
|
class UserInstance(models.Model):
|
2018-08-08 11:50:58 +00:00
|
|
|
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
|
|
|
instance = models.ForeignKey(Instance, on_delete=models.CASCADE)
|
2015-02-27 08:53:51 +00:00
|
|
|
is_change = models.BooleanField(default=False)
|
|
|
|
is_delete = models.BooleanField(default=False)
|
2016-05-09 10:08:31 +00:00
|
|
|
is_vnc = models.BooleanField(default=False)
|
2015-02-27 08:53:51 +00:00
|
|
|
|
|
|
|
def __unicode__(self):
|
2015-03-27 15:12:15 +00:00
|
|
|
return self.instance.name
|
2015-05-27 11:10:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
class UserSSHKey(models.Model):
|
2018-08-08 11:50:58 +00:00
|
|
|
user = models.ForeignKey(User, on_delete=models.DO_NOTHING)
|
2015-05-27 11:10:57 +00:00
|
|
|
keyname = models.CharField(max_length=25)
|
|
|
|
keypublic = models.CharField(max_length=500)
|
|
|
|
|
|
|
|
def __unicode__(self):
|
|
|
|
return self.keyname
|
2016-03-23 08:00:42 +00:00
|
|
|
|
|
|
|
class UserAttributes(models.Model):
|
|
|
|
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
2017-03-31 12:33:03 +00:00
|
|
|
can_clone_instances = models.BooleanField(default=True)
|
2018-07-30 06:24:29 +00:00
|
|
|
max_instances = models.IntegerField(default=1, help_text="-1 for unlimited. Any integer value", validators=[MinValueValidator(-1),])
|
|
|
|
max_cpus = models.IntegerField(default=1, help_text="-1 for unlimited. Any integer value", validators=[MinValueValidator(-1)])
|
|
|
|
max_memory = models.IntegerField(default=2048, help_text="-1 for unlimited. Any integer value", validators=[MinValueValidator(-1)])
|
|
|
|
max_disk_size = models.IntegerField(default=20, help_text="-1 for unlimited. Any integer value", validators=[MinValueValidator(-1)])
|
2016-03-23 08:00:42 +00:00
|
|
|
|
2017-07-18 13:04:56 +00:00
|
|
|
@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:
|
2017-10-05 06:08:04 +00:00
|
|
|
for instance_name in settings.NEW_USER_DEFAULT_INSTANCES:
|
2017-07-18 13:04:56 +00:00
|
|
|
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)
|
|
|
|
|
2016-03-23 08:00:42 +00:00
|
|
|
def __unicode__(self):
|
|
|
|
return self.user.username
|