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..7fdb0d720 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 @@ -23,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: @@ -52,11 +54,19 @@ 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) copytree(tempThemeDir, themeDir) - os.remove(tempThemeDir) + if os.path.isdir(tempThemeDir): + rmtree(tempThemeDir) return os.path.isfile(themeDir + '/theme.json') @@ -791,3 +801,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()