libbe.command.subscribe

class libbe.command.subscribe.Subscribe(*args, **kwargs)

(Un)subscribe to change notification

>>> import sys
>>> import libbe.bugdir
>>> bd = libbe.bugdir.SimpleBugDir(memory=False)
>>> io = libbe.command.StringInputOutput()
>>> io.stdout = sys.stdout
>>> ui = libbe.command.UserInterface(io=io)
>>> ui.storage_callbacks.set_bugdir(bd)
>>> cmd = Subscribe(ui=ui)
>>> a = bd.bug_from_uuid('a')
>>> print a.extra_strings
[]
>>> ret = ui.run(cmd, {'subscriber':'John Doe <j@doe.com>'}, ['/a']) 
Subscriptions for abc/a:
John Doe <j@doe.com>    all    *
>>> bd.flush_reload()
>>> a = bd.bug_from_uuid('a')
>>> print a.extra_strings
['SUBSCRIBE:John Doe <j@doe.com>\tall\t*']
>>> ret = ui.run(cmd, {'subscriber':'Jane Doe <J@doe.com>', 'servers':'a.com,b.net'}, ['/a']) 
Subscriptions for abc/a:
Jane Doe <J@doe.com>    all    a.com,b.net
John Doe <j@doe.com>    all    *
>>> ret = ui.run(cmd, {'subscriber':'Jane Doe <J@doe.com>', 'servers':'a.edu'}, ['/a']) 
Subscriptions for abc/a:
Jane Doe <J@doe.com>    all    a.com,a.edu,b.net
John Doe <j@doe.com>    all    *
>>> ret = ui.run(cmd, {'unsubscribe':True, 'subscriber':'Jane Doe <J@doe.com>', 'servers':'a.com'}, ['/a']) 
Subscriptions for abc/a:
Jane Doe <J@doe.com>    all    a.edu,b.net
John Doe <j@doe.com>    all    *
>>> ret = ui.run(cmd, {'subscriber':'Jane Doe <J@doe.com>', 'servers':'*'}, ['/a']) 
Subscriptions for abc/a:
Jane Doe <J@doe.com>    all    *
John Doe <j@doe.com>    all    *
>>> ret = ui.run(cmd, {'unsubscribe':True, 'subscriber':'Jane Doe <J@doe.com>'}, ['/a']) 
Subscriptions for abc/a:
John Doe <j@doe.com>    all    *
>>> ret = ui.run(cmd, {'unsubscribe':True, 'subscriber':'John Doe <j@doe.com>'}, ['/a'])
>>> ret = ui.run(cmd, {'subscriber':'Jane Doe <J@doe.com>', 'types':'new'}, ['DIR']) 
Subscriptions for bug directory:
Jane Doe <J@doe.com>    new    *
>>> ret = ui.run(cmd, {'subscriber':'Jane Doe <J@doe.com>'}, ['DIR']) 
Subscriptions for bug directory:
Jane Doe <J@doe.com>    all    *
>>> ui.cleanup()
>>> bd.cleanup()

Methods

cleanup()
complete([argument, fragment])
help(*args)
run([options, args])
usage()
name = 'subscribe'
libbe.command.subscribe.get_bugdir_subscribers(bugdir, server)
libbe.command.subscribe.get_subscribers(extra_strings, type, server, type_root, match_ancestor_types=False, match_descendant_types=False)

Set match_ancestor_types=True if you want to find eveyone who cares about your particular type.

Set match_descendant_types=True if you want to find subscribers who may only care about some subset of your type. This is useful for generating lists of all the subscribers in a given set of extra_strings.

>>> def sgs(*args, **kwargs):
...     return sorted(get_subscribers(*args, **kwargs))
>>> es = []
>>> es = subscribe(es, "John Doe <j@doe.com>", [libbe.diff.BUGDIR_TYPE_ALL],
...                ["a.com"], libbe.diff.BUGDIR_TYPE_ALL)
>>> es = subscribe(es, "Jane Doe <J@doe.com>", [libbe.diff.BUGDIR_TYPE_NEW],
...                ["*"], libbe.diff.BUGDIR_TYPE_ALL)
>>> sgs(es, libbe.diff.BUGDIR_TYPE_ALL, "a.com", libbe.diff.BUGDIR_TYPE_ALL)
['John Doe <j@doe.com>']
>>> sgs(es, libbe.diff.BUGDIR_TYPE_ALL, "a.com", libbe.diff.BUGDIR_TYPE_ALL,
...     match_descendant_types=True)
['Jane Doe <J@doe.com>', 'John Doe <j@doe.com>']
>>> sgs(es, libbe.diff.BUGDIR_TYPE_ALL, "b.net", libbe.diff.BUGDIR_TYPE_ALL,
...     match_descendant_types=True)
['Jane Doe <J@doe.com>']
>>> sgs(es, libbe.diff.BUGDIR_TYPE_NEW, "a.com", libbe.diff.BUGDIR_TYPE_ALL)
['Jane Doe <J@doe.com>']
>>> sgs(es, libbe.diff.BUGDIR_TYPE_NEW, "a.com", libbe.diff.BUGDIR_TYPE_ALL,
... match_ancestor_types=True)
['Jane Doe <J@doe.com>', 'John Doe <j@doe.com>']
libbe.command.subscribe.subscribe(extra_strings, subscriber, types, servers, type_root)
libbe.command.subscribe.unsubscribe(extra_strings, subscriber, types, servers, type_root)

This Page