Welcome | Get started | Dive into Lino | Contribute | Reference

comments (comments in Noi)

The lino.modlib.comments plugin in Lino Noi is configured and used to satisfy the application requirements.

This is a tested document. The following instructions are used for initialization:

>>> from lino import startup
>>> startup('lino_book.projects.noi1e.settings.demo')
>>> from lino.api.doctest import *

Overview

Public comments in Lino Noi are visible even to anonymous users.

There are two Commentable things in Lino Noi tickets and teams.

>>> list(rt.models_by_base(comments.Commentable))
[<class 'lino_noi.lib.groups.models.Group'>, <class 'lino_noi.lib.tickets.models.Site'>, <class 'lino_noi.lib.tickets.models.Ticket'>]

Whether a comment is private or not depends on its discussion topic: Comments on a ticket are public when neither the ticket nor its site are marked private.

Comments are private by default:

>>> dd.plugins.comments.private_default
True

Comments on a team are public when the team is not private.

Tests

>>> rt.models.comments.Comment.objects.all().count()
252
>>> rt.models.comments.Comment.objects.filter(private=True).count()
196
>>> rt.login("robin").show(comments.Comments,
...     column_names="id ticket__site user owner",
...     offset=82, limit=6)
... 
==== ========= ============= =============================
 ID   Project   Author        Topic
---- --------- ------------- -----------------------------
 83             Rolf Rompen   `Front-end team <Detail>`__
 84             Robin Rood    `Front-end team <Detail>`__
 85             Jean          `pypi <Detail>`__
 86             Luc           `pypi <Detail>`__
 87             Marc          `pypi <Detail>`__
 88             Mathieu       `pypi <Detail>`__
==== ========= ============= =============================

The demo database contains 252 comments, 84 about a team and 84 about a ticket. 56 comments are public.

>>> comments.Comment.objects.all().count()
252
>>> comments.Comment.objects.filter(ticket__isnull=False).count()
84
>>> comments.Comment.objects.filter(ticket=None).count()
168
>>> comments.Comment.objects.filter(group=None).count()
168
>>> comments.Comment.objects.filter(private=False).count()
56
>>> rt.login("marc").show(comments.RecentComments)
... 
`... <Detail>`__ by **marc** in reply to **jean** about `#12 <Detail>`__ : Two paragraphs ... (...)
...
>>> rt.show(comments.RecentComments)
... 
`... <Detail>`__ by **robin** in reply to **rolf** about `#11 <Detail>`__@admin : ...