From f06d1b20b3cb8edf9bf7cf3c37cf66ad5ddd719c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 30 May 2021 12:06:15 +0100 Subject: [PATCH 1/4] Don't overwrite default themes during import --- defaultthemes.txt | 16 ++++++++++++++++ tests.py | 2 ++ theme.py | 20 ++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 defaultthemes.txt diff --git a/defaultthemes.txt b/defaultthemes.txt new file mode 100644 index 000000000..b082f241c --- /dev/null +++ b/defaultthemes.txt @@ -0,0 +1,16 @@ +Blue +Debian +Default +Hacker +Henge +Indymediaclassic +Indymediamodern +Lcd +Light +Night +Pixel +Purple +Rc3 +Solidaric +Starlight +Zen diff --git a/tests.py b/tests.py index 22d29ebb7..752ecc91e 100644 --- a/tests.py +++ b/tests.py @@ -101,6 +101,7 @@ from content import removeLongWords from content import replaceContentDuplicates from content import removeTextFormatting from content import removeHtmlTag +from theme import updateDefaultThemesList from theme import setCSSparam from linked_data_sig import generateJsonSignature from linked_data_sig import verifyJsonSignature @@ -3721,6 +3722,7 @@ def testRoles() -> None: def runAllTests(): print('Running tests...') + updateDefaultThemesList(os.getcwd()) testFunctions() testRoles() testSkills() diff --git a/theme.py b/theme.py index 42f7c0642..83da4f005 100644 --- a/theme.py +++ b/theme.py @@ -52,6 +52,13 @@ def importTheme(baseDir: str, filename: str) -> bool: return False if not newThemeName: return False + + # if the theme name in the default themes list? + defaultThemesFilename = baseDir + '/defaultthemes.txt' + if os.path.isfile(defaultThemesFilename): + if newThemeName.title() + '\n' in open(defaultThemesFilename).read(): + newThemeName = newThemeName + '2' + themeDir = baseDir + '/theme/' + newThemeName if not os.path.isdir(themeDir): os.mkdir(themeDir) @@ -791,3 +798,16 @@ def setTheme(baseDir: str, name: str, domain: str, _setThemeInConfig(baseDir, name) _setClearCacheFlag(baseDir) return result + + +def updateDefaultThemesList(baseDir: str) -> None: + """Recreates the list of default themes + """ + themeNames = getThemesList(baseDir) + defaultThemesFilename = baseDir + '/defaultthemes.txt' + defaultThemesFile = open(defaultThemesFilename, "w+") + if not defaultThemesFile: + return + for name in themeNames: + defaultThemesFile.write(name + '\n') + defaultThemesFile.close() From 61d0cb1f485c9c83c037021c99e9b4350a46d544 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 30 May 2021 12:34:30 +0100 Subject: [PATCH 2/4] Check that directory exists --- theme.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/theme.py b/theme.py index 83da4f005..759d792a2 100644 --- a/theme.py +++ b/theme.py @@ -63,7 +63,8 @@ def importTheme(baseDir: str, filename: str) -> bool: if not os.path.isdir(themeDir): os.mkdir(themeDir) copytree(tempThemeDir, themeDir) - os.remove(tempThemeDir) + if os.path.isdir(tempThemeDir): + os.remove(tempThemeDir) return os.path.isfile(themeDir + '/theme.json') From ad72231aef148842d3ffc291c2ab6360909b5cef Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 30 May 2021 12:36:20 +0100 Subject: [PATCH 3/4] Remove directory --- theme.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/theme.py b/theme.py index 759d792a2..fd13faf60 100644 --- a/theme.py +++ b/theme.py @@ -14,6 +14,7 @@ from utils import copytree from shutil import copyfile from shutil import make_archive from shutil import unpack_archive +from shutil import rmtree from content import dangerousCSS @@ -64,7 +65,7 @@ def importTheme(baseDir: str, filename: str) -> bool: os.mkdir(themeDir) copytree(tempThemeDir, themeDir) if os.path.isdir(tempThemeDir): - os.remove(tempThemeDir) + rmtree(tempThemeDir) return os.path.isfile(themeDir + '/theme.json') From 8804849a8dc324c6a033ca923df4b45d4fa78198 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 30 May 2021 12:39:09 +0100 Subject: [PATCH 4/4] Remove any previous temporary files --- theme.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/theme.py b/theme.py index fd13faf60..7fdb0d720 100644 --- a/theme.py +++ b/theme.py @@ -24,8 +24,9 @@ def importTheme(baseDir: str, filename: str) -> bool: if not os.path.isfile(filename): return False tempThemeDir = baseDir + '/imports/files' - if not os.path.isdir(tempThemeDir): - os.mkdir(tempThemeDir) + if os.path.isdir(tempThemeDir): + rmtree(tempThemeDir) + os.mkdir(tempThemeDir) unpack_archive(filename, tempThemeDir, 'zip') essentialThemeFiles = ('name.txt', 'theme.json') for themeFile in essentialThemeFiles: