X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FPersons.py;h=87e936feb2023d30ad3e6d925c43376dddbc1461;hb=f1dff45a95e6323595b05cbd97899734cd2991d6;hp=519a088e201312288a26bf43dea5b272160f2c53;hpb=3aa7cdae8ad52ed63721a58a5e9c8052695f76a1;p=plcapi.git diff --git a/PLC/Persons.py b/PLC/Persons.py index 519a088..87e936f 100644 --- a/PLC/Persons.py +++ b/PLC/Persons.py @@ -4,7 +4,7 @@ # Mark Huang # 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 @@ -50,8 +50,20 @@ class Person(Row): '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. @@ -81,8 +93,8 @@ class Person(Row): 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 @@ -272,7 +284,7 @@ class Person(Row): # 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 @@ -290,14 +302,14 @@ class Persons(Table): 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)