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)
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
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]
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
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
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
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
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 }
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
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()