def get_all_ongoing_events(user: str): """ :return: An ongoing event list """ cnx = db_connector.get_connection() cursor = cnx.cursor() query = ("SELECT * FROM event " "where `time` >= now()") cursor.execute(query) events = [] for (eid, name, host, address, longi, lati, zipcode, event_time, description, image, num_likes, category) in cursor: new_event = Event(user=host, name=name, address=address, longitude=longi, latitude=lati, zipcode=zipcode, event_time=datetime.datetime.strptime( str(event_time), "%Y-%m-%d %H:%M:%S")) new_event.event_id = eid new_event.description = description new_event.image = image new_event.num_likes = num_likes new_event.category = category if user: new_event.liked = Like.exist(user, eid) new_event.attended = Join.user_is_attend(user=user, event=eid) else: new_event.liked = False new_event.attended = False new_event.comments = Comment.get_comment_by_event(eid) events.append(new_event) cursor.close() cnx.close() return events
def test_delete_comment_1(self): """ Test delete_comment: comment exists """ user = "******" event_id = self.event_id content = "this is a comment" time = datetime.strptime("2020-01-01 12:12:30", "%Y-%m-%d %H:%M:%S") comment = Comment(user=user, content=content, comment_time=time, event=event_id) comment_id = Comment.create_comment(comment) comments = Comment.get_comment_by_event(event_id) self.assertEqual(len(comments), 1) Comment.delete_comment(comment_id) comments = Comment.get_comment_by_event(event_id) self.assertEqual(len(comments), 0)
def test_get_comment_by_event_2(self): """ Test get_comment_by_event: event doesn't exist """ user = "******" event_id = '1' content = "this is a comment" time = datetime.strptime("2020-01-01 12:12:30", "%Y-%m-%d %H:%M:%S") comment = Comment(user=user, content=content, comment_time=time, event=event_id) self.assertRaises(mysql.connector.Error, Comment.create_comment, comment) comments = Comment.get_comment_by_event(event_id) self.assertEqual(len(comments), 0)
def test_add_comment_1(self): """ Test create_comment: user and event exists, comment length good """ user = "******" content = "this is a comment" event_id = self.event_id time = datetime.strptime("2020-01-01 12:12:30", "%Y-%m-%d %H:%M:%S") comment = Comment(user=user, content=content, comment_time=time, event=event_id) comment_id = Comment.create_comment(comment) comments = Comment.get_comment_by_event(event_id) self.assertEqual(len(comments), 1) self.assertIn(comment_id, comments[0].comment_id) Comment.delete_comment(comment_id)
def get_event_by_id(event_id: str, user=None): """ :param event_id: Id of the event :param user: user email :return: An event object whose id is the given event_id, and also indicates whether the user is attending the event """ cnx = db_connector.get_connection() cursor = cnx.cursor() query = ("SELECT * FROM `event` WHERE id='" + event_id + "'") cursor.execute(query) new_event = None for (eid, name, host, address, longitude, latitude, zipcode, event_time, description, image, num_likes, category) in cursor: new_event = Event(user=host, name=name, address=address, longitude=longitude, latitude=latitude, zipcode=zipcode, event_time=datetime.datetime.strptime( str(event_time), "%Y-%m-%d %H:%M:%S")) new_event.event_id = eid new_event.description = description new_event.image = image new_event.num_likes = num_likes new_event.category = category if user: new_event.liked = Like.exist(user, event_id) new_event.attended = Join.user_is_attend(user=user, event=event_id) else: new_event.liked = False new_event.attended = False new_event.comments = Comment.get_comment_by_event(event_id) cursor.close() cnx.close() return new_event