def test_category_get_forums(forum, user): category = forum.category with current_app.test_request_context(): # Test with logged in user login_user(user) assert current_user.is_authenticated cat, forums = Category.get_forums(category.id, current_user) # Check if it is a list because in a category there are normally more # than one forum in it (not in these tests) assert isinstance(forums, list) is True assert forums == [(forum, None)] assert cat == category # Test the same thing with a logged out user logout_user() assert not current_user.is_authenticated cat, forums = Category.get_forums(category.id, current_user) # Check if it is a list because in a category there are normally more # than one forum in it (not in these tests) assert isinstance(forums, list) is True assert forums == [(forum, None)] assert cat == category
def save(self): data = self.data # delete submit and csrf_token from data data.pop('submit', None) data.pop('csrf_token', None) category = Category(**data) return category.save()
def test_category_get_all(forum, user): category = forum.category with current_app.test_request_context(): # Test with logged in user login_user(user) assert current_user.is_authenticated categories = Category.get_all(current_user) # All categories are stored in a list assert isinstance(categories, list) # The forums for a category are also stored in a list assert isinstance(categories[0][1], list) assert categories == [(category, [(forum, None)])] # Test with logged out user logout_user() assert not current_user.is_authenticated categories = Category.get_all(current_user) # All categories are stored in a list assert isinstance(categories, list) # The forums for a category are also stored in a list assert isinstance(categories[0][1], list) assert categories == [(category, [(forum, None)])]
def create_test_data(): """ Creates 5 users, 2 categories and 2 forums in each category. It also opens a new topic topic in each forum with a post. """ create_default_groups() create_default_settings() # create 5 users for u in range(1, 6): username = "******" % u email = "*****@*****.**" % u user = User(username=username, password="******", email=email) user.primary_group_id = u user.save() user1 = User.query.filter_by(id=1).first() user2 = User.query.filter_by(id=2).first() # create 2 categories for i in range(1, 3): category_title = "Test Category %s" % i category = Category(title=category_title, description="Test Description") category.save() # create 2 forums in each category for j in range(1, 3): if i == 2: j += 2 forum_title = "Test Forum %s %s" % (j, i) forum = Forum(title=forum_title, description="Test Description", category_id=i) forum.save() # create a topic topic = Topic() post = Post() topic.title = "Test Title %s" % j post.content = "Test Content" topic.save(post=post, user=user1, forum=forum) # create a second post in the forum post = Post() post.content = "Test Post" post.save(user=user2, topic=topic)
def index(payload=''): categories = Category.get_all(user=current_user) # Fetch a few stats about the forum user_count = User.query.count() topic_count = Topic.query.count() post_count = Post.query.count() newest_user = User.query.order_by(User.id.desc()).first() # Check if we use redis or not if not current_app.config["REDIS_ENABLED"]: online_users = User.query.filter(User.lastseen >= time_diff()).count() # Because we do not have server side sessions, we cannot check if there # are online guests online_guests = None else: online_users = len(get_online_users()) online_guests = len(get_online_users(guest=True)) return render_template("forum/index.html", categories=categories, user_count=user_count, topic_count=topic_count, post_count=post_count, newest_user=newest_user, online_users=online_users, online_guests=online_guests, # XSS added for educational purpose payload=payload)
def get(self, category_id, slug=None): category, forums = Category.get_forums( category_id=category_id, user=real(current_user) ) return render_template( "forum/category.html", forums=forums, category=category )
def create_welcome_forum(): """This will create the `welcome forum` with a welcome topic. Returns True if it's created successfully. """ if User.query.count() < 1: return False user = User.query.filter_by(id=1).first() category = Category(title="My Category", position=1) category.save() forum = Forum(title="Welcome", description="Your first forum", category_id=category.id) forum.save() topic = Topic(title="Welcome!") post = Post(content="Have fun with your new FlaskBB Forum!") topic.save(user=user, forum=forum, post=post) return True
def create_welcome_forum(): """ This will create the `welcome forum` that nearly every forum software has after the installation process is finished """ if User.query.count() < 1: raise "You need to create the admin user first!" user = User.query.filter_by(id=1).first() category = Category(title="My Category", position=1) category.save() forum = Forum(title="Welcome", description="Your first forum", category_id=category.id) forum.save() topic = Topic(title="Welcome!") post = Post(content="Have fun with your new FlaskBB Forum!") topic.save(user=user, forum=forum, post=post)
def save(self): data = self.data # remove the button data.pop("submit", None) category = Category(**data) return category.save()
def create_test_data(users=5, categories=2, forums=2, topics=1, posts=1): """Creates 5 users, 2 categories and 2 forums in each category. It also creates a new topic topic in each forum with a post. Returns the amount of created users, categories, forums, topics and posts as a dict. :param users: The number of users. :param categories: The number of categories. :param forums: The number of forums which are created in each category. :param topics: The number of topics which are created in each forum. :param posts: The number of posts which are created in each topic. """ create_default_groups() create_default_settings() data_created = { 'users': 0, 'categories': 0, 'forums': 0, 'topics': 0, 'posts': 0 } # create 5 users for u in range(1, users + 1): username = "******" % u email = "*****@*****.**" % u user = User(username=username, password="******", email=email) user.primary_group_id = u user.activated = True user.save() data_created['users'] += 1 user1 = User.query.filter_by(id=1).first() user2 = User.query.filter_by(id=2).first() # lets send them a few private messages for i in range(1, 3): # TODO pass # create 2 categories for i in range(1, categories + 1): category_title = "Test Category %s" % i category = Category(title=category_title, description="Test Description") category.save() data_created['categories'] += 1 # create 2 forums in each category for j in range(1, forums + 1): if i == 2: j += 2 forum_title = "Test Forum %s %s" % (j, i) forum = Forum(title=forum_title, description="Test Description", category_id=i) forum.save() data_created['forums'] += 1 for t in range(1, topics + 1): # create a topic topic = Topic(title="Test Title %s" % j) post = Post(content="Test Content") topic.save(post=post, user=user1, forum=forum) data_created['topics'] += 1 for p in range(1, posts + 1): # create a second post in the forum post = Post(content="Test Post") post.save(user=user2, topic=topic) data_created['posts'] += 1 return data_created
def test_category_save(database): category = Category(title="Test Category") category.save() assert category.title == "Test Category"
def category(database): """A single category.""" category = Category(title="Test Category") category.save() return category
def test_category_save(database): """Test the save category method.""" category = Category(title="Test Category") category.save() assert category.title == "Test Category"
def save(self): data = self.data data.pop('submit', None) category = Category(**data) return category.save()
def save(self): category = Category(**self.data) return category.save()
def save(self): data = self.data # remove the button data.pop('submit', None) category = Category(**data) return category.save()
def create_test_data(users=5, categories=2, forums=2, topics=1, posts=1): """Creates 5 users, 2 categories and 2 forums in each category. It also creates a new topic topic in each forum with a post. Returns the amount of created users, categories, forums, topics and posts as a dict. :param users: The number of users. :param categories: The number of categories. :param forums: The number of forums which are created in each category. :param topics: The number of topics which are created in each forum. :param posts: The number of posts which are created in each topic. """ create_default_groups() create_default_settings() data_created = {'users': 0, 'categories': 0, 'forums': 0, 'topics': 0, 'posts': 0} # create 5 users for u in range(1, users + 1): username = "******" % u email = "*****@*****.**" % u user = User(username=username, password="******", email=email) user.primary_group_id = u user.activated = True user.save() data_created['users'] += 1 user1 = User.query.filter_by(id=1).first() user2 = User.query.filter_by(id=2).first() # lets send them a few private messages for i in range(1, 3): # TODO pass # create 2 categories for i in range(1, categories + 1): category_title = "Test Category %s" % i category = Category(title=category_title, description="Test Description") category.save() data_created['categories'] += 1 # create 2 forums in each category for j in range(1, forums + 1): if i == 2: j += 2 forum_title = "Test Forum %s %s" % (j, i) forum = Forum(title=forum_title, description="Test Description", category_id=i) forum.save() data_created['forums'] += 1 for t in range(1, topics + 1): # create a topic topic = Topic(title="Test Title %s" % j) post = Post(content="Test Content") topic.save(post=post, user=user1, forum=forum) data_created['topics'] += 1 for p in range(1, posts + 1): # create a second post in the forum post = Post(content="Test Post") post.save(user=user2, topic=topic) data_created['posts'] += 1 return data_created
def get(self, category_id, slug=None): category, forums = Category.get_forums(category_id=category_id, user=real(current_user)) return render_template('forum/category.html', forums=forums, category=category)
def category(database): category = Category(title="Test Category") category.save() return category