コード例 #1
0
ファイル: usersearch.py プロジェクト: Ramesh7128/udacityplus
    def get(self):
        """Returns a jsonp object containing user search results
        """
        term = urllib2.unquote(self.request.get("q"))
        # TODO: grant access only to queries that provide an API key and originate from a known domain
        api_key = urllib2.unquote(self.request.get("apikey"))

        query = "(tokenized_un:{}) OR (tokenized_rn:{})".format(term, term)
        logging.info("SEARCH: {}".format(term))
        # match the query only on username or real_name fields
        search_results = find_users(query)
        logging.info("SEARCH - results count: {}".format(search_results.number_found))

        results = {"people": []}

        # TODO: this should be made faster
        for doc in search_results:
            person = {}
            for field in doc.fields:
                if field.name == "username":
                    person[field.name] = field.value
                if field.name == "real_name":
                    person[field.name] = field.value
                if field.name == "avatar_url":
                    person[field.name] = field.value
            results["people"].append(person)

        self.response.out.write("%s(%s)" % (urllib2.unquote(self.request.get("callback")), json.dumps(results)))
コード例 #2
0
    def get(self):
        """Returns a jsonp object containing user search results
        """
        term = urllib2.unquote(self.request.get('q'))
        #TODO: grant access only to queries that provide an API key and originate from a known domain
        api_key = urllib2.unquote(self.request.get('apikey'))

        query = '(tokenized_un:{}) OR (tokenized_rn:{})'.format(term, term)
        logging.info("SEARCH: {}".format(term))
        # match the query only on username or real_name fields
        search_results = find_users(query)
        logging.info("SEARCH - results count: {}".format(
            search_results.number_found))

        results = {'people': []}

        #TODO: this should be made faster
        for doc in search_results:
            person = {}
            for field in doc.fields:
                if field.name == 'username':
                    person[field.name] = field.value
                if field.name == 'real_name':
                    person[field.name] = field.value
                if field.name == 'avatar_url':
                    person[field.name] = field.value
            results['people'].append(person)

        self.response.out.write("%s(%s)" % (urllib2.unquote(
            self.request.get('callback')), json.dumps(results)))
コード例 #3
0
    def testSearch(self):
        results = find_all()
        self.assertEqual(len(results), 3,
                         "Should find 2 users, found: %s" % len(results))

        results = find_users("person")
        self.assertEqual(
            results.number_found, 2,
            "Should find 2 users, found: %s" % results.number_found)
コード例 #4
0
ファイル: User.py プロジェクト: Ramesh7128/udacityplus
    def _post_put_hook(self, future):
        """Post put hook, adds user's username and real name to search index. This fires every time a user
         instance is saved
        """
        try:
            doc_id = find_users(self.username_norm).results[0].doc_id
        except IndexError:
            doc_id = None

        if self.searchable:
            # TODO: update document by putting one with the same id
            # TODO: separate log_token to a login tracking subsystem or implement GAE Users. every time a user logs in
            #       User instance gets saved and _post_put_hook called, etc.

            doc = create_user_search_document(self.username_norm, self.real_name, self.avatar_url, doc_id)
            add_to_index(doc, 'users')
        elif not self.searchable and doc_id:
            remove_from_index(doc_id, 'users')
コード例 #5
0
ファイル: user_test.py プロジェクト: Ramesh7128/udacityplus
    def testSearch(self):
        results = find_all()
        self.assertEqual(len(results), 3, "Should find 2 users, found: %s" % len(results))

        results = find_users("person")
        self.assertEqual(results.number_found, 2, "Should find 2 users, found: %s" % results.number_found)