Ejemplo n.º 1
0
    def post(self):
        try:
            self.parser.add_argument('request_id',
                                     required=True,
                                     help="Field request_id is mandatory")

            args = self.parser.parse_args()

            request_id = self._get_request_id(request)
            self._validate_request_id(request_id)
            self._validate_receiver(request_id)
            friend = self._accept_friend_request(request_id)
            print(friend)
            UserActivityModel.log_friend_activity(friend["user_id_rcv"],
                                                  friend["user_id_sender"],
                                                  "ADD")
            UserActivityModel.log_friend_activity(friend["user_id_sender"],
                                                  friend["user_id_rcv"], "ADD")

            return self._get_friends_requests_response(friend)

        except BadRequest as ex:
            return ErrorHandler.create_error_response(
                "Fields request_id are mandatory", 400)
        except NoFriendRequestFoundException as e:
            return ErrorHandler.create_error_response(str(e), 400)
        except FriendshipAlreadyExistsException as e:
            return ErrorHandler.create_error_response(str(e), 400)
        except UserMismatchException as e:
            return ErrorHandler.create_error_response(str(e), 409)
        except DBConnectionError as e:
            return ErrorHandler.create_error_response(str(e), 500)
Ejemplo n.º 2
0
	def put(self, id):
		try:
			self.parser.add_argument('_id', required=True, help="Field id is mandatory")
			self.parser.add_argument('_rev', required=True, help="Field rev is mandatory")
			self.parser.add_argument('title', required=True, help="Field title is mandatory")
			self.parser.add_argument('location', required=True, help="Field location is mandatory")
			self.parser.add_argument('visibility', required=True, help="Field visibility is mandatory")
			self.parser.add_argument('multimedia', required=True, help="Field multimedia is mandatory")
			self.parser.add_argument('story_type', required=True, help="Field story_type is mandatory")
			self.parser.add_argument('user_id', required=True, help="Field user_id is mandatory")

			self._validate_author(id)
			args = self.parser.parse_args()
			
			body = json.loads(request.data.decode('utf-8'))

			storie = StorieModel.update_storie(id, body)
			UserActivityModel.log_storie_activity(storie["user_id"], storie["_id"], "EDIT")
			return ResponseBuilder.build_response(storie, 200)

		except BadRequest as ex:
			return ErrorHandler.create_error_response("Fields id, rev, title, location, user_id, visibility, multimedia and story_type are mandatory", 400)
		except NoStorieFoundException as e:
			return ErrorHandler.create_error_response(str(e), 404)
		except DataVersionException as e:
			return ErrorHandler.create_error_response(str(e), 409)
		except UserMismatchException as e:
			return ErrorHandler.create_error_response(str(e), 409)
		except DBConnectionError as e:
			return ErrorHandler.create_error_response(str(e), 500)
Ejemplo n.º 3
0
    def post(self):
        try:
            self.parser.add_argument('message',
                                     required=True,
                                     help="Field message is mandatory")
            self.parser.add_argument('user_id',
                                     required=True,
                                     help="Field user_id is mandatory")
            self.parser.add_argument('storie_id',
                                     required=True,
                                     help="Field storie_id is mandatory")

            args = self.parser.parse_args()
            validate_sender(args.get('user_id'))

            comment = CommentModel.create_comment(args)
            UserActivityModel.log_comment_activity(comment["user_id"],
                                                   comment["storie_id"], "ADD")

            return comment

        except BadRequest as ex:
            return ErrorHandler.create_error_response(
                "Fields message, user_id and storie_id are mandatory", 400)
        except NoUserDataFoundException as e:
            return ErrorHandler.create_error_response(str(e), 400)
        except NoStorieFoundException as e:
            return ErrorHandler.create_error_response(str(e), 400)
        except UserMismatchException as e:
            return ErrorHandler.create_error_response(str(e), 409)
        except DBConnectionError as e:
            return ErrorHandler.create_error_response(str(e), 500)
    def post(self):
        try:
            self.parser.add_argument('reaction',
                                     required=True,
                                     help="Field reaction is mandatory")
            self.parser.add_argument('user_id',
                                     required=True,
                                     help="Field user_id is mandatory")
            self.parser.add_argument('storie_id',
                                     required=True,
                                     help="Field storie_id is mandatory")

            args = self.parser.parse_args()
            validate_sender(args.get('user_id'))
            reaction = ReactionModel.create_reaction(args)
            UserActivityModel.log_reaction_activity(reaction["user_id"],
                                                    reaction["storie_id"],
                                                    reaction["reaction"],
                                                    "ADD")
            return reaction

        except BadRequest as ex:
            return ErrorHandler.create_error_response(
                "Fields reaction, user_id and storie_id are mandatory", 400)
        except NoStorieFoundException as e:
            return ErrorHandler.create_error_response(str(e), 400)
        except UserMismatchException as e:
            return ErrorHandler.create_error_response(str(e), 409)
        except StorieReactionAlreadyFoundException as e:
            return ErrorHandler.create_error_response(str(e), 400)
        except DBConnectionError as e:
            return ErrorHandler.create_error_response(str(e), 500)
Ejemplo n.º 5
0
	def delete(self, reaction_id):
		try:
			self._validate_author(reaction_id)
			reaction = ReactionModel.remove_reaction(reaction_id)
			UserActivityModel.log_reaction_activity(reaction["user_id"], reaction["storie_id"], reaction["reaction"], "DELETE")
			return self._get_reactions_response(reaction)
		except NoReactionFoundException as e:
			return ErrorHandler.create_error_response(str(e), 404)
		except UserMismatchException as e:
			return ErrorHandler.create_error_response(str(e), 409)
		except DBConnectionError as e:
			return ErrorHandler.create_error_response(str(e), 500)
Ejemplo n.º 6
0
	def delete(self, id):
		try:
			self._validate_author(id)
			body = json.loads(request.data.decode('utf-8'))
			storie_user_id = body['user_id']
			storie = StorieModel.delete_storie(id, storie_user_id)
			UserActivityModel.log_storie_activity(storie["user_id"], storie["_id"], "DELETE")
			return ResponseBuilder.build_response(storie, 204)
		except NoStorieFoundException as e:
			return ErrorHandler.create_error_response(str(e), 404)
		except UserMismatchException as e:
			return ErrorHandler.create_error_response(str(e), 409)
		except DBConnectionError as e:
			return ErrorHandler.create_error_response(str(e), 500)
 def delete(self, comment_id):
     try:
         self._validate_author(comment_id)
         comment = CommentModel.remove_comment(comment_id)
         UserActivityModel.log_comment_activity(comment["user_id"],
                                                comment["storie_id"],
                                                "DELETE")
         return self._get_comments_response(comment)
     except NoCommentFoundException as e:
         return ErrorHandler.create_error_response(str(e), 404)
     except UserMismatchException as e:
         return ErrorHandler.create_error_response(str(e), 409)
     except DBConnectionError as e:
         return ErrorHandler.create_error_response(str(e), 500)
Ejemplo n.º 8
0
 def delete(self, id):
     try:
         self._validate_friendship(id)
         friend = FriendModel.delete_friend(id)
         UserActivityModel.log_friend_activity(friend["user_id_rcv"],
                                               friend["user_id_sender"],
                                               "DELETE")
         UserActivityModel.log_friend_activity(friend["user_id_sender"],
                                               friend["user_id_rcv"],
                                               "DELETE")
         return ResponseBuilder.build_response(friend, 204)
     except NoFriendFoundException as e:
         return ErrorHandler.create_error_response(str(e), 404)
     except UserMismatchException as e:
         return ErrorHandler.create_error_response(str(e), 409)
     except DBConnectionError as e:
         return ErrorHandler.create_error_response(str(e), 500)
    def put(self, comment_id):
        try:
            self.parser.add_argument('_id',
                                     required=True,
                                     help="Field id is mandatory")
            self.parser.add_argument('_rev',
                                     required=True,
                                     help="Field rev is mandatory")
            self.parser.add_argument('storie_id',
                                     required=True,
                                     help="Field storie_id is mandatory")
            self.parser.add_argument('user_id',
                                     required=True,
                                     help="Field user_id is mandatory")
            self.parser.add_argument('message',
                                     required=True,
                                     help="Field message is mandatory")

            self._validate_author(comment_id)
            args = self.parser.parse_args()

            body = json.loads(request.data.decode('utf-8'))
            comment = CommentModel.update_comment(comment_id, body)
            UserActivityModel.log_comment_activity(comment["user_id"],
                                                   comment["storie_id"],
                                                   "EDIT")

            return ResponseBuilder.build_response(comment, 200)

        except BadRequest as ex:
            return ErrorHandler.create_error_response(
                "Fields id, rev, storie_id, user_id and message are mandatory",
                400)
        except NoUserDataFoundException as e:
            return ErrorHandler.create_error_response(str(e), 400)
        except NoCommentFoundException as e:
            return ErrorHandler.create_error_response(str(e), 404)
        except DataVersionException as e:
            return ErrorHandler.create_error_response(str(e), 409)
        except UserMismatchException as e:
            return ErrorHandler.create_error_response(str(e), 409)
        except DBConnectionError as e:
            return ErrorHandler.create_error_response(str(e), 500)
Ejemplo n.º 10
0
    def post(self):
        try:

            self.parser.add_argument('title',
                                     required=True,
                                     help="Field title is mandatory")
            self.parser.add_argument('location',
                                     required=True,
                                     help="Field location is mandatory")
            self.parser.add_argument('visibility',
                                     required=True,
                                     help="Field visibility is mandatory")
            self.parser.add_argument('multimedia',
                                     required=True,
                                     help="Field multimedia is mandatory")
            self.parser.add_argument('story_type',
                                     required=True,
                                     help="Field story_type is mandatory")
            self.parser.add_argument('user_id',
                                     required=True,
                                     help="Field user_id is mandatory")

            args = self.parser.parse_args()
            validate_sender(args.get("user_id"))

            storie = self._create_user_storie_request(request)

            UserActivityModel.log_storie_activity(storie["user_id"],
                                                  storie["_id"], "ADD")
            self._create_multimedia_file(args.get('title'),
                                         args.get('multimedia'))
            return storie

        except BadRequest as ex:
            return ErrorHandler.create_error_response(
                "Fields title, location, visibility, multimedia, user_id and story_type are mandatory",
                400)
        except UserMismatchException as e:
            return ErrorHandler.create_error_response(str(e), 409)
        except DBConnectionError as e:
            return ErrorHandler.create_error_response(str(e), 500)
Ejemplo n.º 11
0
 def _get_num_users_today(self):
     return UserActivityModel.count_today_activities()
Ejemplo n.º 12
0
def _save_user_activity():
    user_id = get_user_id()
    #UserActivityModel.update_user_activiy(user_id)
    UserActivityModel.log_user_login_activity(user_id)
Ejemplo n.º 13
0
    def get_stories(user_id, story_type='normal'):
        data = []
        sp_list = []
        stories_list = {}
        users_activity = {}
        db = MongoController.get_mongodb_instance(MONGODB_USER, MONGODB_PASSWD)
        UserDataModel.exist_user(user_id)
        friends_id = FriendModel.get_friends_array_by_user_id(user_id)
        friends_id.append(user_id)

        opt1 = {"expired_time": ""}
        opt2 = {"expired_time": {"$gte": DateController.get_date_time()}}

        stories = db.stories.find({
            "$or": [{
                "$and": [{
                    "story_type": story_type
                }, {
                    "$or": [opt1, opt2]
                }, {
                    "user_id": {
                        "$in": friends_id
                    }
                }]
            }, {
                "$and": [{
                    "story_type": story_type
                }, {
                    "$or": [opt1, opt2]
                }, {
                    "user_id": {
                        "$nin": friends_id
                    }
                }, {
                    "visibility": "public"
                }]
            }]
        }).sort("created_time", pymongo.DESCENDING)

        for storie in stories:
            storie_user_id = storie["user_id"]
            storie_id = storie["_id"]
            storie = StorieModel.format_storie_dates(storie)
            storie = StorieModel.get_storie_with_user_data(storie)
            storie["comments"] = CommentModel.get_last_storie_comment(
                storie_id)
            storie["reactions"] = ReactionModel.get_storie_reactions(
                storie_id, user_id)

            storie_data = StorieModel.get_storie_resume(storie)
            USER_ACT_PAST_DAYS = 10
            if (storie_user_id not in users_activity):
                users_activity[
                    storie_user_id] = UserActivityModel.log_user_activity_resume(
                        storie_user_id, USER_ACT_PAST_DAYS)

            storie_priority_data = StoriePriorityData(
                storie_id, storie_data["past"], storie_data["num_comments"],
                storie_data["num_reactions"],
                users_activity[storie_user_id]["num_friends"],
                users_activity[storie_user_id]["num_stories"])
            sp_list.append(storie_priority_data)
            RulesMachine.process_data(storie_priority_data)

            stories_list[storie_id] = storie

        sp_list.sort(key=lambda x: x.get_priority(), reverse=True)
        for sp in sp_list:
            data.append(stories_list[sp.get_storie_id()])

        return data