Making some metadata entries immutable

This commit is contained in:
Jim Miller 2026-02-01 13:50:22 -06:00
parent c9a47877f7
commit 1b65a30798
2 changed files with 32 additions and 0 deletions

View file

@ -521,6 +521,22 @@ def get_valid_scalar_entries():
def get_valid_entries():
return get_valid_list_entries() + get_valid_scalar_entries()
## Metadata entries that are not allowed to be changed.
def get_immutable_entries():
return list([
'authorId',
'authorUrl',
'seriesUrl',
'storyId',
'storyUrl',
'langcode',
'numChapters',
'site',
'anthology',
'newforanthology',
'cover_image',
])
# Moved here for test_config.
def make_generate_cover_settings(param):
vlist = []
@ -587,6 +603,7 @@ class Configuration(ConfigParser):
self.listTypeEntries = get_valid_list_entries()
self.validEntries = get_valid_entries()
self.immutableEntries = get_immutable_entries()
self.url_config_set = False
@ -631,6 +648,12 @@ class Configuration(ConfigParser):
def getValidMetaList(self):
return self.validEntries + self.getConfigList("extra_valid_entries")
def isImmutableMetaEntry(self, key):
return key in self.getImmutableMetaList()
def getImmutableMetaList(self):
return self.immutableEntries
# used by adapters & writers, non-convention naming style
def hasConfig(self, key):
return self.has_config(self.sectionslist, key)
@ -1099,6 +1122,9 @@ class Configurable(object):
def isValidMetaEntry(self, key):
return self.configuration.isValidMetaEntry(key)
def isImmutableMetaEntry(self, key):
return self.configuration.isImmutableMetaEntry(key)
def getValidMetaList(self):
return self.configuration.getValidMetaList()

View file

@ -1138,6 +1138,9 @@ class Story(Requestable):
removeallentities=False,
doreplacements=True,
seen_list={}):
if self.isImmutableMetaEntry(key):
doreplacements = False
# check for a cached value to speed processing
if self.metadata_cache.is_cached_scalar(key,removeallentities,doreplacements):
return self.metadata_cache.get_cached_scalar(key,removeallentities,doreplacements)
@ -1306,6 +1309,9 @@ class Story(Requestable):
#print("getList(%s,%s)"%(listname,includelist))
retlist = []
if self.isImmutableMetaEntry(listname):
doreplacements = False
# check for a cached value to speed processing
if not skip_cache and self.metadata_cache.is_cached_list(listname,removeallentities,doreplacements):
return self.metadata_cache.get_cached_list(listname,removeallentities,doreplacements)