aboutsummaryrefslogtreecommitdiff
path: root/doc/examples
diff options
context:
space:
mode:
Diffstat (limited to 'doc/examples')
-rw-r--r--doc/examples/chained.py47
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()