[Sugar-devel] [PATCH Browse] Store empty strings instead of None in the places sqlite database.

Simon Schampijer simon at schampijer.de
Wed Mar 28 15:15:08 EDT 2012


Please push that one.

Regards,
    Simon

On 03/28/2012 05:59 PM, Manuel Quiñones wrote:
> 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 #3400
> documents.
>
> 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 at laptop.org>
> Signed-off-by: Simon Schampijer<simon at laptop.org>
> ---
>   places.py |   12 ++++++++++--
>   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
>



More information about the Sugar-devel mailing list