def test_add_post_to_followers_news(self): users = self._mass_test_follow() Post.add_post(users[1].id, "Test message!") self.assertEqual('1', users[0].get_news(0, -1)[0]['id']) self.assertEqual('1', users[2].get_news(0, -1)[0]['id']) self.assertEqual('1', users[3].get_news(0, -1)[0]['id'])
def add_post(): """Add new post""" user = User.get_single_user(request.form["user"]) title = request.form["title"] content = request.form["content"] tags = request.form.getlist("tags") if (title == "" or content == ""): flash("Missing Input: Please fill out both Title and Content") return redirect(f"/create_post/{user.id}") post = Post(title=title, content=content, user_id=user.id) Post.add_post(post) for tag in tags: PostTag.add_post_tag(PostTag(post_id=post.id, tag_id=tag)) return redirect(f"/post_detail/{post.id}")
def test_get_news(self): users = self._mass_test_follow() data = [ [users[1].id, 'Test message 1!'], [users[1].id, 'Test message 2!'], [users[1].id, 'Test message 3!'], [users[2].id, 'Test message 1!'], [users[2].id, 'Test message 2!'] ] for i, (test_user_id, test_status) in enumerate(data): Post.add_post(test_user_id, test_status) self.assertEqual(5, len(users[0].get_news(0, -1))) self.assertEqual(3, len(users[1].get_news(0, -1))) self.assertEqual(5, len(users[2].get_news(0, -1))) self.assertEqual(5, len(users[3].get_news(0, -1)))
def test_post_deleted(self): with app.test_client() as client: id = User.query.filter(User.first_name == 'Flash').one().id post_id = Post.add_post('test post title', 'test content', id).id client.post(f'/posts/{post_id}/delete') post = Post.get_post_by_id(post_id) self.assertIsNone(post)
def test_get_posts(self): users = self._create_test_users() data = [ [users[0].id, 'Test message 1!'], [users[0].id, 'Test message 2!'], [users[0].id, 'Test message 3!'] ] for i, (test_user_id, test_status) in enumerate(data): Post.add_post(test_user_id, test_status) posts = users[0].get_posts(0, -1) self.assertEqual(len(data), len(posts)) for i, post in enumerate(reversed(posts)): self.assertEqual(data[i][0], post['user'].id) self.assertEqual(data[i][1], post['status'])
def commit_post(id): title = request.form.get('title') content = request.form.get('content') post = Post.add_post(title, content, id) tags = Tag.get_tags() for tag in tags: if (request.form.get(tag.name, None) is not None): PostTag.add(post.id, tag.id) return redirect(f'/users/{id}')
def run_scraper(): try: fetch_time = datetime.datetime.now() post_dicts = fetch_posts(from_page_num=1, to_page_num=3) post_dicts.sort(key=lambda p: p['id']) for post_dict in post_dicts: print post_dict['id'], post_dict['title'].encode('utf-8') Post.add_post(id=post_dict['id'], post_type=post_dict['post_type'], by=post_dict['by'], created_at=post_dict['created_at'], url=post_dict['url'], rank_when_fetched=post_dict['rank'], score=post_dict['score'], comment_count=post_dict['comment_count'], title=post_dict['title'], last_fetch_at=fetch_time ) except Exception as e: report_error(e, raise_again=False) raise app_exceptions.ScraperError("Something went wrong with the scraper, error has been reported.")
def post(self): title = self.get_form_value('title') content = self.get_form_value('content') if title and content: post = Post.add_post(title=title, content=content, user_id=str(self.user.key().id())) post.put() self.redirect('/posts/%s' % post.key().id()) else: error = 'Please enter both title and content' self.render('newpost.html', user=self.user, title=title, content=content, error=error)
def commit_post(id): title = request.form.get('title') content = request.form.get('content') Post.add_post(title, content, id) return redirect(f'/users/{id}')
def save(self, request): if not request.user.id: return Post.add_post(request.user.id, self.cleaned_data['status'])