fix Binary overrides getting wiped after init

This commit is contained in:
Nick Sweeting 2024-09-03 02:50:30 -07:00
parent a18857dbb9
commit 8d4ace017d
No known key found for this signature in database
3 changed files with 26 additions and 8 deletions

View file

@ -38,9 +38,15 @@ class FfmpegBinary(BaseBinary):
binproviders_supported: List[InstanceOf[BinProvider]] = [env, apt, brew] binproviders_supported: List[InstanceOf[BinProvider]] = [env, apt, brew]
provider_overrides: Dict[BinProviderName, ProviderLookupDict] = { provider_overrides: Dict[BinProviderName, ProviderLookupDict] = {
'env': {'version': lambda: run(['ffmpeg', '-version'], stdout=PIPE, stderr=PIPE, text=True).stdout}, 'env': {
'apt': {'version': lambda: run(['ffmpeg', '-version'], stdout=PIPE, stderr=PIPE, text=True).stdout}, 'version': lambda: run(['ffmpeg', '-version'], stdout=PIPE, stderr=PIPE, text=True).stdout,
'brew': {'version': lambda: run(['ffmpeg', '-version'], stdout=PIPE, stderr=PIPE, text=True).stdout}, },
'apt': {
'version': lambda: run(['ffmpeg', '-version'], stdout=PIPE, stderr=PIPE, text=True).stdout,
},
'brew': {
'version': lambda: run(['ffmpeg', '-version'], stdout=PIPE, stderr=PIPE, text=True).stdout,
},
} }
# def get_ffmpeg_version(self) -> Optional[str]: # def get_ffmpeg_version(self) -> Optional[str]:

View file

@ -43,6 +43,7 @@ class BaseBinProvider(BinProvider):
class BaseBinary(Binary): class BaseBinary(Binary):
binproviders_supported: List[InstanceOf[BinProvider]] = Field(default_factory=list, alias='binproviders') binproviders_supported: List[InstanceOf[BinProvider]] = Field(default_factory=list, alias='binproviders')
provider_overrides: Dict[BinProviderName, ProviderLookupDict] = Field(default_factory=dict, alias='overrides')
def register(self, settings, parent_plugin=None): def register(self, settings, parent_plugin=None):
if settings is None: if settings is None:

View file

@ -103,7 +103,9 @@ def binaries_list_view(request: HttpRequest, **kwargs) -> TableContext:
if binary.name.lower().replace('-', '').replace('_', '').replace('ytdlp', 'youtubedl') in config_key.lower() if binary.name.lower().replace('-', '').replace('_', '').replace('ytdlp', 'youtubedl') in config_key.lower()
# or binary.name.lower().replace('-', '').replace('_', '') in str(config_value).lower() # or binary.name.lower().replace('-', '').replace('_', '') in str(config_value).lower()
))) )))
rows['Overrides'].append(str(obj_to_yaml(binary.provider_overrides))[:200]) # if not binary.provider_overrides:
# import ipdb; ipdb.set_trace()
rows['Overrides'].append(str(obj_to_yaml(binary.provider_overrides) or str(binary.provider_overrides))[:200])
# rows['Description'].append(binary.description) # rows['Description'].append(binary.description)
return TableContext( return TableContext(
@ -161,11 +163,14 @@ def plugins_list_view(request: HttpRequest, **kwargs) -> TableContext:
rows = { rows = {
"Name": [], "Name": [],
"verbose_name": [],
"configs": [],
"binproviders": [],
"binaries": [], "binaries": [],
"extractors": [], "extractors": [],
"replayers": [], "replayers": [],
"configs": [], "checks": [],
"verbose_name": [], "admindataviews": [],
} }
@ -176,6 +181,11 @@ def plugins_list_view(request: HttpRequest, **kwargs) -> TableContext:
print(e) print(e)
rows['Name'].append(ItemLink(plugin.name, key=plugin.name)) rows['Name'].append(ItemLink(plugin.name, key=plugin.name))
rows['verbose_name'].append(str(plugin.verbose_name))
rows['binproviders'].append(mark_safe(', '.join(
f'<a href="/admin/environment/binproviders/{binprovider.name}/">{binprovider.name}</a>'
for binprovider in plugin.binproviders
)))
rows['binaries'].append(mark_safe(', '.join( rows['binaries'].append(mark_safe(', '.join(
f'<a href="/admin/environment/binaries/{binary.name}/">{binary.name}</a>' f'<a href="/admin/environment/binaries/{binary.name}/">{binary.name}</a>'
for binary in plugin.binaries for binary in plugin.binaries
@ -188,7 +198,8 @@ def plugins_list_view(request: HttpRequest, **kwargs) -> TableContext:
for config_key in configset.__fields__.keys() for config_key in configset.__fields__.keys()
if config_key != 'section' and config_key in settings.CONFIG if config_key != 'section' and config_key in settings.CONFIG
))) )))
rows['verbose_name'].append(str(plugin.verbose_name)) rows['checks'].append(str(plugin.checks))
rows['admindataviews'].append(str(plugin.admindataviews))
return TableContext( return TableContext(
title="Installed plugins", title="Installed plugins",
@ -224,7 +235,7 @@ def plugin_detail_view(request: HttpRequest, key: str, **kwargs) -> ItemContext:
'binaries': plugin.binaries, 'binaries': plugin.binaries,
'extractors': plugin.extractors, 'extractors': plugin.extractors,
'replayers': plugin.replayers, 'replayers': plugin.replayers,
'schema': obj_to_yaml(plugin.model_dump(include=('name', 'verbose_name', 'app_label', settings.PLUGIN_KEYS.keys()))), 'schema': obj_to_yaml(plugin.model_dump(include=('name', 'verbose_name', 'app_label', *settings.PLUGIN_KEYS.keys()))),
}, },
"help_texts": { "help_texts": {
# TODO # TODO