Example #1
0
    def retrieve_documents(self, assessor, query_id, doc_retrieval_count):
        """
        Get documents documents from assessment index for given assessor and query id.
        If there aren't enough documents in assessor index, it will be fetched from crawled index.

        :param assessor: assessor id
        :param query_id: query id
        :param doc_retrieval_count: total docs to retrieve
        :return:
        """

        dao = DAO()

        if not dao.index_exists():
            dao.create_index()
            existing_doc_count = 0
        else:
            existing_doc_count = dao.get_doc_count(assessor, query_id)

        print 'existing count', existing_doc_count

        if existing_doc_count < doc_retrieval_count:
            dao.add_additional_docs(existing_doc_count, doc_retrieval_count,
                                    assessor, query_id)

        assessment_list = dao.retrieve_docs(assessor, query_id,
                                            doc_retrieval_count)

        doc_list = []

        for doc in assessment_list:

            doc_index_id = doc.get_index_id()
            doc_query_id = doc.get_query_id()
            doc_assessor_ = doc.get_assessor()
            doc_url = doc.get_document()
            doc_grade = doc.get_grade()

            doc_list.append({
                'index_id': doc_index_id,
                'query_id': doc_query_id,
                'assessor': doc_assessor_,
                'document': doc_url,
                'grade': doc_grade
            })

        return doc_list