# Mark Huang <mlhuang@cs.princeton.edu>
# Copyright (C) 2006 The Trustees of Princeton University
#
-# $Id: Persons.py,v 1.16 2006/11/02 18:32:55 mlhuang Exp $
+# $Id: Persons.py,v 1.21 2006/11/25 09:35:36 thierry Exp $
#
from types import StringTypes
'site_ids': Parameter([int], "List of site identifiers"),
'key_ids': Parameter([int], "List of key identifiers"),
'slice_ids': Parameter([int], "List of slice identifiers"),
+ 'peer_id': Parameter(int, "Peer at which this slice was created", nullok = True),
}
+ # for Cache
+ class_key = 'email'
+ foreign_fields = ['first_name', 'last_name', 'title', 'email', 'phone', 'url',
+ 'bio', 'enabled', 'password', 'last_updated', 'date_created']
+ foreign_xrefs = [
+ {'field' : 'key_ids', 'class': 'Key', 'table' : 'person_key' } ,
+ {'field' : 'site_ids', 'class': 'Site', 'table' : 'person_site'},
+# xxx this is not handled by Cache yet
+# 'role_ids': Parameter([int], "List of role identifiers"),
+]
+
def validate_email(self, email):
"""
Validate email address. Stolen from Mailman.
raise invalid_email
conflicts = Persons(self.api, [email])
- for person_id, person in conflicts.iteritems():
- if 'person_id' not in self or self['person_id'] != person_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
# Delete all keys
keys = Keys(self.api, self['key_ids'])
- for key in keys.values():
+ for key in keys:
key.delete(commit = False)
# Clean up miscellaneous join tables
database.
"""
- def __init__(self, api, person_filter = None):
- Table.__init__(self, api, Person)
+ def __init__(self, api, person_filter = None, columns = None):
+ Table.__init__(self, api, Person, columns)
sql = "SELECT %s FROM view_persons WHERE deleted IS False" % \
- ", ".join(Person.fields)
+ ", ".join(self.columns)
if person_filter is not None:
- if isinstance(person_filter, list):
+ if isinstance(person_filter, (list, tuple, set)):
# Separate the list into integers and strings
ints = filter(lambda x: isinstance(x, (int, long)), person_filter)
strs = filter(lambda x: isinstance(x, StringTypes), person_filter)