From 53106f3b838a34c37bfbb971826903802b62c0ff Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Sat, 27 Apr 2013 16:43:01 -0400 Subject: [PATCH] update user admin --- plstackapi/core/admin.py | 12 +++++++++++- plstackapi/core/models/pluser.py | 22 +++++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/plstackapi/core/admin.py b/plstackapi/core/admin.py index 81736ac..acf4c7d 100644 --- a/plstackapi/core/admin.py +++ b/plstackapi/core/admin.py @@ -163,6 +163,16 @@ class SliverAdmin(OSModelAdmin): ('Sliver', {'fields': ['ip', 'name', 'slice', 'flavor', 'image', 'key', 'node', 'deploymentNetwork']}) ] list_display = ['ip', 'name', 'slice', 'flavor', 'image', 'key', 'node', 'deploymentNetwork'] + + def save_model(self, request, obj, form, change): + client = OpenStackClient(tenant=obj.slice.name, **request.session.get('auth', {})) + obj.driver = OpenStackDriver(client=client) + obj.save() + + def delete_model(self, request, obj): + client = OpenStackClient(tenant=obj.slice.name, **request.session.get('auth', {})) + obj.driver = OpenStackDriver(client=client) + obj.delete() class UserCreationForm(forms.ModelForm): @@ -209,7 +219,7 @@ class UserChangeForm(forms.ModelForm): return self.initial["password"] -class PLUserAdmin(UserAdmin): +class PLUserAdmin(UserAdmin, OSModelAdmin): class Meta: app_label = "core" diff --git a/plstackapi/core/models/pluser.py b/plstackapi/core/models/pluser.py index 0e8f9d9..1c01a42 100644 --- a/plstackapi/core/models/pluser.py +++ b/plstackapi/core/models/pluser.py @@ -3,6 +3,7 @@ import datetime from django.db import models from plstackapi.core.models import PlCoreBase from plstackapi.core.models import Site +from plstackapi.openstack.driver import OpenStackDriver from django.contrib.auth.models import User, AbstractBaseUser, UserManager, BaseUserManager # Create your models here. @@ -54,7 +55,7 @@ class PLUser(AbstractBaseUser): db_index=True, ) - + user_id = models.CharField(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) @@ -99,3 +100,22 @@ class PLUser(AbstractBaseUser): return self.is_admin + def save(self, *args, **kwds): + if not self.user_id: + if not hasattr(self, 'driver'): + setattr(self, 'driver', OpenStackDriver()) + name = self.email[:self.email.find('@')] + user_fields = {'name': name, + 'email': self.email, + 'password': self.password, + 'enabled': self.is_active} + user = self.driver.create_user(**user_fields) + self.user_id = user.id + 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) + super(PLUser, self).delete(*args, **kwds) -- 2.43.0