projects
/
gc-dialer
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
0ad2d5e
)
Fixing a unicode problem for CSV
author
Ed Page
<eopage@byu.net>
Fri, 8 Apr 2011 11:42:38 +0000
(06:42 -0500)
committer
Ed Page
<eopage@byu.net>
Tue, 19 Apr 2011 23:49:31 +0000
(18:49 -0500)
src/backends/file_backend.py
patch
|
blob
|
history
diff --git
a/src/backends/file_backend.py
b/src/backends/file_backend.py
index
9011225
..
9f8927a
100644
(file)
--- a/
src/backends/file_backend.py
+++ b/
src/backends/file_backend.py
@@
-21,11
+21,19
@@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Filesystem backend for contact support
"""
Filesystem backend for contact support
"""
+from __future__ import with_statement
import os
import csv
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
class CsvAddressBook(object):
"""
Currently supported file format
@@
-63,11
+71,12
@@
class CsvAddressBook(object):
def _read_csv(self, csvPath):
try:
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:
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)
header = csvReader.next()
nameColumns, nameFallbacks, phoneColumns = self._guess_columns(header)
@@
-80,7
+89,7
@@
class CsvAddressBook(object):
if len(row[phoneColumn]) == 0:
continue
contactDetails.append({
if len(row[phoneColumn]) == 0:
continue
contactDetails.append({
- "phoneType": phoneType,
+ "phoneType": try_unicode(phoneType),
"phoneNumber": row[phoneColumn],
})
except IndexError:
"phoneNumber": row[phoneColumn],
})
except IndexError:
@@
-96,6
+105,7
@@
class CsvAddressBook(object):
break
else:
fullName = "Unknown"
break
else:
fullName = "Unknown"
+ fullName = try_unicode(fullName)
yield str(yieldCount), {
"contactId": "%s-%d" % (self._name, yieldCount),
"name": fullName,
yield str(yieldCount), {
"contactId": "%s-%d" % (self._name, yieldCount),
"name": fullName,