def get_task_list(self):

        checklist_count_dictionary = self.get_checklist_count_dictionary()
        cursor = self._connection.cursor()
        query = "SELECT TS_ID, " \
                "TS_DESCRIPTION, " \
                "ST_ID, " \
                "TS_ENTRY_DATE, " \
                "CT_ID, " \
                "PR_ID, " \
                "TS_DUE_DATE, "\
                "TS_EXPECTED_HOURS, " \
                "TS_EXPECTED_MINUTES " \
                "FROM TASKS " \
                "ORDER BY TS_DUE_DATE ASC, PR_ID DESC"
        status_dictionary = self.get_status_dictionary()
        category_dictionary = self._get_category_dictionary()
        priority_dictionary = self.get_priority_dictionary()
        cursor.execute(query)
        task_list = []
        for (ts_id, ts_description, st_id, ts_entry_date, ct_id,
             pr_id, ts_due_date, ts_expected_hours, ts_expected_minutes) in cursor:
            task = Task(id_=ts_id,
                        description=ts_description,
                        status=status_dictionary[st_id],
                        entry_date=ts_entry_date,
                        priority = priority_dictionary[pr_id],
                        expected_hours = ts_expected_hours,
                        expected_minutes = ts_expected_minutes)
            if ts_due_date is not None:
                task.set_due_date(ts_due_date.date())
            if ct_id is not None:
                task.set_category(category_dictionary[ct_id])
            if ts_id in checklist_count_dictionary:
                task.set_checklist_count(checklist_count_dictionary[ts_id])
            task_list.append(task)

        cursor.close()

        return task_list