def get(self): if self.config.search_auth_key_required and not ( self.auth and self.auth.search_permission): return self.error(403, 'Missing or invalid authorization key\n') pfif_version = pfif.PFIF_VERSIONS.get(self.params.version or '1.2') # Retrieve parameters and do some sanity checks on them. query_string = self.request.get("q") subdomain = self.request.get("subdomain") max_results = min(self.params.max_results or 100, HARD_MAX_RESULTS) if not query_string: return self.error(400, 'Missing q parameter') if not subdomain: return self.error(400, 'Missing subdomain parameter') # Perform the search. results = indexing.search(Person.all_in_subdomain(subdomain), TextQuery(query_string), max_results) records = [pfif_version.person_to_dict(result) for result in results] utils.optionally_filter_sensitive_fields(records, self.auth) # Define the function to retrieve notes for a person. def get_notes_for_person(person): notes = model.Note.get_by_person_record_id( self.subdomain, person['person_record_id']) records = map(pfif_version.note_to_dict, notes) utils.optionally_filter_sensitive_fields(records, self.auth) return records self.response.headers['Content-Type'] = 'application/xml' pfif_version.write_file(self.response.out, records, get_notes_for_person)
def get(self): if self.config.search_auth_key_required and not (self.auth and self.auth.search_permission): return self.error(403, "Missing or invalid authorization key\n") pfif_version = pfif.PFIF_VERSIONS.get(self.params.version or "1.2") # Retrieve parameters and do some sanity checks on them. query_string = self.request.get("q") subdomain = self.request.get("subdomain") max_results = min(self.params.max_results or 100, HARD_MAX_RESULTS) if not query_string: return self.error(400, "Missing q parameter") if not subdomain: return self.error(400, "Missing subdomain parameter") # Perform the search. results = indexing.search(Person.all_in_subdomain(subdomain), TextQuery(query_string), max_results) records = [pfif_version.person_to_dict(result) for result in results] utils.optionally_filter_sensitive_fields(records, self.auth) # Define the function to retrieve notes for a person. def get_notes_for_person(person): notes = model.Note.get_by_person_record_id(self.subdomain, person["person_record_id"]) records = map(pfif_version.note_to_dict, notes) utils.optionally_filter_sensitive_fields(records, self.auth) return records self.response.headers["Content-Type"] = "application/xml" pfif_version.write_file(self.response.out, records, get_notes_for_person)