def update_success(self, reference):
        assert isinstance(reference, Gtk.TreeRowReference)
        if reference.valid():

            def func():
                path = reference.get_path()
                self._model[path][2] = "emblem-default"

            GtkHelper.invoke(func)
    def update_failed(self, reference, err=None):
        assert isinstance(reference, Gtk.TreeRowReference)
        if reference.valid():

            def func():
                path = reference.get_path()
                self._model[path][2] = "emblem-important"
                if err:
                    if isinstance(err, Exception):
                        self._model[path][3] = "{}: {}".format(type(err).__name__, str(err))
                    else:
                        self._model[path][3] = str(err)

            GtkHelper.invoke(func)
        def func():
            try:
                signature = model.signature
                server = model.database_type.name + ' ' + str(signature.version)

                auth_details = 'Admin Party'
                session = model.session
                user_ctx = session.userCtx
                if user_ctx and user_ctx.name:
                    auth_details = user_ctx.name
                    roles = ''
                    for role in user_ctx.roles:
                        roles += ', ' + role if len(roles) > 0 else role
                    auth_details += ' [' + roles + ']'

                status = server + ' - ' + auth_details

                GtkHelper.invoke(lambda: self._statusbar.push(0, status))
            except:
                self.reset()