Welcome | Get started | Dive | Contribute | Topics | Reference | Changes | More
topics
: topics and tags¶
The lino_xl.lib.topics
plugin adds the notions of “topics” and “tags”.
Optionally it can also manage “partners” who are “interested” in a topic.
Side note: Code snippets (lines starting with >>>
) in this document get
tested as part of our development workflow. The following
initialization snippet tells you which demo project is being used in
this document.
>>> import lino
>>> lino.startup('lino_book.projects.noi1r.settings')
>>> from lino.api.doctest import *
>>> from django.db.models import Q
Overview¶
A topic is something a partner can be interested in. A tag is the fact that a given database row has to do with a given topic. An interest is the fact that a given partner is interested in a given topic.
Users can see a panel “Interests” (InterestsByPartner
) in the detail
window of a partner. They can add a row in that panel to specify that this
partner is interested in a topic. They can open the panel in a window to delete
interests.
A site manager can configure the list of available topics.
>>> show_menu_path(topics.AllTopics)
Configure --> Topics --> Topics
Partner¶
The application developer can decide what a “partner” means for the
topics plugin by setting the topics.partner_model
.
- topics.partner_model¶
The database model that represents the people who can be interested in a topic. If this is None, interest management is deactivated.
For example in Lino Noi the “partners” who can be interested in a topic are the site users.
>>> print(dd.plugins.topics.partner_model)
users.User
The detail window of a topic has a panel “Interests” (InterestsByTopic
)
which shows the users for which this topic is interesting.
A site manager can see a global list of all interests. This might be useful e.g. for exporting the data.
>>> show_menu_path(topics.AllInterests)
Explorer --> Topics --> Interests
Database models¶
- class lino_xl.lib.topics.Topic¶
Django model representing a topic.
- ref¶
The reference.
See
lino.mixins.ref.StructuredReferrable.ref
- name¶
The designation in different languages.
- description_text¶
Rich text field for a longer multi-line description.
- description¶
Virtual field which includes the formatted structured reference and the
description_text
.See
lino.mixins.ref.StructuredReferrable.description
- topic_group¶
Deprecated. Don’t use.
- class lino_xl.lib.topics.Topics¶
- class lino_xl.lib.topics.AllTopics¶
- class lino_xl.lib.topics.TopicsByGroup¶
- class lino_xl.lib.topics.Interest¶
Django model used to represent an interest.
- partner¶
- topic¶
- remark¶
- class lino_xl.lib.topics.Interests¶
- class lino_xl.lib.topics.InterestsByTopic¶
Model mixins¶
User roles¶
- class lino_xl.lib.topics.TopicsUser¶
User role required to see the topics plugin.
Don’t read me¶
Because Topic
defines a database field Topic.description
the
virtual field lino.core.model.Model.description
is hidden:
>>> sorted(rt.models.topics.Topic._meta.private_fields, key=lambda f: str(f))
...
[lino_xl.lib.topics.models.Topic.description,
lino_xl.lib.topics.models.Topic.full_page,
lino_xl.lib.topics.models.Topic.list_item,
lino_xl.lib.topics.models.Topic.name_column,
lino_xl.lib.topics.models.Topic.navigation_panel,
lino_xl.lib.topics.models.Topic.overview,
lino_xl.lib.topics.models.Topic.workflow_buttons]