rewrite: Tasklist module.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
from babel.translator import LocalBabel
|
||||
babel = LocalBabel('settings_base')
|
||||
|
||||
from .data import ModelData
|
||||
from .data import ModelData, ListData
|
||||
from .base import BaseSetting
|
||||
from .ui import SettingWidget, InteractiveSetting
|
||||
from .groups import SettingDotDict, SettingGroup, ModelSettings, ModelSetting
|
||||
|
||||
@@ -111,7 +111,7 @@ class ListData:
|
||||
table = cls._table_interface # type: Table
|
||||
query = table.select_where(**{cls._id_column: parent_id}).select(cls._data_column)
|
||||
if cls._order_column:
|
||||
query.order_by(cls._order_column, order=cls._order_type)
|
||||
query.order_by(cls._order_column, direction=cls._order_type)
|
||||
|
||||
rows = await query
|
||||
data = [row[cls._data_column] for row in rows]
|
||||
@@ -128,7 +128,7 @@ class ListData:
|
||||
"""
|
||||
table = cls._table_interface
|
||||
conn = await table.connector.get_connection()
|
||||
with conn.transaction():
|
||||
async with conn.transaction():
|
||||
# Handle None input as an empty list
|
||||
if data is None:
|
||||
data = []
|
||||
|
||||
@@ -73,8 +73,8 @@ class SettingGroup:
|
||||
"""
|
||||
rows = []
|
||||
for setting in self.settings.values():
|
||||
name = f"{setting.display_name}"
|
||||
set = await setting.get(parent_id)
|
||||
name = set.display_name
|
||||
value = set.formatted
|
||||
rows.append((name, value, set.hover_desc))
|
||||
table_rows = tabulate(
|
||||
|
||||
@@ -1002,7 +1002,7 @@ class ListSetting:
|
||||
Format the list by adding `,` between each formatted item
|
||||
"""
|
||||
if not data:
|
||||
return None
|
||||
return 'Not Set'
|
||||
else:
|
||||
formatted_items = []
|
||||
for item in data:
|
||||
|
||||
@@ -11,6 +11,7 @@ from discord.ui.text_input import TextInput
|
||||
from utils.lib import tabulate, recover_context
|
||||
from utils.ui import FastModal
|
||||
from meta.config import conf
|
||||
from babel.translator import ctx_translator
|
||||
|
||||
from .base import BaseSetting, ParentID, SettingData, SettingValue
|
||||
|
||||
@@ -166,10 +167,10 @@ class InteractiveSetting(BaseSetting[ParentID, SettingData, SettingValue]):
|
||||
__slots__ = ('_widget',)
|
||||
|
||||
# Configuration interface descriptions
|
||||
display_name: str # User readable name of the setting
|
||||
desc: str # User readable brief description of the setting
|
||||
long_desc: str # User readable long description of the setting
|
||||
accepts: str # User readable description of the acceptable values
|
||||
_display_name: str # User readable name of the setting
|
||||
_desc: str # User readable brief description of the setting
|
||||
_long_desc: str # User readable long description of the setting
|
||||
_accepts: str # User readable description of the acceptable values
|
||||
|
||||
Widget = SettingWidget
|
||||
|
||||
@@ -184,6 +185,26 @@ class InteractiveSetting(BaseSetting[ParentID, SettingData, SettingValue]):
|
||||
|
||||
self._widget: Optional[SettingWidget] = None
|
||||
|
||||
@property
|
||||
def long_desc(self):
|
||||
t = ctx_translator.get().t
|
||||
return t(self._long_desc)
|
||||
|
||||
@property
|
||||
def display_name(self):
|
||||
t = ctx_translator.get().t
|
||||
return t(self._display_name)
|
||||
|
||||
@property
|
||||
def desc(self):
|
||||
t = ctx_translator.get().t
|
||||
return t(self._desc)
|
||||
|
||||
@property
|
||||
def accepts(self):
|
||||
t = ctx_translator.get().t
|
||||
return t(self._accepts)
|
||||
|
||||
async def write(self, **kwargs) -> None:
|
||||
await super().write(**kwargs)
|
||||
for listener in self._listeners_.values():
|
||||
@@ -249,9 +270,13 @@ class InteractiveSetting(BaseSetting[ParentID, SettingData, SettingValue]):
|
||||
Returns a {name, value} pair for use in an Embed field.
|
||||
"""
|
||||
name = self.display_name
|
||||
value = f"{self.long_dec}\n{self.desc_table}"
|
||||
value = f"{self.long_desc}\n{self.desc_table}"
|
||||
return {'name': name, 'value': value}
|
||||
|
||||
@property
|
||||
def set_str(self):
|
||||
return None
|
||||
|
||||
@property
|
||||
def embed(self):
|
||||
"""
|
||||
@@ -265,10 +290,14 @@ class InteractiveSetting(BaseSetting[ParentID, SettingData, SettingValue]):
|
||||
|
||||
@property
|
||||
def desc_table(self):
|
||||
return tabulate(
|
||||
("Current Value", self.formatted or "Not Set"),
|
||||
("Default Value", self._format_data(self.parent_id, self.default) or "None"),
|
||||
)
|
||||
lines = []
|
||||
lines.append(('Currently', self.formatted or "Not Set"))
|
||||
if (default := self.default) is not None:
|
||||
lines.append(('By Default', self._format_data(self.parent_id, default) or "No Default"))
|
||||
if (set_str := self.set_str) is not None:
|
||||
lines.append(('Set Using', set_str))
|
||||
|
||||
return '\n'.join(tabulate(*lines))
|
||||
|
||||
@property
|
||||
def input_field(self) -> TextInput:
|
||||
|
||||
Reference in New Issue
Block a user