From c74b9523e426f421b995537bc7a9dfebe2c91635 Mon Sep 17 00:00:00 2001 From: Ethan Dalool Date: Fri, 4 Jun 2021 20:35:17 -0700 Subject: [PATCH] Don't sort channels from get_channels, use get_things. --- frontends/ycdl_flask/templates/channels.html | 2 +- ycdl/ycdldb.py | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/frontends/ycdl_flask/templates/channels.html b/frontends/ycdl_flask/templates/channels.html index 221ab35..8a17044 100644 --- a/frontends/ycdl_flask/templates/channels.html +++ b/frontends/ycdl_flask/templates/channels.html @@ -48,7 +48,7 @@
- {% for channel in channels %} + {% for channel in channels|sort(attribute='name', case_sensitive=False) %} {% if channel.has_pending() %}
{% else %} diff --git a/ycdl/ycdldb.py b/ycdl/ycdldb.py index 02e9bb8..b25ee8b 100644 --- a/ycdl/ycdldb.py +++ b/ycdl/ycdldb.py @@ -93,6 +93,19 @@ class YCDLDBCacheManagerMixin: thing_cache[thing_id] = thing return thing + def get_things(self, thing_type): + ''' + Yield things, unfiltered, in whatever order they appear in the database. + ''' + thing_map = self._THING_CLASSES[thing_type] + table = thing_map['class'].table + query = f'SELECT * FROM {table}' + + things = self.sql_select(query) + for thing_row in things: + thing = self.get_cached_instance(thing_type, thing_row) + yield thing + def get_things_by_sql(self, thing_type, query, bindings=None): ''' Use an arbitrary SQL query to select things from the database. @@ -153,11 +166,7 @@ class YCDLDBChannelMixin: return self.get_thing_by_id('channel', channel_id) def get_channels(self): - query = 'SELECT * FROM channels' - rows = self.sql_select(query) - channels = [self.get_cached_instance('channel', row) for row in rows] - channels.sort(key=lambda c: c.name.lower()) - return channels + return self.get_things(thing_type='channel') def get_channels_by_sql(self, query, bindings=None): return self.get_things_by_sql('channel', query, bindings)