Filesystem backend for contact support
"""
+from __future__ import with_statement
import os
import csv
+def try_unicode(s):
+ try:
+ return s.decode("UTF-8")
+ except UnicodeDecodeError:
+ return s
+
+
class CsvAddressBook(object):
"""
Currently supported file format
def _read_csv(self, csvPath):
try:
- csvReader = iter(csv.reader(open(csvPath, "rU")))
+ f = open(csvPath, "rU")
+ csvReader = iter(csv.reader(f))
except IOError, e:
- if e.errno != 2:
- raise
- return
+ if e.errno == 2:
+ return
+ raise
header = csvReader.next()
nameColumns, nameFallbacks, phoneColumns = self._guess_columns(header)
if len(row[phoneColumn]) == 0:
continue
contactDetails.append({
- "phoneType": phoneType,
+ "phoneType": try_unicode(phoneType),
"phoneNumber": row[phoneColumn],
})
except IndexError:
break
else:
fullName = "Unknown"
+ fullName = try_unicode(fullName)
yield str(yieldCount), {
"contactId": "%s-%d" % (self._name, yieldCount),
"name": fullName,