2020-05-27 12:46:37 +00:00
|
|
|
from django.contrib.auth.models import User
|
2018-07-30 06:24:29 +00:00
|
|
|
from django.core.validators import MinValueValidator
|
2020-05-28 05:20:23 +00:00
|
|
|
from django.db import models
|
2020-10-14 12:27:57 +00:00
|
|
|
from django.utils.translation import gettext_lazy as _
|
2020-05-27 12:46:37 +00:00
|
|
|
from instances.models import Instance
|
2015-02-27 08:53:51 +00:00
|
|
|
|
2020-07-17 08:05:47 +00:00
|
|
|
|
2020-07-13 09:33:09 +00:00
|
|
|
class UserInstanceManager(models.Manager):
|
|
|
|
def get_queryset(self):
|
|
|
|
return super().get_queryset().select_related('instance', 'user')
|
2015-02-27 08:53:51 +00:00
|
|
|
|
2020-10-14 08:37:46 +00:00
|
|
|
|
2020-05-28 05:20:23 +00:00
|
|
|
class UserInstance(models.Model):
|
|
|
|
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
|
|
|
instance = models.ForeignKey(Instance, on_delete=models.CASCADE)
|
|
|
|
is_change = models.BooleanField(default=False)
|
|
|
|
is_delete = models.BooleanField(default=False)
|
|
|
|
is_vnc = models.BooleanField(default=False)
|
2015-02-27 08:53:51 +00:00
|
|
|
|
2020-07-13 09:33:09 +00:00
|
|
|
objects = UserInstanceManager()
|
|
|
|
|
2020-06-15 06:57:17 +00:00
|
|
|
def __str__(self):
|
2020-09-25 12:57:17 +00:00
|
|
|
return _('Instance "%(inst)s" of user %(user)s') % {"inst": self.instance, "user": self.user}
|
2020-06-16 12:35:08 +00:00
|
|
|
|
|
|
|
class Meta:
|
|
|
|
unique_together = ['user', 'instance']
|
2015-05-27 11:10:57 +00:00
|
|
|
|
|
|
|
|
2020-05-28 05:20:23 +00:00
|
|
|
class UserSSHKey(models.Model):
|
|
|
|
user = models.ForeignKey(User, on_delete=models.DO_NOTHING)
|
2020-06-12 11:46:17 +00:00
|
|
|
keyname = models.CharField(_('key name'), max_length=25)
|
|
|
|
keypublic = models.CharField(_('public key'), max_length=500)
|
2015-05-27 11:10:57 +00:00
|
|
|
|
2020-06-15 06:57:17 +00:00
|
|
|
def __str__(self):
|
2015-05-27 11:10:57 +00:00
|
|
|
return self.keyname
|
2016-03-23 08:00:42 +00:00
|
|
|
|
2020-03-16 13:59:45 +00:00
|
|
|
|
2020-05-28 05:20:23 +00:00
|
|
|
class UserAttributes(models.Model):
|
|
|
|
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
2020-05-28 12:19:25 +00:00
|
|
|
can_clone_instances = models.BooleanField(default=True)
|
2020-06-12 11:46:17 +00:00
|
|
|
max_instances = models.IntegerField(_('max instances'),
|
|
|
|
default=2,
|
2020-06-10 12:16:58 +00:00
|
|
|
help_text=_("-1 for unlimited. Any integer value"),
|
2020-05-28 05:20:23 +00:00
|
|
|
validators=[
|
|
|
|
MinValueValidator(-1),
|
|
|
|
])
|
|
|
|
max_cpus = models.IntegerField(
|
2020-06-12 11:46:17 +00:00
|
|
|
_('max CPUs'),
|
2020-04-24 16:34:29 +00:00
|
|
|
default=2,
|
2020-06-12 11:46:17 +00:00
|
|
|
help_text=_("-1 for unlimited. Any integer value"),
|
2020-05-27 12:46:37 +00:00
|
|
|
validators=[MinValueValidator(-1)],
|
|
|
|
)
|
2020-05-28 05:20:23 +00:00
|
|
|
max_memory = models.IntegerField(
|
2020-06-12 11:46:17 +00:00
|
|
|
_('max memory'),
|
2020-05-27 12:46:37 +00:00
|
|
|
default=2048,
|
2020-06-12 11:46:17 +00:00
|
|
|
help_text=_("-1 for unlimited. Any integer value"),
|
2020-05-27 12:46:37 +00:00
|
|
|
validators=[MinValueValidator(-1)],
|
|
|
|
)
|
2020-05-28 05:20:23 +00:00
|
|
|
max_disk_size = models.IntegerField(
|
2020-06-12 11:46:17 +00:00
|
|
|
_('max disk size'),
|
2020-05-27 12:46:37 +00:00
|
|
|
default=20,
|
2020-06-12 11:46:17 +00:00
|
|
|
help_text=_("-1 for unlimited. Any integer value"),
|
2020-05-27 12:46:37 +00:00
|
|
|
validators=[MinValueValidator(-1)],
|
|
|
|
)
|
2016-03-23 08:00:42 +00:00
|
|
|
|
2020-06-15 06:57:17 +00:00
|
|
|
def __str__(self):
|
2016-03-23 08:00:42 +00:00
|
|
|
return self.user.username
|
2020-05-27 12:46:37 +00:00
|
|
|
|
|
|
|
|
2020-05-28 05:20:23 +00:00
|
|
|
class PermissionSet(models.Model):
|
2020-05-27 12:46:37 +00:00
|
|
|
"""
|
|
|
|
Dummy model for holding set of permissions we need to be automatically added by Django
|
|
|
|
"""
|
|
|
|
class Meta:
|
|
|
|
default_permissions = ()
|
2020-05-28 05:20:23 +00:00
|
|
|
permissions = (('change_password', _('Can change password')), )
|
2020-05-27 12:46:37 +00:00
|
|
|
|
|
|
|
managed = False
|