From 28c524e8243f9eb41f2ecb7197e33711727526d9 Mon Sep 17 00:00:00 2001 From: necoro <> Date: Wed, 25 Apr 2007 16:05:46 +0000 Subject: added noroot-option --- doc/TODO | 3 +++ plugins/noroot.xml | 12 ++++++++++++ portato/gui/templates/ui/AboutDialog.ui | 3 +++ portato/helper.py | 15 +++++++++++---- portato/plugin.py | 10 +++++++--- portato/plugins/etc_proposals.py | 10 ++++++---- portato/plugins/noroot.py | 15 +++++++++++++++ 7 files changed, 57 insertions(+), 11 deletions(-) create mode 100644 plugins/noroot.xml create mode 100644 portato/plugins/noroot.py diff --git a/doc/TODO b/doc/TODO index c931da1..c388cb7 100644 --- a/doc/TODO +++ b/doc/TODO @@ -13,11 +13,14 @@ Backend: - only remove already merged packages from queue - make sure, a package being removed from the queue is not needed as a dependency by another package +- allow emerging & co. as user by a useflag + GUI: ==== - Systray +- allow sorting of packages by installation GTK: ---- diff --git a/plugins/noroot.xml b/plugins/noroot.xml new file mode 100644 index 0000000..7e744ef --- /dev/null +++ b/plugins/noroot.xml @@ -0,0 +1,12 @@ + + + portato.plugins.noroot + + + + + diff --git a/portato/gui/templates/ui/AboutDialog.ui b/portato/gui/templates/ui/AboutDialog.ui index 1424270..b4064dd 100644 --- a/portato/gui/templates/ui/AboutDialog.ui +++ b/portato/gui/templates/ui/AboutDialog.ui @@ -85,6 +85,9 @@ false + + true + false diff --git a/portato/helper.py b/portato/helper.py index 537d631..40aff44 100644 --- a/portato/helper.py +++ b/portato/helper.py @@ -79,10 +79,17 @@ def debug(*args, **kwargs): def am_i_root (): """Returns True if the current user is root, False otherwise. @rtype: boolean""" - if os.getuid() == 0: - return True - else: - return False + + from plugin import hook + + @hook("am_i_root") + def __am_i_root(): + if os.getuid() == 0: + return True + else: + return False + + return __am_i_root() def flatten (listOfLists): """Flattens the given list of lists. diff --git a/portato/plugin.py b/portato/plugin.py index 4c5070e..3d67f5b 100644 --- a/portato/plugin.py +++ b/portato/plugin.py @@ -299,7 +299,7 @@ class PluginQueue: except AttributeError: debug(cmd.hook.call,"cannot be imported", error = 1) - f(*hargs, **hkwargs) # call function + return f(*hargs, **hkwargs) # call function def hook_decorator (func): """This is the real decorator.""" @@ -310,6 +310,8 @@ class PluginQueue: def wrapper (*args, **kwargs): + ret = None + # before for cmd in list[0]: debug("Accessing hook '%s' of plugin '%s' (before)" % (hook, cmd.hook.plugin.name)) @@ -317,15 +319,17 @@ class PluginQueue: if list[1]: # override debug("Overriding hook '%s' with plugin '%s'" % (hook, list[1][0].hook.plugin.name)) - call(list[1][0]) + ret = call(list[1][0]) else: # normal - func(*args, **kwargs) + ret = func(*args, **kwargs) # after for cmd in list[2]: debug("Accessing hook '%s' of plugin '%s' (after)" % (hook, cmd.hook.plugin.name)) call(cmd) + return ret + return wrapper return hook_decorator diff --git a/portato/plugins/etc_proposals.py b/portato/plugins/etc_proposals.py index a064fff..6cf53ad 100644 --- a/portato/plugins/etc_proposals.py +++ b/portato/plugins/etc_proposals.py @@ -16,6 +16,8 @@ from portato.backend import system from subprocess import Popen from etcproposals.etcproposals_lib import EtcProposals, __version__ +PROG="/usr/sbin/etc-proposals" + class PortatoEtcProposals(EtcProposals): """Subclassed EtcProposals using portato.backend.system during __init__.""" @@ -34,15 +36,15 @@ def etc_prop (*args, **kwargs): debug(l,"files to update") if l > 0: - Popen("etc-proposals") + Popen(PROG) else: - Popen(["etc-proposals", "--frontend", "gtk", "--fastexit"]) + Popen([PROG, "--frontend", "gtk", "--fastexit"]) def etc_prop_menu (*args, **kwargs): if am_i_root(): if float(__version__) < 1.1: - Popen("etc-proposals") + Popen(PROG) else: - Popen(["etc-proposals", "--frontend", "gtk"]) + Popen([PROG, "--frontend", "gtk"]) else: debug("Cannot start etc-proposals. Not root!", error = 1) diff --git a/portato/plugins/noroot.py b/portato/plugins/noroot.py new file mode 100644 index 0000000..a28ef85 --- /dev/null +++ b/portato/plugins/noroot.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# +# File: portato/plugins/noroot.py +# This file is part of the Portato-Project, a graphical portage-frontend. +# +# Copyright (C) 2007 René 'Necoro' Neumann +# This is free software. You may redistribute copies of it under the terms of +# the GNU General Public License version 2. +# There is NO WARRANTY, to the extent permitted by law. +# +# Written by René 'Necoro' Neumann + +def i_am_root (*args): + """Pretend we are root.""" + return True -- cgit v1.2.3