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