This module keeps track of the authors of OpenTeacher. Every
installed module can use it to add authors itself. This way, it's
possible to also give credit to third party module authors. Just
call the registerAuthor method.
If you're writing a module which depends on other OT modules and
shows credits in some way, this module is the ideal data source.
Give the registeredAuthors property a look.
Type: |
authors |
Uses (at least one of): |
|
Requires (at least one of): |
|
Properties:
-
active
-
disable
-
enable
-
registerAuthor
-
registeredAuthors
Files
-
/authors.py
| #! /usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2011, Marten de Vries
#
# This file is part of OpenTeacher.
#
# OpenTeacher is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenTeacher is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenTeacher. If not, see <http://www.gnu.org/licenses/>.
import collections
class AuthorsModule:
"""This module keeps track of the authors of OpenTeacher. Every
installed module can use it to add authors itself. This way, it's
possible to also give credit to third party module authors. Just
call the `registerAuthor` method.
If you're writing a module which depends on other OT modules and
shows credits in some way, this module is the ideal data source.
Give the `registeredAuthors` property a look.
"""
def __init__(self, moduleManager, *args, **kwargs):
super().__init__(*args, **kwargs)
self._mm = moduleManager
self.type = "authors"
def registerAuthor(self, category, name):
"""Registers author `name` for his/her work in `category`. Both
arguments should be convertible with `str()`.
Returns a function which, when called, removes the author
again from the list. Handy if you want to retranslate the
category for example.
"""
data = (str(category), str(name))
self._authors.update((data,))
return lambda: self._authors.subtract((data,))
@property
def registeredAuthors(self):
"""Returns an iterable type which contains `(category, name)`
tuples of authors. You're free to modify the data type you
get, it won't damage this module.
Tuple attribute description:
`category`: the type of work this author was involved in.
`name`: the name of the author.
Both are guaranteed to be strings. All authors are only listed once,
no matter if they were or were not added multiple times.
"""
return set((a for a in self._authors if self._authors[a] > 0))
def enable(self):
self._authors = collections.Counter()
self.active = True
def disable(self):
self.active = False
del self._authors
def init(moduleManager):
return AuthorsModule(moduleManager)
|