(Steve Dougherty)
2013-07-03: Add partial notification check support. Add partial notification check support.
diff --git a/infocalypse/__init__.py b/infocalypse/__init__.py
--- a/infocalypse/__init__.py
+++ b/infocalypse/__init__.py
@@ -396,6 +396,13 @@ cmdtable = {
+ FCP_OPTS,
"[--truster nick@key] --wot nick@key/repo"),
+ "fn-check-notifications": (infocalypse_check_notifications,
+ [('', 'wot', '', 'WoT nick@key to check '
+ 'notifications for')]
+ + WOT_OPTS
+ + FCP_OPTS,
+ "--wot nick@key"),
+
"fn-push": (infocalypse_push,
[('', 'uri', '', 'insert URI to push to'),
# Buggy. Not well thought out.
diff --git a/infocalypse/commands.py b/infocalypse/commands.py
--- a/infocalypse/commands.py
+++ b/infocalypse/commands.py
@@ -223,6 +223,15 @@ def infocalypse_pull_request(ui, repo, *
repo_name)
+def infocalypse_check_notifications(ui, repo, **opts):
+ import wot
+ if not opts['wot']:
+ raise util.Abort("What ID do you want to check for notifications? Set"
+ " --wot.\n")
+
+ wot.receive_pull_requests(ui, opts['wot'])
+
+
def infocalypse_push(ui_, repo, **opts):
""" Push to an Infocalypse repository in Freenet. """
params, stored_cfg = get_config_info(ui_, opts)
diff --git a/infocalypse/wot.py b/infocalypse/wot.py
--- a/infocalypse/wot.py
+++ b/infocalypse/wot.py
@@ -84,7 +84,7 @@ HG: or putting things below it has the p
smtp.sendmail(from_address, to_address, msg.as_string())
-def receive_pull_requests(ui):
+def receive_pull_requests(ui, from_identitifer):
# TODO: Terminology - send/receive different from resolve/read elsewhere.
# TODO: How to find YAML? Look from end backwards for "---\n" then forward
# from there for "...\n"? Yepp, that should be the simplest way. If the
@@ -95,11 +95,23 @@ def receive_pull_requests(ui):
# to check. Maybe retrieve the insert keys and invert them to get the
# request keys (or can we just use the insert keys to query Freemail?).
+ local_identity = resolve_local_identity(ui, from_identitifer)
+ address = to_freemail_address(local_identity)
+
+ # Log in and open inbox.
cfg = Config.from_ui(ui)
imap = imaplib.IMAP4(cfg.defaults['HOST'], FREEMAIL_IMAP_PORT)
+ imap.login(address, cfg.get_freemail_password(local_identity['Identity']))
+ imap.select()
- type, message_numbers = imap.search(None, "SUBJECT", PULL_REQUEST_PREFIX)
- print(type, message_numbers)
+ # TODO: Freemail does not remove the quotes around a string before
+ # searching for it. This should be PULL_REQUEST_PREFIX instead of
+ # hardcoded, but brackets / space makes it quoted.
+ reply_type, message_numbers = imap.search(None, 'SUBJECT', "vcs")
+
+ # fetch() expects strings for both. Individual message numbers are
+ # separated by commas.
+ print imap.fetch(','.join(message_numbers), '(HEADERS)')
def update_repo_listing(ui, for_identity):