def admin_posts_add(): content = Content() content.created_on = datetime.now() content.body = '' content.title = '' content.tags = '' content.parser = 'markdown' return render('admin_content.html', user=g.user, content_type="Post", action="Add", content=content)
def create_content(): return_value = success('The content was created.') payload = get_payload(request) editing = False if payload.get('id'): content = Content.get(payload.get('id')) editing = True return_value = success('The content was updated.') else: content = Content() content.type = payload.get('type').lower() content.title = payload.get('title') content.body = payload.get('body') content.user_id = payload.get('user_id') tags = [t.strip() for t in payload.get('tags', '').split(',') if t.strip()] for tag in tags: count = Tag.filter(Tag.name == tag).count() if not count: new_tag = Tag(name=tag) new_tag.insert() content.tags = ",".join(tags) content.parser = payload.get('parser', 'markdown') content.published = bool(payload.get('published', False)) if not editing: content.slug = make_slug(content.title) else: created_on = payload.get('created_on') if created_on: content.created_on = parser.parse(created_on) valid = content.validate() if valid['success'] or editing: content.insert() safe_commit() return_value['id'] = content.id else: return_value = valid return jsonify(return_value)
def test_content_retrieve(self): user_id = self.user.id ''' RETRIEVE ''' # Create some content using the model directly... content = Content(title="Test Content", published=True, type="post", body="blah blah blah", user_id=self.user.id) content.insert() content1 = content.to_dict() content2 = Content(title="Test Content 2", published=True, type="post", body="blah blah blah", user_id=self.user.id) content2.insert() content2 = content2.to_dict() content3 = Content(title="Test Content 3", published=True, type="post", body="blah blah blah", user_id=self.user.id) content3.insert() content3 = content3.to_dict() content4 = Content(title="Test Content 4", published=True, type="post", body="blah blah blah", user_id=self.user.id) content4.insert() content4 = content4.to_dict() safe_commit() post_data = { 'id': content.id } # retrieve the content. This should work fine. rv = self.app.post('/content_retrieve', data=post_data, follow_redirects=True) data = json.loads(rv.data) self.assertTrue(data['success']) self.assertTrue(data['contents'][0]) self.assertIsNotNone(data['messages']) content = Content.get(data['contents'][0]['id']) self.assertEquals(content.title, data['contents'][0]['title']) self.assertEquals(content.body, data['contents'][0]['body']) self.assertEquals(user_id, data['contents'][0]['user_id']) post_data = { 'content_type': 'post', 'page_size': 3 } # retrieve the content. This should work fine. rv = self.app.post('/content_retrieve', data=post_data, follow_redirects=True) data = json.loads(rv.data) self.assertTrue(data['success']) # There should be three posts. self.assertEquals(data['contents'][0]['title'], content4['title']) self.assertEquals(data['contents'][1]['title'], content3['title']) self.assertEquals(data['contents'][2]['title'], content2['title']) # And only three posts returned self.assertTrue(len(data['contents']) == 3) # Posts should be in the right order self.assertTrue(data['contents'][1]['published_on'] < data['contents'][0]['published_on']) self.assertIsNotNone(data['messages']) post_data = { 'content_type': 'post', 'current_page': 2, 'page_size': 3 } # retrieve the content. This should work fine. rv = self.app.post('/content_retrieve', data=post_data, follow_redirects=True) data = json.loads(rv.data) self.assertTrue(data['success']) # There should be one post. self.assertEquals(data['contents'][0]['title'], content1['title']) # And only one post returned self.assertTrue(len(data['contents']) == 1)