mirror of https://gitlab.com/bashrc2/epicyon
Merge branch 'main' of ssh://code.freedombone.net:2222/bashrc/epicyon
commit
31d6ca9985
37
daemon.py
37
daemon.py
|
|
@ -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,
|
||||
|
|
|
|||
19
theme.py
19
theme.py
|
|
@ -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
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue