Ejemplo n.º 1
0
    def post(self):
        # Get the current user
        current_user = get_jwt_identity()
        # Parse incoming data and extract required field
        search_data = search_schema.load(request.get_json())
        incoming_string = search_data['string']
        incoming_version = search_data['version']
        incoming_content = search_data['content']

        if incoming_content == 'authors':
            active_user_objects = ActiveModel.find_entry_by_name(
                incoming_string, incoming_version, current_user)
            # Slice the results according to the need
            if incoming_version > 1:
                active_user_objects = active_user_objects[(incoming_version -
                                                           1) * 15:]
            # Return results and if there are no users matching the criteria then return empty list
            # Return empty list if there are no more versions with users matching the criteria
            if len(active_user_objects) != 0:
                return {
                    'results':
                    ActiveModel.generate_search_data(active_user_objects,
                                                     current_user)
                }
            else:
                return {'message': NO_MORE_SEARCH_DATA}, 400

        elif incoming_content == 'stories':
            discovered_story_objects = StoryModel.find_stories_by_title(
                incoming_string, incoming_version)
            # Slice the results according to the need
            if incoming_version > 1:
                discovered_story_objects = discovered_story_objects[
                    (incoming_version - 1) * 15:]
            # Return results and if there are no users matching the criteria then return empty list
            # Return empty list if there are no more versions with users matching the criteria
            if len(discovered_story_objects) != 0:
                return {
                    'results': [
                        StoryModel.generate_story_element_data(story)
                        for story in discovered_story_objects
                    ]
                }
            else:
                return {'message': NO_MORE_SEARCH_DATA}, 400
Ejemplo n.º 2
0
 def post(self):
     genre_data = genre_schema.load(request.get_json())
     discovered_stories = StoryModel.find_stories_by_genre(
         genre_data['genre'], genre_data['version'])
     # Slice the results based on version
     if genre_data['version'] > 1:
         discovered_stories = discovered_stories[(genre_data['version'] -
                                                  1) * 15:]
     # Send appropriate response
     if len(discovered_stories) != 0:
         return {
             'results': [
                 StoryModel.generate_story_element_data(story)
                 for story in discovered_stories
             ]
         }
     else:
         return {'message': NO_MORE_GENRE_DATA}, 400
Ejemplo n.º 3
0
 def post(self):
     # Extract user who tends to like from jwt
     current_user = get_jwt_identity()
     # Check if the jwt was sent or not
     if not current_user:
         # Create an object using request data
         profile_object = profile_schema.load(request.get_json())
         active_user_object = ActiveModel.find_entry_by_uid(
             profile_object['uid'])
         if active_user_object is None:
             return {'message': INVALID_REQUEST}
         else:
             return {
                 # If basic data is not yet added then empty dict will be returned
                 # If data is kept private then appropriate message is returned
                 'basic':
                 BasicModel.generate_basic_profile_data(active_user_object),
                 'stories': [
                     StoryModel.generate_story_element_data(story)
                     for story in StoryModel.filter_story_object_list(
                         active_user_object.submissions)
                 ],
                 'following':
                 FollowModel.generate_following_profile_data(
                     active_user_object),
                 'followers':
                 FollowModel.generate_followers_profile_data(
                     active_user_object),
                 'favourites':
                 LikesModel.generate_favourites_profile_data(
                     active_user_object),
                 'achievements': {
                     'views': active_user_object.views,
                     'likes': active_user_object.likes
                 }
             }
     else:
         # Create an object using request data
         active_user_object = ActiveModel.find_entry_by_uid(
             get_jwt_identity())
         return {
             'basic':
             BasicModel.force_generate_basic_profile_data(
                 active_user_object),
             'stories': [
                 StoryModel.generate_story_element_data(story)
                 for story in StoryModel.filter_story_object_list(
                     active_user_object.submissions)
             ],
             'following':
             FollowModel.force_generate_following_profile_data(
                 active_user_object),
             'followers':
             FollowModel.generate_followers_profile_data(
                 active_user_object),
             'favourites':
             LikesModel.force_generate_favourites_profile_data(
                 active_user_object),
             'achievements': {
                 'views': active_user_object.views,
                 'likes': active_user_object.likes
             }
         }