Ejemplo n.º 1
0
 def get_outdoor_v1(self):
     """Get outdoor data."""
     return flask.jsonify({
         'cycling': fetch_dataset(Datasets.CYCLING_ROUTES),
         'hiking': fetch_dataset(Datasets.HIKING_ROUTES),
         'running': fetch_dataset(Datasets.RUNNING_ROUTES),
     })
Ejemplo n.º 2
0
 def get_media_v1(self):
     """Get media data."""
     movies_df = fetch_dataset(Datasets.MOVIES)
     podcasts_df = fetch_dataset(Datasets.PODCASTS)
     tv_shows_df = fetch_dataset(Datasets.TV_SHOWS)
     youtube_channels_df = fetch_dataset(Datasets.YOUTUBE_CHANNELS)
     return flask.jsonify({
         'movies':
         list(movies_df.T.to_dict().values()),
         'podcasts':
         list(podcasts_df.T.to_dict().values()),
         'tv':
         list(tv_shows_df.T.to_dict().values()),
         'youtube':
         list(youtube_channels_df.T.to_dict().values()),
     })
Ejemplo n.º 3
0
    def post_projects_download_v1(self, project_id):
        """Post a project download action."""
        projects = fetch_dataset(Datasets.PROJECTS)
        for project in projects:
            if project['project_id'] == project_id:
                project_name = project['name']
                self._log(
                    f"Project \"{project_name}\" ({project_id}) downloaded")

                success_message = f"Successfully downloaded project {project_name}"
                return create_response(success_message,
                                       HTTPCodes.SUCCESS_GENERAL)
        error_message = f"Project with ID {project_id} not found"
        return create_response(error_message, HTTPCodes.ERROR_NOT_FOUND)
Ejemplo n.º 4
0
    def get_survey_results_v1(self):
        """Get survey data."""
        result_documents = list(self._db_surveys.find())
        aggregated_counts = {}
        for result_document in result_documents:
            survey_id = result_document['survey_id']
            choices_array = np.array(
                result_document['response']['choices']).astype(int)
            if survey_id not in aggregated_counts:
                aggregated_counts[survey_id] = np.zeros_like(choices_array)
            aggregated_counts[survey_id] += choices_array

        surveys = fetch_dataset(Datasets.SURVEYS)
        survey_map = {survey['survey_id']: survey for survey in surveys}

        results = []
        for survey_id, survey_counts in aggregated_counts.items():
            survey = survey_map[survey_id]
            survey_result_questions = []
            for question_counts, question in zip(survey_counts,
                                                 survey['questions']):
                question_frequencies = question_counts / question_counts.sum()
                question_result_choices = []
                for option_number in range(len(question['options'])):
                    question_result_choices.append({
                        'option':
                        question['options'][option_number],
                        'frequency':
                        float(question_frequencies[option_number]),
                        'count':
                        float(question_counts[option_number]),
                    })
                survey_result_questions.append({
                    "question":
                    question['text'],
                    "options":
                    question_result_choices,
                })
            results.append({
                'survey_name': survey['name'],
                'questions': survey_result_questions,
            })
        return flask.jsonify(results)
Ejemplo n.º 5
0
    def post_survey_results_v1(self, survey_id):
        """Post a survey result."""
        surveys = fetch_dataset(Datasets.SURVEYS)
        for survey in surveys:
            if survey['survey_id'] == survey_id:
                survey_name = survey['name']
                self._log(f"Survey \"{survey_name}\" ({survey_id}) submitted")

                document = {
                    'survey_id': survey_id,
                    'created_date': datetime.now(),
                    'response': flask.request.json,
                }
                self._db_surveys.insert_one(document)

                success_message = f"Successfully submitted survey \"{survey_name}\""
                return create_response(success_message,
                                       HTTPCodes.SUCCESS_GENERAL)
        error_message = f"Survey with ID {survey_id} not found"
        return create_response(error_message, HTTPCodes.ERROR_NOT_FOUND)
Ejemplo n.º 6
0
 def get_projects_v1(self):
     """Get project data."""
     return flask.jsonify(fetch_dataset(Datasets.PROJECTS))
Ejemplo n.º 7
0
 def get_surveys_v1(self):
     """Get survey data."""
     return flask.jsonify(fetch_dataset(Datasets.SURVEYS))
Ejemplo n.º 8
0
 def get_professional_jobs_v1(self):
     """Get job data."""
     return flask.jsonify(fetch_dataset(Datasets.JOBS))
Ejemplo n.º 9
0
 def get_recipes_v1(self):
     """Get recipe data."""
     return flask.jsonify(fetch_dataset(Datasets.RECIPES))
Ejemplo n.º 10
0
 def get_professional_v1(self):
     """Get professional data."""
     return flask.jsonify({
         'courses': fetch_dataset(Datasets.COURSES),
         'jobs': fetch_dataset(Datasets.JOBS),
     })
Ejemplo n.º 11
0
 def get_professional_courses_v1(self):
     """Get college course data."""
     return flask.jsonify(fetch_dataset(Datasets.COURSES))
Ejemplo n.º 12
0
 def get_media_podcasts_v1(self):
     """Get podcast data."""
     podcasts_df = fetch_dataset(Datasets.PODCASTS)
     return flask.jsonify(list(podcasts_df.T.to_dict().values()))
Ejemplo n.º 13
0
 def get_archive_v1(self):
     """Get archive data."""
     return flask.jsonify(fetch_dataset(Datasets.ARCHIVE))
Ejemplo n.º 14
0
 def get_posts_v1(self):
     """Get blog post data."""
     return flask.jsonify({'posts': fetch_dataset(Datasets.POSTS)})
Ejemplo n.º 15
0
 def get_media_movies_v1(self):
     """Get movie data."""
     movies_df = fetch_dataset(Datasets.MOVIES)
     return flask.jsonify(list(movies_df.T.to_dict().values()))
Ejemplo n.º 16
0
 def get_outdoor_running_v1(self):
     """Get running data."""
     return flask.jsonify(fetch_dataset(Datasets.RUNNING_ROUTES))
Ejemplo n.º 17
0
 def get_outdoor_hiking_v1(self):
     """Get hiking data."""
     return flask.jsonify(fetch_dataset(Datasets.HIKING_ROUTES))
Ejemplo n.º 18
0
 def get_outdoor_cycling_v1(self):
     """Get cycling data."""
     return flask.jsonify(fetch_dataset(Datasets.CYCLING_ROUTES))
Ejemplo n.º 19
0
 def get_media_tv_v1(self):
     """Get TV data."""
     tv_df = fetch_dataset(Datasets.TV_SHOWS)
     return flask.jsonify(list(tv_df.T.to_dict().values()))
Ejemplo n.º 20
0
 def get_media_youtube_v1(self):
     """Get YouTube data."""
     youtube_df = fetch_dataset(Datasets.YOUTUBE_CHANNELS)
     return flask.jsonify(list(youtube_df.T.to_dict().values()))