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 getPersonFromCache
from httpsig import verifyPostHeaders
from theme import exportTheme
from theme import isNewsThemeName
from theme import getTextModeBanner
from theme import setNewsAvatar
@ -4135,6 +4136,18 @@ class PubServer(BaseHTTPRequestHandler):
welcomeScreenIsComplete(self.server.baseDir, nickname,
self.server.domain)
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
fields = \
@ -5483,6 +5496,23 @@ class PubServer(BaseHTTPRequestHandler):
None, callingDomain)
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,
baseDir: str, debug: bool,
GETstartTime, GETtimings: {}) -> None:
@ -10815,6 +10845,13 @@ class PubServer(BaseHTTPRequestHandler):
GETstartTime, GETtimings):
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
if '/fonts/' in self.path:
self._getFonts(callingDomain, self.path,

View File

@ -11,9 +11,28 @@ from utils import loadJson
from utils import saveJson
from utils import getImageExtensions
from shutil import copyfile
from shutil import make_archive
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() -> []:
"""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'
graphicsStr += \
' <button type="submit" class="button" ' + \
'name="exportTheme">➤</button>\n'
'name="submitExportTheme">➤</button>\n'
graphicsStr += ' </div></details>\n'