view frontends/src/tools/host_listener.py @ 2287:ea869f30f204

plugin events: added eventInvite command as a helper for the complex invitation workflow: when this command is used: - an email invitation is sent with the event node set - invitee's jid is affiliated to event - invitee's jid is affiliated to invitee's node as a publisher - invitee's jid is affiliated to blog's node as a member - invitee's jid is affiliated to every blog's item's comments node as a publisher last affiliation complex operation is currently needed because of the way blogs and comments are handled, but this need to be changed in the future with XEP proposal.
author Goffi <goffi@goffi.org>
date Thu, 29 Jun 2017 20:57:12 +0200
parents 2daf7b4c6756
children 8b37a62336c3
line wrap: on
line source

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

# SAT: a jabber client
# Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org)

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program 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 Affero General Public License for more details.

# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

"""This module is only used launch callbacks when host is ready, used for early initialisation stuffs"""


listeners = []

def addListener(cb):
    """Add a listener which will be called when host is ready

    @param cb: callback which will be called when host is ready with host as only argument
    """
    listeners.append(cb)

def callListeners(host):
    """Must be called by frontend when host is ready.

    The call will launch all the callbacks, then remove the listeners list.
    @param host(QuickApp): the instancied QuickApp subclass
    """
    global listeners
    while True:
        try:
            cb = listeners.pop(0)
            cb(host)
        except IndexError:
            break
    del listeners