diff --git a/daemon.py b/daemon.py
index dc1f274bb..a5a50f493 100644
--- a/daemon.py
+++ b/daemon.py
@@ -2157,6 +2157,8 @@ class PubServer(BaseHTTPRequestHandler):
resetThemeDesignerSettings(baseDir, themeName, domain,
allowLocalNetworkAccess,
systemLanguage)
+ setTheme(baseDir, themeName, domain,
+ allowLocalNetworkAccess, systemLanguage)
if callingDomain.endswith('.onion') and onionDomain:
originPathStr = \
@@ -2204,6 +2206,7 @@ class PubServer(BaseHTTPRequestHandler):
allowLocalNetworkAccess,
systemLanguage)
+ # set boolean values
if 'rss-icon-at-top' in themeDesignerParams:
if themeDesignerParams['rss-icon-at-top'].lower() == 'true':
self.server.rssIconAtTop = True
@@ -7298,55 +7301,57 @@ class PubServer(BaseHTTPRequestHandler):
baseDir: str, GETstartTime) -> None:
"""Shows an icon
"""
- if path.endswith('.png'):
- mediaStr = path.split('/icons/')[1]
- if '/' not in mediaStr:
- if not self.server.themeName:
- theme = 'default'
- else:
- theme = self.server.themeName
- iconFilename = mediaStr
+ if not path.endswith('.png'):
+ self._404()
+ return
+ mediaStr = path.split('/icons/')[1]
+ if '/' not in mediaStr:
+ if not self.server.themeName:
+ theme = 'default'
else:
- theme = mediaStr.split('/')[0]
- iconFilename = mediaStr.split('/')[1]
- mediaFilename = \
- baseDir + '/theme/' + theme + '/icons/' + iconFilename
- if self._etag_exists(mediaFilename):
- # The file has not changed
- self._304()
- return
- if self.server.iconsCache.get(mediaStr):
- mediaBinary = self.server.iconsCache[mediaStr]
- mimeTypeStr = mediaFileMimeType(mediaFilename)
- self._set_headers_etag(mediaFilename,
- mimeTypeStr,
- mediaBinary, None,
- self.server.domainFull,
- False, None)
- self._write(mediaBinary)
+ theme = self.server.themeName
+ iconFilename = mediaStr
+ else:
+ theme = mediaStr.split('/')[0]
+ iconFilename = mediaStr.split('/')[1]
+ mediaFilename = \
+ baseDir + '/theme/' + theme + '/icons/' + iconFilename
+ if self._etag_exists(mediaFilename):
+ # The file has not changed
+ self._304()
+ return
+ if self.server.iconsCache.get(mediaStr):
+ mediaBinary = self.server.iconsCache[mediaStr]
+ mimeTypeStr = mediaFileMimeType(mediaFilename)
+ self._set_headers_etag(mediaFilename,
+ mimeTypeStr,
+ mediaBinary, None,
+ self.server.domainFull,
+ False, None)
+ self._write(mediaBinary)
+ fitnessPerformance(GETstartTime, self.server.fitness,
+ '_GET', '_showIcon', self.server.debug)
+ return
+ else:
+ if os.path.isfile(mediaFilename):
+ mediaBinary = None
+ try:
+ with open(mediaFilename, 'rb') as avFile:
+ mediaBinary = avFile.read()
+ except OSError:
+ print('EX: unable to read icon image ' + mediaFilename)
+ if mediaBinary:
+ mimeType = mediaFileMimeType(mediaFilename)
+ self._set_headers_etag(mediaFilename,
+ mimeType,
+ mediaBinary, None,
+ self.server.domainFull,
+ False, None)
+ self._write(mediaBinary)
+ self.server.iconsCache[mediaStr] = mediaBinary
fitnessPerformance(GETstartTime, self.server.fitness,
'_GET', '_showIcon', self.server.debug)
return
- else:
- if os.path.isfile(mediaFilename):
- mediaBinary = None
- try:
- with open(mediaFilename, 'rb') as avFile:
- mediaBinary = avFile.read()
- except OSError:
- print('EX: unable to read icon image ' + mediaFilename)
- if mediaBinary:
- mimeType = mediaFileMimeType(mediaFilename)
- self._set_headers_etag(mediaFilename,
- mimeType,
- mediaBinary, None,
- self.server.domainFull,
- False, None)
- self._write(mediaBinary)
- self.server.iconsCache[mediaStr] = mediaBinary
- fitnessPerformance(GETstartTime, self.server.fitness,
- '_GET', '_showIcon', self.server.debug)
- return
self._404()
def _showHelpScreenImage(self, callingDomain: str, path: str,
diff --git a/theme.py b/theme.py
index 25ec9407e..cf8cb00bb 100644
--- a/theme.py
+++ b/theme.py
@@ -513,8 +513,6 @@ def resetThemeDesignerSettings(baseDir: str, themeName: str, domain: str,
os.remove(customVariablesFile)
except OSError:
print('EX: unable to remove theme designer settings on reset')
- setTheme(baseDir, themeName, domain,
- allowLocalNetworkAccess, systemLanguage)
def _readVariablesFile(baseDir: str, themeName: str,
@@ -826,13 +824,9 @@ def setTheme(baseDir: str, name: str, domain: str,
# if the theme has changed then remove any custom settings
if prevThemeName != name:
- customVariablesFile = baseDir + '/accounts/theme.json'
- if os.path.isfile(customVariablesFile):
- print('Removing theme designer settings')
- try:
- os.remove(customVariablesFile)
- except OSError:
- print('EX: removing theme designer settings')
+ resetThemeDesignerSettings(baseDir, name, domain,
+ allowLocalNetworkAccess,
+ systemLanguage)
_removeTheme(baseDir)
diff --git a/utils.py b/utils.py
index 077839ef0..98814262d 100644
--- a/utils.py
+++ b/utils.py
@@ -595,6 +595,8 @@ def removeIdEnding(idStr: str) -> str:
idStr = idStr[:-len('/event')]
elif idStr.endswith('/replies'):
idStr = idStr[:-len('/replies')]
+ if idStr.endswith('#Create'):
+ idStr = idStr.split('#Create')[0]
return idStr
diff --git a/webapp_post.py b/webapp_post.py
index 649f97d66..856b7effb 100644
--- a/webapp_post.py
+++ b/webapp_post.py
@@ -390,7 +390,11 @@ def _getReplyIconHtml(baseDir: str, nickname: str, domain: str,
return replyStr
# reply is permitted - create reply icon
- replyToLink = removeIdEnding(postJsonObject['object']['id'])
+ if '#' not in postJsonObject['object']['id']:
+ replyToLink = removeIdEnding(postJsonObject['object']['id'])
+ else:
+ replyToLink = \
+ removeIdEnding(postJsonObject['object']['id'].split('#')[0])
# see Mike MacGirvin's replyTo suggestion
if postJsonObject['object'].get('replyTo'):
@@ -571,7 +575,11 @@ def _getAnnounceIconHtml(isAnnounced: bool,
unannounceLinkStr = '?unannounce=' + \
removeIdEnding(announceJsonObject['id'])
- announcePostId = removeIdEnding(postJsonObject['object']['id'])
+ if '#' not in postJsonObject['object']['id']:
+ announcePostId = removeIdEnding(postJsonObject['object']['id'])
+ else:
+ announcePostId = \
+ removeIdEnding(postJsonObject['object']['id'].split('#')[0])
announceLinkStr = '?' + \
announceLink + '=' + announcePostId + pageNumberParam
announceStr = \
@@ -639,7 +647,10 @@ def _getLikeIconHtml(nickname: str, domainFull: str,
likeStr += '\n'
- likePostId = removeIdEnding(postJsonObject['id'])
+ if '#' not in postJsonObject['id']:
+ likePostId = removeIdEnding(postJsonObject['id'])
+ else:
+ likePostId = removeIdEnding(postJsonObject['id'].split('#')[0])
likeStr += \
'