mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-24 10:52:52 +00:00
72 lines
3.5 KiB
Python
72 lines
3.5 KiB
Python
#!python
|
|
# -*- coding: utf-8 -*-
|
|
# ***************************************************************************
|
|
# * Copyright (C) 2008 Daniel Nicoletti <dantti85-pk@yahoo.com.br> *
|
|
# * Copyright (C) 2009 Simon Edwards <simon@simonzone.com> *
|
|
# * *
|
|
# * This program 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 2 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 General Public License for more details. *
|
|
# * *
|
|
# * You should have received a copy of the GNU General Public License *
|
|
# * along with this program; if not, write to the *
|
|
# * Free Software Foundation, Inc., *
|
|
# * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
|
|
# ***************************************************************************
|
|
from PyQt4.QtCore import *
|
|
from PyKDE4.polkitqt import *
|
|
import dbus
|
|
import dbus.service
|
|
import dbus.mainloop.qt
|
|
import sys
|
|
|
|
class PkExampleHelperApplication(QCoreApplication):
|
|
def __init__(self,argv):
|
|
QCoreApplication.__init__(self,argv)
|
|
print("Creating Helper")
|
|
|
|
system_bus = dbus.SystemBus()
|
|
self.name = dbus.service.BusName("org.qt.policykit.examples", system_bus)
|
|
self.service = PkExampleService(system_bus, '/')
|
|
|
|
# // Normally you will set a timeout so your application can
|
|
# // free some resources of the poor client machine ;)
|
|
# QTimer::singleShot(MINUTE, this, SLOT(quit()));
|
|
|
|
class PkExampleService(dbus.service.Object):
|
|
|
|
@dbus.service.method("org.qt.policykit.examples", in_signature='s',
|
|
out_signature='s', sender_keyword='sender')
|
|
def play(self, user, sender=None):
|
|
print("Calling user: "+str(user))
|
|
print("sender: " + str(sender))
|
|
|
|
# here you need to notice two important things:
|
|
# 1st 'sender' is the service name of the caller
|
|
# with it we can check if the caller is authorized to
|
|
# do the following action
|
|
# 2nd the "true" parameter, this is REALLY important, you MUST
|
|
# allways set it to true if you are in the helper. This way
|
|
# one shot actions can be properly revoked, use "true" even
|
|
# if your action aren't one shot, since they can easyly changed
|
|
# by any PolicyKit Authorization application.
|
|
result = PolkitQt.Auth.isCallerAuthorized("org.qt.policykit.examples.play", sender, True)
|
|
print("result: "+str(result))
|
|
if result == PolkitQt.Auth.Yes:
|
|
print(str(user) + " can play")
|
|
return str(user) + " can play"
|
|
else:
|
|
print("Sorry " + str(user) + " can not play")
|
|
return "Sorry " + str(user) + " can not play"
|
|
|
|
def main():
|
|
dbus.mainloop.qt.DBusQtMainLoop(set_as_default=True)
|
|
example = PkExampleHelperApplication(sys.argv)
|
|
return example.exec_();
|
|
main()
|