Esempio n. 1
0
    def test_tag_view(self):
        from shootout.views import tag_view
        from shootout.models import Tag
        self.config.testing_securitypolicy(u'username')
        self.config.include('shootout.addroutes')
        self.config.include(register_templates)
        user = self._addUser()
        tag1 = Tag(u'bar')
        tag2 = Tag(u'foo')
        self.session.add_all([tag1, tag2])
        idea1 = self._addIdea(user=user)
        idea1.tags.append(tag1)
        idea2 = self._addIdea(user=user)
        idea2.tags.append(tag1)
        idea3 = self._addIdea(user=user)
        idea3.tags.append(tag2)
        self.session.flush()

        request = testing.DummyRequest()
        request.matchdict = {'tag_name': u'bar'}
        result = tag_view(request)
        ideas = result['ideas'].all()
        self.assertEqual(ideas[0].idea_id, idea1.idea_id)
        self.assertEqual(ideas[1].idea_id, idea2.idea_id)
        self.assertEqual(result['tag'], u'bar')

        request = testing.DummyRequest()
        request.matchdict = {'tag_name': u'foo'}
        result = tag_view(request)
        self.assertEqual(result['ideas'].one().idea_id, idea3.idea_id)
        self.assertEqual(result['tag'], u'foo')
Esempio n. 2
0
    def test_tags_counts(self):
        from shootout.models import Tag

        user = self._addUser()

        idea1 = self._addIdea(user=user)
        idea1.tags = Tag.create_tags(u'foo bar baz')
        self.session.add(idea1)
        idea2 = self._addIdea(user=user)
        idea2.tags = Tag.create_tags(u'baz zzz aaa')
        self.session.add(idea2)
        idea2 = self._addIdea(user=user)
        idea2.tags = Tag.create_tags(u'foo baz')
        self.session.add(idea2)
        self.session.flush()

        tags_counts = Tag.tag_counts()
        expected_counts = [
            ('aaa', 1),
            ('bar', 1),
            ('baz', 3),
            ('foo', 2),
            ('zzz', 1),
        ]
        self.assertEqual(list(tags_counts), expected_counts)
Esempio n. 3
0
    def test_tags_counts(self):
        from shootout.models import Tag

        user = self._addUser()

        idea1 = self._addIdea(user=user)
        idea1.tags = Tag.create_tags(u'foo bar baz')
        self.session.add(idea1)
        idea2 = self._addIdea(user=user)
        idea2.tags = Tag.create_tags(u'baz zzz aaa')
        self.session.add(idea2)
        idea2 = self._addIdea(user=user)
        idea2.tags = Tag.create_tags(u'foo baz')
        self.session.add(idea2)
        self.session.flush()

        tags_counts = Tag.tag_counts()
        expected_counts = [
            ('aaa', 1),
            ('bar', 1),
            ('baz', 3),
            ('foo', 2),
            ('zzz', 1),
        ]
        self.assertEqual(list(tags_counts), expected_counts)
Esempio n. 4
0
 def test_creating_tags(self):
     from shootout.models import Tag
     tags = Tag.create_tags(u'foo bar baz')
     tags_names = set([u'foo', u'bar', u'baz'])
     self.assertEqual(tags[0].name, tags_names.pop())
     self.assertEqual(tags[1].name, tags_names.pop())
     self.assertEqual(tags[2].name, tags_names.pop())
Esempio n. 5
0
    def test_extracting_tags(self):
        from shootout.models import Tag

        tags_string = u"foo, bar; baz xxx,, yyy, zzz"
        expected_tags = set([u"foo", u"bar", u"baz", u"xxx", u"yyy", u"zzz"])
        extracted_tags = Tag.extract_tags(tags_string)
        self.assertEqual(extracted_tags, expected_tags)
Esempio n. 6
0
 def test_creating_tags(self):
     from shootout.models import Tag
     tags = Tag.create_tags(u'foo bar baz')
     tags_names = set([u'foo', u'bar', u'baz'])
     self.assertEqual(tags[0].name, tags_names.pop())
     self.assertEqual(tags[1].name, tags_names.pop())
     self.assertEqual(tags[2].name, tags_names.pop())
Esempio n. 7
0
def cloud_view(request):
    totalcounts = []
    for tag in Tag.tag_counts():
        weight = int((math.log(tag[1] or 1) * 4) + 10)
        totalcounts.append((tag[0], tag[1], weight))
    cloud = sorted(totalcounts, key=itemgetter(0))

    return render('templates/cloud.pt', {'cloud': cloud}, request)
Esempio n. 8
0
 def test_extracting_tags(self):
     from shootout.models import Tag
     tags_string = u'foo, bar; baz xxx,, yyy, zzz'
     expected_tags = set([
         u'foo', u'bar', u'baz', u'xxx', u'yyy', u'zzz'
     ])
     extracted_tags = Tag.extract_tags(tags_string)
     self.assertEqual(extracted_tags, expected_tags)
Esempio n. 9
0
def cloud_view(request):
    totalcounts = []
    for tag in Tag.tag_counts():
        weight = int((math.log(tag[1] or 1) * 4) + 10)
        totalcounts.append((tag[0], tag[1], weight))
    cloud = sorted(totalcounts, key=itemgetter(0))

    return render('templates/cloud.pt', {'cloud': cloud}, request)
Esempio n. 10
0
    def test_creating_tags(self):
        from shootout.models import Tag

        tags = Tag.create_tags(u"foo bar baz")
        tags_names = set([u"foo", u"bar", u"baz"])
        self.assertEqual(tags[0].name, tags_names.pop())
        self.assertEqual(tags[1].name, tags_names.pop())
        self.assertEqual(tags[2].name, tags_names.pop())
Esempio n. 11
0
    def test_tags_counts(self):
        from shootout.models import Tag

        user = self._addUser()

        idea1 = self._addIdea(user=user)
        idea1.tags = Tag.create_tags(u"foo bar baz")
        self.session.add(idea1)
        idea2 = self._addIdea(user=user)
        idea2.tags = Tag.create_tags(u"baz zzz aaa")
        self.session.add(idea2)
        idea2 = self._addIdea(user=user)
        idea2.tags = Tag.create_tags(u"foo baz")
        self.session.add(idea2)
        self.session.flush()

        tags_counts = Tag.tag_counts()
        expected_counts = [("aaa", 1), ("bar", 1), ("baz", 3), ("foo", 2), ("zzz", 1)]
        self.assertEqual(list(tags_counts), expected_counts)
Esempio n. 12
0
    def create_tags(cls, tags_string):
        tags_list = cls.extract_tags(tags_string)
        tags = []

        for tag_name in tags_list:
            tag = cls.get_by_name(tag_name)
            if not tag:
                tag = Tag(name=tag_name)
                DBSession.add(tag)
            tags.append(tag)

        return tags
Esempio n. 13
0
def idea_add(request):
    target = request.GET.get('target')
    session = DBSession()
    if target:
        target = Idea.get_by_id(target)
        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,
    }
Esempio n. 14
0
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,
    }
Esempio n. 15
0
def idea_add(request):
    target = request.params.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 = request.route_url("idea", 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,
    }
Esempio n. 16
0
 def test_extracting_tags(self):
     from shootout.models import Tag
     tags_string = u'foo, bar; baz xxx,, yyy, zzz'
     expected_tags = set([u'foo', u'bar', u'baz', u'xxx', u'yyy', u'zzz'])
     extracted_tags = Tag.extract_tags(tags_string)
     self.assertEqual(extracted_tags, expected_tags)