mirror of
https://github.com/retspen/webvirtcloud
synced 2025-07-31 12:41:08 +00:00
Accounts app improvements and tests
This commit is contained in:
parent
8afef36656
commit
5172a9f619
20 changed files with 622 additions and 227 deletions
|
@ -1,9 +1,10 @@
|
|||
from appsettings.settings import app_settings
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.forms import ModelForm, ValidationError
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from appsettings.models import AppSettings
|
||||
|
||||
from .models import UserInstance
|
||||
from .models import UserInstance, UserSSHKey
|
||||
from .utils import validate_ssh_key
|
||||
|
||||
|
||||
class UserInstanceForm(ModelForm):
|
||||
|
@ -18,7 +19,7 @@ class UserInstanceForm(ModelForm):
|
|||
|
||||
def clean_instance(self):
|
||||
instance = self.cleaned_data['instance']
|
||||
if AppSettings.objects.get(key="ALLOW_INSTANCE_MULTIPLE_OWNER").value == 'False':
|
||||
if app_settings.ALLOW_INSTANCE_MULTIPLE_OWNER == 'False':
|
||||
exists = UserInstance.objects.filter(instance=instance)
|
||||
if exists:
|
||||
raise ValidationError(_('Instance owned by another user'))
|
||||
|
@ -28,3 +29,43 @@ class UserInstanceForm(ModelForm):
|
|||
class Meta:
|
||||
model = UserInstance
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class ProfileForm(ModelForm):
|
||||
class Meta:
|
||||
model = get_user_model()
|
||||
fields = ('first_name', 'last_name', 'email')
|
||||
|
||||
|
||||
class UserSSHKeyForm(ModelForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.user = kwargs.pop('user', None)
|
||||
self.publickeys = UserSSHKey.objects.filter(user=self.user)
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def clean_keyname(self):
|
||||
for key in self.publickeys:
|
||||
if self.cleaned_data['keyname'] == key.keyname:
|
||||
raise ValidationError(_("Key name already exist"))
|
||||
|
||||
return self.cleaned_data['keyname']
|
||||
|
||||
def clean_keypublic(self):
|
||||
for key in self.publickeys:
|
||||
if self.cleaned_data['keypublic'] == key.keypublic:
|
||||
raise ValidationError(_("Public key already exist"))
|
||||
|
||||
if not validate_ssh_key(self.cleaned_data['keypublic']):
|
||||
raise ValidationError(_('Invalid key'))
|
||||
return self.cleaned_data['keypublic']
|
||||
|
||||
def save(self, commit=True):
|
||||
ssh_key = super().save(commit=False)
|
||||
ssh_key.user = self.user
|
||||
if commit:
|
||||
ssh_key.save()
|
||||
return ssh_key
|
||||
|
||||
class Meta:
|
||||
model = UserSSHKey
|
||||
fields = ('keyname', 'keypublic')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue