diff options
Diffstat (limited to 'doc/examples')
-rw-r--r-- | doc/examples/chained.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/doc/examples/chained.py b/doc/examples/chained.py new file mode 100644 index 0000000..3418844 --- /dev/null +++ b/doc/examples/chained.py @@ -0,0 +1,47 @@ +#!/usr/bin/python + +import dbus + +from gi.repository import GLib + +from aptdaemon.client import AptClient +from aptdaemon.defer import inline_callbacks +from aptdaemon import policykit1 + +loop = GLib.MainLoop() + +def on_finished(trans, exit): + loop.quit() + print exit + +@inline_callbacks +def main(): + repo = ["deb", "http://packages.glatzor.de/silly-packages", "sid", ["main"], + "Silly packages", "silly.list"] + aptclient = AptClient() + bus = dbus.SystemBus() + name = bus.get_unique_name() + # high level auth + try: + # Preauthentication + action = policykit1.PK_ACTION_INSTALL_PURCHASED_PACKAGES + flags = policykit1.CHECK_AUTH_ALLOW_USER_INTERACTION + yield policykit1.check_authorization_by_name(name, action, flags=flags) + # Setting up transactions + trans_add = yield aptclient.add_repository(*repo) + trans_update = yield aptclient.update_cache("silly.list") + trans_inst = yield aptclient.install_packages(["silly-base"]) + yield trans_inst.set_allow_unauthenticated(True) + # Check when the last transaction was done + trans_inst.connect("finished", on_finished) + # Chaining transactions + yield trans_update.run_after(trans_add) + yield trans_inst.run_after(trans_update) + yield trans_add.run() + except Exception as error: + print error + loop.quit() + +if __name__ == "__main__": + main() + loop.run() |