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 += \ '