def test_add_idea(self): from shootout.models import Idea user = self._addUser() idea = Idea( author=user, title=u'Foo', text=u'Lorem ipsum dolor sit amet', ) self.session.flush() idea = self.session.query(Idea).filter(Idea.title == u'Foo') idea = idea.first() self.assertEqual(idea.comments, []) self.assertEqual(idea.author.user_id, user.user_id) self.assertEqual(idea.author.username, u'username') self.assertEqual(idea.title, u'Foo') self.assertEqual(idea.text, u'Lorem ipsum dolor sit amet') self.assertEqual(idea.hits, 0) self.assertEqual(idea.misses, 0) self.assertEqual(idea.tags, []) self.assertEqual(idea.voted_users.all(), []) self.assertEqual(idea.hit_percentage, 0) self.assertEqual(idea.total_votes, 0) self.assertEqual(idea.vote_differential, 0)
def _addIdea(self, target=None, user=None): from shootout.models import Idea if not user: user = self._addUser() idea = Idea(target=target, author=user, title=u'title', text=u'text') self.session.add(idea) self.session.flush() return idea
def idea_add(request): target = request.GET.get('target') session = DBSession() if target: target = Idea.get_by_id(target, with_joinedload=False) if not target: return HTTPNotFound() kind = 'comment' else: kind = 'idea' form = Form(request, schema=AddIdeaSchema) if 'form.submitted' in request.POST and form.validate(): author_username = authenticated_userid(request) author = User.get_by_username(author_username) idea = Idea(target=target, author=author, title=form.data['title'], text=form.data['text']) tags = Tag.create_tags(form.data['tags']) if tags: idea.tags = tags session.add(idea) redirect_url = route_url('idea', request, idea_id=idea.idea_id) return HTTPFound(location=redirect_url) login_form = login_form_view(request) return { 'form': FormRenderer(form), 'toolbar': toolbar_view(request), 'cloud': cloud_view(request), 'latest': latest_view(request), 'login_form': login_form, 'target': target, 'kind': kind, }