from PLC.Auth import Auth
can_update = lambda (field, value): field in \
- ['name', 'email', 'password', 'enabled']
+ ['first_name', 'last_name', 'email', 'password', \
+ 'enabled', 'title', 'url', 'bio', 'phone']
class AddPerson(Method):
"""
person = Person(self.api, person_fields)
person.sync()
- return person.id
+ return person['person_id']
tablename = 'persons'
+ self.refresh(api)
fields = {
'person_id': Parameter(int, "User identifier", primary_key=True),
'keystone_id': Parameter(str, "Keystone User identifier"),
if not email_re.match(email):
raise invalid_email
+ # check only against users on the same peer
+ if 'peer_id' in self:
+ namespace_peer_id = self['peer_id']
+ else:
+ namespace_peer_id = None
+
+ conflicts = Person().select(filter={'email':email,'peer_id':namespace_peer_id})
+
+ for person in conflicts:
+ if 'person_id' not in self or self['person_id'] != person.person_id:
+ raise PLCInvalidArgument, "E-mail address already in use"
+
return email
def can_update(self, person):
assert isinstance(person, Person)
- if self.person_id == person.person_id:
+ if self['person_id'] == person['person_id']:
return True
if 'admin' in self['roles']:
self.object = users[0]
self['keystone_id'] = self.object.id
AlchemyObj.insert(self, dict(self))
+ person = AlchemyObj.select(self, filter={'keystone_id': self['keystone_id']})[0]
+ self['person_id'] = person.person_id
else:
self.object = self.api.client_shell.keystone.users.update(self['person_id'], nova_person)
AlchemyObj.update(self, {'person_id': self['person_id']}, dict(self))
self.api.client_shell.keystone.users.delete(nova_user)
# delete relationships
- SlicePerson().delete.filter({'person_id': self['person_id']})
+ for slice_person in SlicePerson().select(filter={'person_id': self['person_id']}):
+ slice_person.delete()
# delete person
- AlchemyObj.delete(self, dict(self))
+ AlchemyObj.delete(self, filter={'person_id': self['person_id']})
class Persons(list):
if not columns or 'slice_ids' in columns:
person_slices = SlicePerson().select(filter={'person_id': person['person_id']})
person['slice_ids'] = [rec.slice_id for rec in person_slices]
- self.append(person)
+ self.append(person)
+