from django.db import models
from plstackapi.core.models import PlCoreBase
from plstackapi.core.models import Site
-from plstackapi.openstack.driver import OpenStackDriver
+from plstackapi.openstack.manager import OpenStackManager
from django.contrib.auth.models import User, AbstractBaseUser, UserManager, BaseUserManager
# Create your models here.
user = self.model(
email=PLUserManager.normalize_email(email),
firstname=firstname,
- lastname=lastname
+ lastname=lastname,
+ password=password
)
-
- user.set_password(password)
+ #user.set_password(password)
user.is_admin = True
user.save(using=self._db)
return user
db_index=True,
)
- user_id = models.CharField(help_text="keystone user id", max_length=200)
+ user_id = models.CharField(null=True, blank=True, help_text="keystone user id", max_length=200)
firstname = models.CharField(help_text="person's given name", max_length=200)
lastname = models.CharField(help_text="person's surname", max_length=200)
site = models.ForeignKey(Site, related_name='users', verbose_name="Site this user will be homed too", null=True)
is_active = models.BooleanField(default=True)
- is_admin = models.BooleanField(default=True)
+ is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=True)
objects = PLUserManager()
# Simplest possible answer: Yes, always
return True
- @property
- def is_staff(self):
- "Is the user a member of staff?"
- # Simplest possible answer: All admins are staff
- return self.is_admin
-
-
def save(self, *args, **kwds):
- if not self.user_id:
- if not self.driver:
- setattr(self, 'driver', OpenStackDriver())
- name = self.email[:self.email.find('@')]
- user_fields = {'name': name,
- 'email': self.email,
- 'password': self.password,
- 'enabled': True}
- keystone_user = self.driver.create_user(**user_fields)
- self.user_id = keystone_user.id
- self.set_password(self.password)
+ if not hasattr(self, 'os_manager'):
+ setattr(self, 'os_manager', OpenStackManager())
+
+ self.os_manager.save_user(self)
+ if not self.id:
+ self.set_password(self.password)
super(PLUser, self).save(*args, **kwds)
def delete(self, *args, **kwds):
- if self.user_id:
- if not getattr(self, 'driver'):
- setattr(self, 'driver', OpenStackDriver())
- self.driver.delete_user(self.user_id)
+ if not hasattr(self, 'os_manager'):
+ setattr(self, 'os_manager', OpenStackManager())
+
+ self.os_manager.delete_user(self)
super(PLUser, self).delete(*args, **kwds)