# Mark Huang <mlhuang@cs.princeton.edu>
# Copyright (C) 2006 The Trustees of Princeton University
#
-# $Id: Persons.py,v 1.18 2006/11/09 03:07:42 mlhuang Exp $
+# $Id: Persons.py,v 1.23 2006/11/30 10:12:01 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', ]
+ # forget about these ones, they are read-only anyway
+ # handling them causes Cache to re-sync all over again
+ # '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.
salt = md5.md5(salt).hexdigest()[:8]
return crypt.crypt(password.encode(self.api.encoding), magic + salt + "$")
+ # timestamps
+ # verification_expires in the DB but not exposed here
+ def validate_date_created (self, timestamp):
+ return self.validate_timestamp (timestamp)
+ def validate_last_updated (self, timestamp):
+ return self.validate_timestamp (timestamp)
+
def can_update(self, person):
"""
Returns true if we can update the specified person. We can