Merge branch 'main' of ssh://code.freedombone.net:2222/bashrc/epicyon

main
Bob Mottram 2021-05-28 23:20:43 +01:00
commit 31d6ca9985
3 changed files with 57 additions and 1 deletions

View File

@ -256,6 +256,7 @@ from cache import checkForChangedActor
from cache import storePersonInCache from cache import storePersonInCache
from cache import getPersonFromCache from cache import getPersonFromCache
from httpsig import verifyPostHeaders from httpsig import verifyPostHeaders
from theme import exportTheme
from theme import isNewsThemeName from theme import isNewsThemeName
from theme import getTextModeBanner from theme import getTextModeBanner
from theme import setNewsAvatar from theme import setNewsAvatar
@ -4135,6 +4136,18 @@ class PubServer(BaseHTTPRequestHandler):
welcomeScreenIsComplete(self.server.baseDir, nickname, welcomeScreenIsComplete(self.server.baseDir, nickname,
self.server.domain) self.server.domain)
onFinalWelcomeScreen = True onFinalWelcomeScreen = True
elif 'name="submitExportTheme"' in postBytesStr:
print('submitExportTheme')
themeDownloadPath = actorStr
if exportTheme(self.server.baseDir,
self.server.themeName):
themeDownloadPath += \
'/exports/' + self.server.themeName + '.zip'
print('submitExportTheme path=' + themeDownloadPath)
self._redirect_headers(themeDownloadPath,
cookie, callingDomain)
self.server.POSTbusy = False
return
# extract all of the text fields into a dict # extract all of the text fields into a dict
fields = \ fields = \
@ -5483,6 +5496,23 @@ class PubServer(BaseHTTPRequestHandler):
None, callingDomain) None, callingDomain)
self._write(msg) self._write(msg)
def _getExportedTheme(self, callingDomain: str, path: str,
baseDir: str, domainFull: str,
debug: bool) -> None:
"""Returns an exported theme zip file
"""
filename = path.split('/exports/', 1)[1]
filename = baseDir + '/exports/' + filename
if os.path.isfile(filename):
with open(filename, 'rb') as fp:
exportBinary = fp.read()
exportType = 'application/zip'
self._set_headers_etag(filename, exportType,
exportBinary, None,
domainFull)
self._write(exportBinary)
self._404()
def _getFonts(self, callingDomain: str, path: str, def _getFonts(self, callingDomain: str, path: str,
baseDir: str, debug: bool, baseDir: str, debug: bool,
GETstartTime, GETtimings: {}) -> None: GETstartTime, GETtimings: {}) -> None:
@ -10815,6 +10845,13 @@ class PubServer(BaseHTTPRequestHandler):
GETstartTime, GETtimings): GETstartTime, GETtimings):
return return
if authorized and '/exports/' in self.path:
self._getExportedTheme(callingDomain, self.path,
self.server.baseDir,
self.server.domainFull,
self.server.debug)
return
# get fonts # get fonts
if '/fonts/' in self.path: if '/fonts/' in self.path:
self._getFonts(callingDomain, self.path, self._getFonts(callingDomain, self.path,

View File

@ -11,9 +11,28 @@ from utils import loadJson
from utils import saveJson from utils import saveJson
from utils import getImageExtensions from utils import getImageExtensions
from shutil import copyfile from shutil import copyfile
from shutil import make_archive
from content import dangerousCSS from content import dangerousCSS
def exportTheme(baseDir: str, theme: str) -> bool:
"""Exports a theme as a zip file
"""
themeDir = baseDir + '/theme/' + theme
if not os.path.isfile(themeDir + '/theme.json'):
return False
if not os.path.isdir(baseDir + '/exports'):
os.mkdir(baseDir + '/exports')
exportFilename = baseDir + '/exports/' + theme + '.zip'
if os.path.isfile(exportFilename):
os.remove(exportFilename)
try:
make_archive(baseDir + '/exports/' + theme, 'zip', themeDir)
except BaseException:
pass
return os.path.isfile(exportFilename)
def _getThemeFiles() -> []: def _getThemeFiles() -> []:
"""Gets the list of theme style sheets """Gets the list of theme style sheets
""" """

View File

@ -1347,7 +1347,7 @@ def htmlEditProfile(cssCache: {}, translate: {}, baseDir: str, path: str,
translate['Export Theme'] + '</label><br>\n' translate['Export Theme'] + '</label><br>\n'
graphicsStr += \ graphicsStr += \
' <button type="submit" class="button" ' + \ ' <button type="submit" class="button" ' + \
'name="exportTheme">➤</button>\n' 'name="submitExportTheme">➤</button>\n'
graphicsStr += ' </div></details>\n' graphicsStr += ' </div></details>\n'