def execute(self, recommendation_id: int, user_id: int) -> Activity: if recommendation_id is None: raise BadArgException() # TEST IF RECOMMENDATION ALREADY IN ACTIVITY FOR THE USER existing_activity = Activity.query. \ filter_by(user_id=user_id). \ filter_by(recommendation_id=recommendation_id).first() if existing_activity: raise AlreadyStartedException activity = Activity() activity.recommendation_id = recommendation_id activity.user_id = user_id BaseObject.check_and_save(activity) HistoryActivity().execute(activity.id, "pending") return activity