From 8539b5778f1cea24aab4ff47b1b65516c254de1f Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 4 Sep 2011 17:58:44 -0700 Subject: Update unread news items in --pretend mode. This has been disabled since commit c7faa634369e61b87a40172ceb0a5cb9494fd518, but the only reason cited was to avoid permissions issues. So, go ahead and enable it, and handle PermissionDenied just in case. NOTE: The NewsManager typically handles permission errors by returning silently, so PermissionDenied won't necessarily be raised even if we do trigger a permission error. --- pym/_emerge/actions.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'pym') diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py index 3477c19d8..82adca794 100644 --- a/pym/_emerge/actions.py +++ b/pym/_emerge/actions.py @@ -30,7 +30,7 @@ from portage.const import _ENABLE_DYN_LINK_MAP, _ENABLE_SET_CONFIG from portage.dbapi.dep_expand import dep_expand from portage.dbapi._expand_new_virt import expand_new_virt from portage.dep import Atom, extended_cp_match -from portage.exception import InvalidAtom +from portage.exception import InvalidAtom, PermissionDenied from portage.output import blue, bold, colorize, create_color_func, darkgreen, \ red, yellow good = create_color_func("GOOD") @@ -3049,13 +3049,26 @@ def display_news_notification(root_config, myopts): NEWS_PATH = os.path.join("metadata", "news") UNREAD_PATH = os.path.join(target_root, NEWS_LIB_PATH, "news") newsReaderDisplay = False - update = "--pretend" not in myopts if "news" not in settings.features: return + permission_msgs = set() for repo in portdb.getRepositories(): - unreadItems = checkUpdatedNewsItems( - portdb, vardb, NEWS_PATH, UNREAD_PATH, repo, update=update) + try: + unreadItems = checkUpdatedNewsItems( + portdb, vardb, NEWS_PATH, UNREAD_PATH, repo, update=True) + except PermissionDenied as e: + # NOTE: The NewsManager typically handles permission errors by + # returning silently, so PermissionDenied won't necessarily be + # raised even if we do trigger a permission error above. + msg = _unicode_decode("Permission denied: '%s'\n") % (e,) + if msg in permission_msgs: + pass + else: + permission_msgs.add(msg) + writemsg_level(msg, level=logging.ERROR, noiselevel=-1) + unreadItems = None + if unreadItems: if not newsReaderDisplay: newsReaderDisplay = True -- cgit v1.2.3-1-g7c22