The topic this comment is about. This field is a Generic Foreign Key,
i.e. users can basically comment on any database object. It is however
the application developer who decides where comments can be
created and how they are being displayed.
The owner of a comment is always an instance of a subclass of
Commentable.
Return a HTML formatted string with the description of this
Commentable as it should be displayed by the slave summary of
CommentsByOwner.
It must be a string and not an etree element. That's because
it usually includes the content of RichTextField. If the API
required an element, it would require us to parse this content
just in order to generate HTML from it.
Return either None or a database object that represents the commenting group
where this comment is being done.
If not None, the object must have a field ref which will be
shown in the summary of RecentComments.
get_comments_filter(cls,user):
Return the filter to be added when a given user requests comments about
commentables of this type.
Return None to not add any filter. Otherwise the return value should
be a django.db.models.Q object.
Default behaviour is that public comments are visible even to anonymous
while private comments are visible only to their author and to
PrivateCommentsReader.
You can override this class method to define your own privacy settings.
If you override this method, you probably want to define a
django.contrib.contenttypes.fields.GenericRelation on your Commentable
in order to write filter conditions based on the owner of the comment.
comments
: The comments framework¶The
lino.modlib.comments
plugin adds a framework for handling comments.This is a tested document. The following instructions are used for initialization:
Comments¶
Django model to represent a comment.
The author of the comment.
The topic this comment is about. This field is a Generic Foreign Key, i.e. users can basically comment on any database object. It is however the application developer who decides where comments can be created and how they are being displayed.
The
owner
of a comment is always an instance of a subclass ofCommentable
.The full body text of your comment.
The first paragraph of your
body
.The emotion of this comment.
When this comment has been published. A timestamp.
Whether to show only (un)published comments, independently of the publication date.
Hide comments before this date.
Hide comments after this date.
Which event (created, modified or published) to consider when applying the date range given by
start_date
andend_date
.Show all comments.
Show the comments posted by the current user.
Show the most recent comments that have been posted on this site.
Shows the comments for a given database object.
The
summary view
for this table.The choicelist with selections for
Comments.observed_event
.Emotions¶
The list of available values for the
Comment.emotion
field.Comment types¶
The
CommentType
model is not being used in production, one day we will probably remove it.The table with all existing comment types.
This usually is accessible via the Configure menu.
Commentable¶
Mixin for models whose instances can be discussion topic of comments.
The template to use for the comment that gets generated automatically when an end user creates an instance of this.
Set this to None if you don't want Lino to generate any comment when an instance gets created.
Return a HTML formatted string with the description of this Commentable as it should be displayed by the slave summary of CommentsByOwner.
It must be a string and not an etree element. That's because it usually includes the content of RichTextField. If the API required an element, it would require us to parse this content just in order to generate HTML from it.
This is automatically called when a comment has been created or modified.
Return either None or a database object that represents the commenting group where this comment is being done.
If not None, the object must have a field
ref
which will be shown in the summary ofRecentComments
.Return the filter to be added when a given user requests comments about commentables of this type.
Return None to not add any filter. Otherwise the return value should be a
django.db.models.Q
object.Default behaviour is that public comments are visible even to anonymous while private comments are visible only to their author and to
PrivateCommentsReader
.You can override this class method to define your own privacy settings.
Usage example in
lino_xl.lib.groups.Group
andlino_xl.lib.tickets.Ticket
.If you override this method, you probably want to define a
django.contrib.contenttypes.fields.GenericRelation
on your Commentable in order to write filter conditions based on the owner of the comment.Utilities¶