X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FPersons.py;h=8276c06f644339213d5c0e062b911435d5596313;hb=9aecb8c6fde06136bef94e2fd6fce832dc3c0c10;hp=0faa3f8312d5bfd55681e87b5df6c19eb4a25ebe;hpb=77742e8deb5f37a28e28119c43476d15477b75d5;p=plcapi.git diff --git a/PLC/Persons.py b/PLC/Persons.py index 0faa3f8..8276c06 100644 --- a/PLC/Persons.py +++ b/PLC/Persons.py @@ -78,7 +78,7 @@ class Person(Row): Validate email address. Stolen from Mailman. """ email = email.lower() - invalid_email = PLCInvalidArgument("Invalid e-mail address") + invalid_email = PLCInvalidArgument("Invalid e-mail address %s"%email) if not email: raise invalid_email @@ -359,6 +359,12 @@ class Person(Row): # Mark as deleted self['deleted'] = True + + # delete will fail if timestamp fields aren't validated, so lets remove them + for field in ['verification_expires', 'date_created', 'last_updated']: + if field in self: + self.pop(field) + # don't validate, so duplicates can be consistently removed self.sync(commit, validate=False) @@ -387,7 +393,8 @@ class Persons(Table): person_filter = Filter(Person.fields, {'person_id': ints, 'email': strs}) sql += " AND (%s) %s" % person_filter.sql(api, "OR") elif isinstance(person_filter, dict): - person_filter = Filter(Person.fields, person_filter) + allowed_fields=dict(Person.fields.items()+Person.tags.items()) + person_filter = Filter(allowed_fields, person_filter) sql += " AND (%s) %s" % person_filter.sql(api, "AND") elif isinstance (person_filter, StringTypes): person_filter = Filter(Person.fields, {'email':person_filter})