~fabrixxm/confy

75db17acec37ba77bd222d2c488f1c4c1ac0b83f — fabrixxm 3 months ago ea96a1b
Handle search in Page Events with filters
1 files changed, 19 insertions(+), 13 deletions(-)

M src/pages.py
M src/pages.py => src/pages.py +19 -13
@@ 224,24 224,22 @@ class ListBuilderCtx:

@Gtk.Template(resource_path="/net/kirgroup/confy/pages/events.ui")
class PageEvents(Gtk.Box):
    """Talks list page (called "Events" from pentabarf xml)"""
    __gtype_name__ = "CPageEvents"

    pagebox = Gtk.Template.Child()

    search_button = Gtk.Template.Child()
    searchbar = Gtk.Template.Child()

    filters = None
    group_by = None

    _update_handler_id = None
    _value = None

    pagebox = Gtk.Template.Child()

    search_button = Gtk.Template.Child()
    searchbar = Gtk.Template.Child()

    timeout = InterruptibleTimeout()

    def get_value(self):
        return self._value

    @GObject.Signal(name="row-activated")
    def row_activated(self):
        ...


@@ 273,6 271,9 @@ class PageEvents(Gtk.Box):
    def model(self, v):
        self._model = v

    def get_value(self):
        return self._value

    def set_model(self, v):
        self.props.model = v



@@ 311,7 312,7 @@ class PageEvents(Gtk.Box):
            self.props.title = _("{} Track").format(obj)
            self.props.subtitle = ", ".join(subtitle)
            self.filters = {'track': obj}
            self.group_by = "day"
            self.group_by = "date"

        elif self._model == "rooms":
            if obj.name is None:


@@ 322,13 323,13 @@ class PageEvents(Gtk.Box):
            self.props.title = title
            self.props.subtitle = ""
            self.filters = {'room': obj}
            self.group_by = "day"
            self.group_by = "date"

        elif self._model == "starred":
            self.props.title = _("Starred")
            self.props.subtitle = ""
            self.filters = {'starred': True}
            self.group_by = "day"  # TODO: or None?
            self.group_by = "date"  # TODO: or None?
            self._update_handler_id = models.dbUpdateWatcher.connect("update", self.update)

        elif self.model == "search":


@@ 341,6 342,7 @@ class PageEvents(Gtk.Box):

        else:
            print(f"PageEvents: set_value: no valid model set '{self._model}'")
            return

        self.update()



@@ 396,7 398,7 @@ class PageEvents(Gtk.Box):
        return a widget for a new header, or None.
        """
        _title = None
        if self.group_by == "day":
        if self.group_by == "date":
            if before is None or current.date.strftime(FMT_DAY) != before.date.strftime(FMT_DAY):
                _title = current.date.strftime(FMT_DAY)
        elif self.group_by == "track":


@@ 422,11 424,15 @@ class PageEvents(Gtk.Box):
        print(f"PageEvents: get_objects for {self._model} {self.filters}")
        if self.model == "search":
            term = self.searchbar.entry.get_text()
            print(f"... search for {term}")
            if term == "":
                return []
            return models.Event.search(self.searchbar.entry.get_text())
            return models.Event.search(term)
        if self.filters is None:
            return []
        if self.searchbar.is_searching():
            term = self.searchbar.entry.get_text()
            return models.Event.search(term, order_by=self.group_by, **self.filters)
        return models.Event.filter(**self.filters)

    def build_row(self, obj):