summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Sivak <msivak@redhat.com>2010-09-08 14:28:25 +0200
committerMartin Sivak <msivak@redhat.com>2010-09-08 14:28:25 +0200
commit13ce1b07f909e34e32f2299f35696290789c2ee9 (patch)
treeb8a288ca496c8999763e708f2c0f29212e3abf2b
parentcf7c1bfe2e9619dce8a7e4b2bf6a30f0dc1bc9db (diff)
downloadfirstaidkit-13ce1b07f909e34e32f2299f35696290789c2ee9.tar.gz
firstaidkit-13ce1b07f909e34e32f2299f35696290789c2ee9.tar.xz
firstaidkit-13ce1b07f909e34e32f2299f35696290789c2ee9.zip
Support error and skipped states in issues, show progress in status bar
-rw-r--r--frontend/frontend_gtk.py25
-rw-r--r--plugins/openscap_plugin.py29
-rw-r--r--pyfirstaidkit/issue.py26
3 files changed, 56 insertions, 24 deletions
diff --git a/frontend/frontend_gtk.py b/frontend/frontend_gtk.py
index 679fd9a..823de03 100644
--- a/frontend/frontend_gtk.py
+++ b/frontend/frontend_gtk.py
@@ -327,6 +327,7 @@ class CallbacksMainWindow(object):
def on_b_StopResults_activate(self, widget, *args):
print("on_b_StopResults_activate")
self._tasker.interrupt()
+ widget.set_sensitive(False)
return True
class CallbacksFlagList(object):
@@ -654,22 +655,23 @@ class MainWindow(object):
state = tree_model.get_value(iter, 3)
+ if use_state_fg and state!=2 and state!=0:
+ cell_renderer.set_property("foreground-set", True)
+ cell_renderer.set_property("foreground-gdk",
+ gtk.gdk.Color(red=50000, green=50000, blue=50000))
+ else:
+ cell_renderer.set_property("foreground-set", False)
+
if colors[state] and use_state_bg:
cell_renderer.set_property("cell-background-set", True)
cell_renderer.set_property("cell-background-gdk", colors[state])
if state==4:
cell_renderer.set_property("foreground-set", True)
cell_renderer.set_property("foreground-gdk",
- gtk.gdk.Color(red=50000, green=50000, blue=50000))
+ gtk.gdk.Color(red=65000, green=50000, blue=50000))
else:
cell_renderer.set_property("cell-background-set", False)
- if use_state_fg and state!=2:
- cell_renderer.set_property("foreground-set", True)
- cell_renderer.set_property("foreground-gdk",
- gtk.gdk.Color(red=40000, green=40000, blue=40000))
- else:
- cell_renderer.set_property("foreground-set", False)
cell_renderer.set_property("text",
tree_model.get_value(iter, col))
@@ -706,8 +708,10 @@ class MainWindow(object):
def update(self, mailbox, message):
def issue_state(self):
- if self._exception:
- return ("Exception", 4)
+ if self._exception or self._error:
+ return ("Error", 4)
+ elif self._skipped:
+ return ("No result", 0)
elif self._fixed:
return ("Fixed", 3)
elif self._happened and self._checked:
@@ -803,6 +807,9 @@ class MainWindow(object):
elif message["action"]==reporting.ISSUE:
i = message["message"]
+ ctx = self.status_text.get_context_id(message["origin"].name)
+ gobject.idle_add(_o, self.status_text.push, ctx,
+ "%s: %s" % (str(i), i.description))
t,ids = issue_state(i)
if not self.result_list_iter.has_key(i):
self.result_list_iter[i] = self.result_list_store.append(
diff --git a/plugins/openscap_plugin.py b/plugins/openscap_plugin.py
index 7995f10..c54a19d 100644
--- a/plugins/openscap_plugin.py
+++ b/plugins/openscap_plugin.py
@@ -69,7 +69,7 @@ class OpenSCAPPlugin(Plugin):
self._policy = self._xccdf_policy_model.policies[0]
return
- if not Config.operation.interactive:
+ if not Config.operation.interactive == "True":
self._result=ReturnSuccess
self._policy = self._xccdf_policy_model.policies[-1]
return
@@ -105,7 +105,7 @@ class OpenSCAPPlugin(Plugin):
self._result=ReturnSuccess
def rules(self):
- if not Config.operation.interactive:
+ if not Config.operation.interactive == "True":
self._result=ReturnSuccess
return
@@ -144,7 +144,7 @@ class OpenSCAPPlugin(Plugin):
self._result=ReturnSuccess
def tailoring(self):
- if not Config.operation.interactive:
+ if not Config.operation.interactive == "True":
self._result=ReturnSuccess
return
@@ -193,14 +193,21 @@ class OpenSCAPPlugin(Plugin):
result = Msg.user2num
setattr(self._info, Id, unicode(result))
Issue = Plugin._issues.get(Id, None)
- Issue.set(checked = (result in
- (openscap.OSCAP.XCCDF_RESULT_FAIL,
- openscap.OSCAP.XCCDF_RESULT_PASS)),
- happened = (result == openscap.OSCAP.XCCDF_RESULT_FAIL),
- fixed = False,
- reporting = Plugin._reporting,
- origin = Plugin,
- level = PLUGIN)
+ Issue.set(skipped = (result in
+ (openscap.OSCAP.XCCDF_RESULT_NOT_CHECKED,
+ openscap.OSCAP.XCCDF_RESULT_NOT_SELECTED,
+ openscap.OSCAP.XCCDF_RESULT_NOT_APPLICABLE)),
+ checked = (result in
+ (openscap.OSCAP.XCCDF_RESULT_FAIL,
+ openscap.OSCAP.XCCDF_RESULT_PASS)),
+ error = (result in
+ (openscap.OSCAP.XCCDF_RESULT_ERROR,
+ openscap.OSCAP.XCCDF_RESULT_UNKNOWN)),
+ happened = (result == openscap.OSCAP.XCCDF_RESULT_FAIL),
+ fixed = False,
+ reporting = Plugin._reporting,
+ origin = Plugin,
+ level = PLUGIN)
except Exception, e:
print e
diff --git a/pyfirstaidkit/issue.py b/pyfirstaidkit/issue.py
index b4bcee2..4376964 100644
--- a/pyfirstaidkit/issue.py
+++ b/pyfirstaidkit/issue.py
@@ -31,8 +31,11 @@ class SimpleIssue(object):
self._happened = False
self._fixed = False
self._exception = None
+ self._error = False
+ self._skipped = False
def set(self, happened = None, fixed = None, checked = None,
+ skipped = None, error = None,
reporting = None, **kwreportingargs):
"""Set the state of this issue and send a report
@@ -43,6 +46,10 @@ class SimpleIssue(object):
self._fixed = fixed
if checked:
self._checked = checked
+ if error:
+ self._error = error
+ if skipped:
+ self._skipped = skipped
if reporting:
reporting.issue(issue = self, **kwreportingargs)
@@ -54,7 +61,7 @@ Return values:
False - NO, it is OK
None - I don't know, there was an error"""
#if the issue was fixed or not checked, the check si needed
- if not self._checked or self._fixed:
+ if not self._checked or self._error or self._skipped or self._fixed:
return None
else:
return self._happened
@@ -67,15 +74,25 @@ Return values:
False - NO, it is still broken
None - I don't know"""
#if the issue was not checked, the check si needed
- if not self._checked:
+ if not self._checked or self._error or self._skipped:
return None
else:
#issue didn't happened or is fixed -> True
return not self._happened or self._fixed
+ def skipped(self):
+ return self._skipped
+
+ def error(self):
+ return self._error
+
def __str__(self):
s = []
- if self._fixed:
+ if self._error:
+ s.append("Error evaluating")
+ elif self._skipped:
+ s.append("Skipped checking of")
+ elif self._fixed:
s.append("Fixed")
elif self._happened and self._checked:
s.append("Detected")
@@ -86,7 +103,8 @@ Return values:
s.append(self.name)
- if self._happened and self._checked:
+ if not self._error and not self._skipped and \
+ self._happened and self._checked:
s.append("--")
s.append(self.description)