[Nym3-commit] r270 - trunk/nym3/Client

jr at conuropsis.org jr at conuropsis.org
Sat May 28 15:46:54 CEST 2005


Author: jr
Date: 2005-05-28 15:46:53 +0200 (Sat, 28 May 2005)
New Revision: 270

Modified:
   trunk/nym3/Client/Main.py
Log:
- replace some print by ui.display
- add mid format checking
- add dereference in summarize


Modified: trunk/nym3/Client/Main.py
===================================================================
--- trunk/nym3/Client/Main.py	2005-05-22 00:15:55 UTC (rev 269)
+++ trunk/nym3/Client/Main.py	2005-05-28 13:46:53 UTC (rev 270)
@@ -167,7 +167,7 @@
 	return False
     return len(ds) <= Mail.midLen
 
-def decode_message_references(refs, keys, h):
+def decode_message_references(ui, refs, keys, h):
     """Generate a list of mids from a list of message references, refs,
     a list of keys and a hashtable.
     a reference is either a mid or a string of the format <key>:<val>,
@@ -180,16 +180,20 @@
 	    if is_hex_mid(e):
 		l.append(e)
 	    else:
-		print "%s: not a valid mid" % e
+		ui.display("%s: not a valid mid" % e)
 	else:
 	    s = e.split(':', 1)
 	    if s[0] not in keys:
-		print "%s: not a valid index key" % s[0]
+		ui.display("%s: not a valid index key" % s[0])
 		continue
 	    try:
-		l.append(h[s[0]][s[1]])
+		e2 = h[s[0]][s[1]]
+		if is_hex_mid(e2):
+		    l.append(2)
+		else:
+		    ui.display("%s: dereferenced value not a valid mid" % e)
 	    except KeyError:
-		print "%s: not a valid index for key %s" % (s[1], s[0])
+		ui.display("%s: not a valid index for key %s" % (s[1], s[0]))
     return l
 
 def processMessage(msg, config, ui, nickname):
@@ -200,7 +204,7 @@
     try:
 	account = Account.Account(config, nickname)
     except NoSuchAccount:
-	print "%s: no account corresponding to this nickname" % nickname
+	ui.display("%s: no account corresponding to this nickname" % nickname)
 	sys.exit(1)
     for com in comList:
 	if (com.ct() == SToCCODE['Created']):
@@ -362,10 +366,24 @@
 
 def Summarize(ui, config, nickname = None, max = None, older = None):
     if not max: max = config.max_syn
-    if older: older = binascii.unhexlify(older)
-    else: older = chr(0) * 20
     account = get_account_from_nickname(ui, config, nickname,
 	    "No nickname given, abort\nUse -n <nickname>")
+    if older:
+	if is_hex_mid(older):
+	    older = binascii.unhexlify(older)
+	else:
+	    idx = account.build_index(ui, config, account)
+	    l = decode_message_references([older], ['syn'], {'syn': idx})
+	    if len(l) == 1:
+		older = binascii.unhexlify(l[0])
+	    else:
+		#The passed reference didn't correspond to a valid mid, abort
+		ui.display('the reference passed did not correspond to a ' +
+		'valid mid, abort')
+		sys.exit(1)		
+    else:
+	#no older given, defaults to the oldest mid
+	older = chr(0) * 20
     summ = Message.Summarize()
     summ.fromData(max, older)
     try:



More information about the Nym3-commit mailing list