tags defined on Person and Site were not exposed to Filter, so that e.g.
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Mon, 18 Aug 2014 17:46:23 +0000 (19:46 +0200)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Mon, 18 Aug 2014 17:46:23 +0000 (19:46 +0200)
GetPersons({'hrn':<something>},['email','hrn'])
was failing although the 'hrn' tag is marked as expose_to_api

PLC/Persons.py
PLC/Sites.py

index d4a3f57..da432a1 100644 (file)
@@ -393,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})
index b0c7061..969b2a9 100644 (file)
@@ -258,7 +258,8 @@ class Sites(Table):
                 site_filter = Filter(Site.fields, {'site_id': ints, 'login_base': strs})
                 sql += " AND (%s) %s" % site_filter.sql(api, "OR")
             elif isinstance(site_filter, dict):
-                site_filter = Filter(Site.fields, site_filter)
+                allowed_fields=dict(Site.fields.items()+Site.tags.items())
+                site_filter = Filter(allowed_fields, site_filter)
                 sql += " AND (%s) %s" % site_filter.sql(api, "AND")
             elif isinstance (site_filter, StringTypes):
                 site_filter = Filter(Site.fields, {'login_base':site_filter})