Exemplo n.º 1
0
    def delete_user(cls, user_id, token):

        cls.logger().info(f"Deleting videos uploaded by user {user_id}...")
        from daos.videos_dao import VideoDAO
        VideoDAO.delete_all_user_videos(user_id)

        cls.logger().info(f"Deleting comments made by user {user_id}...")
        from daos.comments_dao import CommentDAO
        CommentDAO.delete_all_user_comments(user_id)

        cls.logger().info(f"Deleting reactions given by user {user_id}...")
        from daos.reactions_dao import ReactionDAO
        ReactionDAO.delete_all_user_reactions(user_id)

        cls.logger().info(f"Deleting chats posted by user {user_id}...")
        from daos.chats_dao import ChatsDAO
        ChatsDAO.delete_all_user_chats(user_id)

        cls.logger().info(
            f"Deleting friends, friend requests and push token for user {user_id}..."
        )
        user = cls.get_raw(user_id)
        friends = user.friends
        for f in friends:
            user.delete_friendship(f)
        user.sent_requests = []
        user.push_token = None
        db.session.delete(user)
        db.session.commit()

        cls.logger().info(f"Deleting user {user_id} from AuthSv...")
        from services.authsender import AuthSender
        AuthSender.delete_user(user_id, token)
Exemplo n.º 2
0
    def delete(self, vid_id):
        parser = reqparse.RequestParser()
        parser.add_argument("x-access-token", location='headers')
        args = parser.parse_args()

        uuid = AuthSender.get_uuid_from_token(args["x-access-token"])

        self.logger.debug(f"Deleting video {vid_id}")
        VideoDAO.delete(vid_id, uuid)

        self.logger.info(f"Deleted video with id {vid_id}. RESPONSECODE:200")
        return {"message":"OK"}, 200
Exemplo n.º 3
0
    def get_all_from(cls, vid_id):
        vid = VideoDAO.get_raw(vid_id)

        count = vid.increase_view_count()
        cls.logger().info(
            f"Increased view count for vid {vid_id}. New count: {count}")

        cls.logger().info(f"Serializing comments for vid {vid_id}...")
        return [c.serialize() for c in vid.comments]
Exemplo n.º 4
0
    def get(self):
        parser = reqparse.RequestParser()
        parser.add_argument("x-access-token", location='headers')
        parser.add_argument("search", type=str, required=False, location='args', default=None)
        parser.add_argument("page", type=int, required=False, location='args', default=1)
        parser.add_argument("per_page", type=int, required=False, location='args', default=50)
        args = parser.parse_args()

        uuid = AuthSender.get_uuid_from_token(args["x-access-token"])

        if args["search"]:
            videos = VideoDAO.get_from_search(uuid, args["x-access-token"], args["search"], page=args["page"], per_page=args["per_page"])
        else:
            videos = VideoDAO.get_recommendations(uuid, args["x-access-token"], page=args["page"], per_page=args["per_page"])

        # videos = VideoDAO.get_all(uuid, args["x-access-token"])

        self.logger.info(f"Executed /videos search, found {len(videos['videos'])} videos. RESPONSECODE:200")
        return videos, 200
Exemplo n.º 5
0
    def get(self, user_id):
        parser = reqparse.RequestParser()
        parser.add_argument("x-access-token", location='headers')
        args = parser.parse_args()
        viewer_uuid = AuthSender.get_uuid_from_token(args['x-access-token'])

        vids = VideoDAO.get_videos_by(user_id, viewer_uuid,
                                      args["x-access-token"])

        self.logger.info(
            f"{len(vids)} vids collected by user {user_id}. RESPONSECODE:200")
        return vids, 200
Exemplo n.º 6
0
    def post(self):
        args = post_parser.parse_args()

        uuid = AuthSender.get_uuid_from_token(args["x-access-token"])

        # add to local db
        new_vid_with_url = VideoDAO.add_vid(title=args['title'], description=args['description'], uuid=uuid, 
                        location=args['location'], is_private=args['is_private'], thumbnail_url=args['thumbnail_url'])

        # upload to mediasv
        new_vid_with_url['firebase_url'], new_vid_with_url['timestamp'] = MediaSender.send_url(new_vid_with_url['video_id'],args['firebase_url'])

        self.logger.info(f"New video uploaded, video info: {new_vid_with_url}. RESPONSECODE:201")
        return new_vid_with_url, 201
Exemplo n.º 7
0
    def get(self, vid_id):
        parser = reqparse.RequestParser()
        parser.add_argument("x-access-token", location='headers')
        args = parser.parse_args()

        self.logger.debug("getting uuid from token, via authsv")
        uuid = AuthSender.get_uuid_from_token(args["x-access-token"])

        self.logger.debug("getting single vid from videoDAO")
        vid = VideoDAO.get(vid_id, uuid)

        vid["author"] = AuthSender.get_author_name(vid["uuid"], args["x-access-token"])

        self.logger.info(f"Retrieved single video, id {vid_id}, info: {vid}. RESPONSECODE:200")
        return vid, 200
Exemplo n.º 8
0
    def get(self):

        count = httpDAO.count_total_30_days()

        requests_per_hour = httpDAO.count_reqs_per_hour()

        requests_per_method = httpDAO.count_reqs_per_method()

        requests_per_response = httpDAO.count_reqs_per_response_code()

        registered_users = httpDAO.count_registered_users_in_30_days()

        new_vids = httpDAO.count_uploaded_vids_in_30_days()

        new_cmnts = httpDAO.count_posted_comments_in_30_days()

        reqs_last_30_days = httpDAO.count_requests_in_30_days()

        sv_errors, sv_errors_per_path = httpDAO.count_sv_errors_in_30_days()

        cli_errors, cli_errors_per_path = httpDAO.count_cli_errors_in_30_days()

        views_per_day = httpDAO.count_views_per_day()

        #--- non-http stats:

        private_vids_count, total_vids_count, average_views = VideoDAO.count_private_over_total_vids()

        total_registered_users_count = UsersDAO.count_total_registered_users()

        return {
            "requests_per_hour": requests_per_hour,
            "requests_per_method": requests_per_method,
            "requests_per_code": requests_per_response,
            "requests_in_last_30_days": reqs_last_30_days,
            "sv_errors_in_last_30_days": sv_errors,
            "sv_errors_per_path_in_last_30_days": sv_errors_per_path,
            "cli_errors_in_last_30_days": cli_errors,
            "cli_errors_per_path_in_last_30_days": cli_errors_per_path,
            "new_users_in_last_30_days": registered_users,
            "new_vids_in_last_30_days": new_vids,
            "new_cmnts_in_last_30_days": new_cmnts,
            "views_in_last_30_days": views_per_day,
            "average_views": average_views,
            "private_and_total_vids_count": [private_vids_count, total_vids_count],
            "registered_users_count": total_registered_users_count,
            "total_count_in_last_30_days": count
        }
Exemplo n.º 9
0
    def patch(self, vid_id):
        edit_parser = reqparse.RequestParser()
        edit_parser.add_argument("x-access-token", location='headers')
        edit_parser.add_argument('description', type = str, location = 'json')
        edit_parser.add_argument('location', type = str, location = 'json')
        edit_parser.add_argument('title', type = str, location = 'json')
        edit_parser.add_argument('is_private', type = bool, location = 'json')
        args = edit_parser.parse_args()

        uuid = AuthSender.get_uuid_from_token(args["x-access-token"])

        self.logger.debug("editing single vid from videoDAO")
        vid = VideoDAO.edit(vid_id, args, uuid)

        self.logger.info(f"Edited video info, id {vid_id}, info: {vid}. RESPONSECODE:200")
        return vid, 200
Exemplo n.º 10
0
    def add_cmnt(cls, vid_id, uuid, text, time, tkn):
        new_cmnt = Comment(uuid=uuid, text=text, vid_time=time)
        vid = VideoDAO.get_raw(vid_id)
        new_cmnt.video = vid

        db.session.add(new_cmnt)
        db.session.commit()
        cls.logger().info(
            f"Succesfully appended comment to video {vid_id}. Comment: {new_cmnt.serialize()}"
        )

        vid.update_relevance()

        # Notification build w/tkn...
        cmnt_author = AuthSender.get_author_name(uuid, tkn)

        if uuid != vid.uuid:
            NotificationsCreator.notify_new_comment(vid.uuid, vid_id,
                                                    vid.title, text,
                                                    cmnt_author)

        return new_cmnt.serialize()