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: