Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel Quiñones <manuq@laptop.org>2012-03-28 15:29:53 (GMT)
committer Manuel Quiñones <manuq@laptop.org>2012-03-28 19:18:38 (GMT)
commitfe62a1bf0db214c5f302963aa5593502dfeae5f8 (patch)
treefbdb95a6b0f7a1d0f5eb476ca374ed1fce37cb2c
parent3458b62082f4c8e2ce220c843a16529fd72a2990 (diff)
Store empty strings instead of None in the places sqlite database.
The SQL model sets "text" as the fields type for uri and title. However, sqlite uses a dynamic type sistem [1] and our Place class was initializing those attributes with None. As a consequence, when the user types something in the toolbar entry, and a search is made to show a drop-down list for autocomplete, the drop-down list is being filled with None, but is defined as Gtk.ListStore(str, str). This is provoking a GTK+ error,that crashes the activity in the XO, as bug In order to keep backwards compatibility, if the database returns None for does fields, they are translated to empty strings in _place_from_row() method of place.SqliteStore . [1] http://sqlite.org/datatype3.html Signed-off-by: Manuel Quiñones <manuq@laptop.org> Signed-off-by: Simon Schampijer <simon@laptop.org>
-rw-r--r--places.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/places.py b/places.py
index 8b98c79..5001b43 100644
--- a/places.py
+++ b/places.py
@@ -24,9 +24,9 @@ _store = None
class Place(object):
- def __init__(self, uri=None):
+ def __init__(self, uri=''):
self.uri = uri
- self.title = None
+ self.title = ''
self.bookmark = False
self.gecko_flags = 0
self.visits = 0
@@ -121,6 +121,14 @@ class SqliteStore(object):
def _place_from_row(self, row):
place = Place()
+ # Return uri and title as empty strings instead of None.
+ # Previous versions of Browse were allowing to store None for
+ # those fields in the places database. See ticket #3400 .
+ if row[0] == None:
+ row = tuple([''] + list(row[1:]))
+ if row[1] == None:
+ row = tuple([row[0], ''] + list(row[2:]))
+
place.uri, place.title, place.bookmark, place.gecko_flags, \
place.visits, place.last_visit = row