Cache:
[plcapi.git] / PLC / Persons.py
index 822a27f..2f77d90 100644 (file)
@@ -4,7 +4,7 @@
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Copyright (C) 2006 The Trustees of Princeton University
 #
-# $Id: Persons.py,v 1.20 2006/11/24 12:06:00 thierry Exp $
+# $Id: Persons.py,v 1.23 2006/11/30 10:12:01 thierry Exp $
 #
 
 from types import StringTypes
@@ -56,18 +56,16 @@ class Person(Row):
     # for Cache
     class_key = 'email'
     foreign_fields = ['first_name', 'last_name', 'title', 'email', 'phone', 'url',
-                     'bio', 'enabled', 'password', 'last_updated', 'date_created']
-    #foreign_xrefs = { 'Node' : { 'field' : 'node_ids' ,
-    #                 'table': 'slice_node' } }
-    foreign_xrefs = {
-       'Key' : { 'field' : 'key_ids', 'table' : 'person_key' } ,
-       'Site' : { 'field' : 'site_ids', 'table' : 'person_site'},
-#        'key_ids': Parameter([int], "List of key identifiers"),
+                     '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"),
-#        'roles': Parameter([str], "List of roles"),
-#        'site_ids': Parameter([int], "List of site identifiers"),
-#        'slice_ids': Parameter([int], "List of slice identifiers"),
-}
+]
 
     def validate_email(self, email):
         """
@@ -121,6 +119,13 @@ class Person(Row):
             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