diff --git a/daemon.py b/daemon.py index e51fd2a2..bdf48c7a 100644 --- a/daemon.py +++ b/daemon.py @@ -1811,6 +1811,39 @@ class PubServer(BaseHTTPRequestHandler): self.server.POSTbusy = False return + # person options screen, permission to post to newswire + # See htmlPersonOptions + if '&submitModNewsPosts=' in optionsConfirmParams: + adminNickname = getConfigParam(self.server.baseDir, 'admin') + if (chooserNickname != optionsNickname and + (chooserNickname == adminNickname or + (isModerator(self.server.baseDir, chooserNickname) and + not isModerator(self.server.baseDir, optionsNickname)))): + modPostsToNews = None + if 'modNewsPosts=' in optionsConfirmParams: + modPostsToNews = \ + optionsConfirmParams.split('modNewsPosts=')[1] + if '&' in modPostsToNews: + modPostsToNews = modPostsToNews.split('&')[0] + accountDir = self.server.baseDir + '/accounts/' + \ + optionsNickname + '@' + optionsDomain + newswireModFilename = accountDir + '/.newswiremoderated' + if modPostsToNews != 'on': + if os.path.isfile(newswireModFilename): + os.remove(newswireModFilename) + else: + if os.path.isdir(accountDir): + modNewswireFile = open(newswireModFilename, "w+") + if modNewswireFile: + modNewswireFile.write('\n') + modNewswireFile.close() + self._redirect_headers(usersPath + '/' + + self.server.defaultTimeline + + '?page='+str(pageNumber), cookie, + callingDomain) + self.server.POSTbusy = False + return + # person options screen, block button # See htmlPersonOptions if '&submitBlock=' in optionsConfirmParams: diff --git a/webapp_person_options.py b/webapp_person_options.py index 05633e7f..4d845eb2 100644 --- a/webapp_person_options.py +++ b/webapp_person_options.py @@ -183,6 +183,7 @@ def htmlPersonOptions(defaultTimeline: str, optionsStr += checkboxStr # checkbox for permission to post to newswire + newswirePostsPermitted = False if optionsDomainFull == domainFull: adminNickname = getConfigParam(baseDir, 'admin') if (nickname == adminNickname or @@ -200,8 +201,26 @@ def htmlPersonOptions(defaultTimeline: str, translate['Submit'] + '
\n' if os.path.isfile(newswireBlockedFilename): checkboxStr = checkboxStr.replace(' checked>', '>') + else: + newswirePostsPermitted = True optionsStr += checkboxStr + # whether blogs created by this account are moderated on the newswire + if newswirePostsPermitted: + moderatedFilename = \ + baseDir + '/accounts/' + \ + optionsNickname + '@' + optionsDomain + '/.newswiremoderated' + checkboxStr = \ + ' ' + \ + translate['News posts are moderated'] + \ + '\n
\n' + if not os.path.isfile(moderatedFilename): + checkboxStr = checkboxStr.replace(' checked>', '>') + optionsStr += checkboxStr + optionsStr += optionsLinkStr backPath = '/' if nickname: