Update theme after adding custom font

main
Bob Mottram 2020-05-26 21:17:16 +01:00
parent 21b0f0c752
commit b107668452
2 changed files with 63 additions and 7 deletions

View File

@ -15,7 +15,6 @@ from functools import partial
# for saving images
from hashlib import sha256
from hashlib import sha1
from shutil import copyfile
from session import createSession
from webfinger import parseHandle
from webfinger import webfingerMeta
@ -170,6 +169,7 @@ from cache import storePersonInCache
from cache import getPersonFromCache
from httpsig import verifyPostHeaders
from theme import setTheme
from theme import getTheme
from schedule import runPostSchedule
from schedule import runPostScheduleWatchdog
from schedule import removeScheduledPosts
@ -5470,6 +5470,8 @@ class PubServer(BaseHTTPRequestHandler):
postImageFilename = filename.replace('.temp', '')
if mType == 'customFont':
os.rename(filename, postImageFilename)
setTheme(self.server.baseDir,
getTheme(self.server.baseDir))
print('profile POST ' + mType +
' image or font filename ' + postImageFilename)
else:

View File

@ -22,6 +22,18 @@ def setThemeInConfig(baseDir: str, name: str) -> bool:
return saveJson(configJson, configFilename)
def getTheme(baseDir: str) -> str:
configFilename = baseDir + '/config.json'
if not os.path.isfile(configFilename):
return 'default'
configJson = loadJson(configFilename, 0)
if not configJson:
return 'default'
if configJson.get('theme'):
return configJson['theme']
return 'default'
def removeTheme(baseDir: str):
themeFiles = ('epicyon.css', 'login.css', 'follow.css',
'suspended.css', 'calendar.css', 'blog.css')
@ -89,6 +101,46 @@ def setThemeFromDict(baseDir: str, name: str, themeParams: {}):
cssfile.write(css)
def setCustomFont(baseDir: str):
"""Uses a dictionary to set a theme
"""
customFontExt = None
customFontType = None
fontExtension = {
'woff': 'woff',
'woff2': 'woff2',
'otf': 'opentype',
'ttf': 'truetype'
}
for ext, extType in fontExtension.items():
filename = baseDir + '/fonts/custom.' + ext
if os.path.isfile(filename):
customFontExt = ext
customFontType = extType
if not customFontExt:
return
themeFiles = ('epicyon.css', 'login.css', 'follow.css',
'suspended.css', 'calendar.css', 'blog.css')
for filename in themeFiles:
templateFilename = baseDir + '/epicyon-' + filename
if filename == 'epicyon.css':
templateFilename = baseDir + '/epicyon-profile.css'
if not os.path.isfile(templateFilename):
continue
with open(templateFilename, 'r') as cssfile:
css = cssfile.read()
css = \
setCSSparam(css, "*src",
"url('./fonts/custom." +
customFontExt +
"') format('" +
customFontType + "')")
filename = baseDir + '/' + filename
with open(filename, 'w') as cssfile:
cssfile.write(css)
def setThemeHighVis(baseDir: str):
themeParams = {
"font-size-header": "22px",
@ -209,19 +261,21 @@ def setThemeLight(baseDir: str):
def setTheme(baseDir: str, name: str) -> bool:
result = False
if name == 'default':
setThemeDefault(baseDir)
return True
result = True
elif name == 'purple':
setThemePurple(baseDir)
return True
result = True
elif name == 'light':
setThemeLight(baseDir)
return True
result = True
elif name == 'hacker':
setThemeHacker(baseDir)
return True
result = True
elif name == 'highvis':
setThemeHighVis(baseDir)
return True
return False
result = True
setCustomFont(baseDir)
return result