diff --git a/daemon.py b/daemon.py index 6c286a367..ebe93ad56 100644 --- a/daemon.py +++ b/daemon.py @@ -4721,7 +4721,6 @@ class PubServer(BaseHTTPRequestHandler): if 'vote:' + nickname not in newswire[dateStr][2]: newswire[dateStr][2].append('vote:' + nickname) filename = newswire[dateStr][3] - print('VOTE filename ' + str(filename)) if filename: saveJson(newswire[dateStr][2], filename + '.votes') @@ -6043,7 +6042,8 @@ class PubServer(BaseHTTPRequestHandler): projectVersion, self._isMinimal(nickname), YTReplacementDomain, - self.server.newswire) + self.server.newswire, + self.server.positiveVoting) if GETstartTime: self._benchmarkGETtimings(GETstartTime, GETtimings, 'show status done', @@ -6150,7 +6150,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.projectVersion, self._isMinimal(nickname), self.server.YTReplacementDomain, - self.server.newswire) + self.server.newswire, + self.server.positiveVoting) msg = msg.encode('utf-8') self._set_headers('text/html', len(msg), cookie, callingDomain) @@ -6251,7 +6252,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.projectVersion, self._isMinimal(nickname), self.server.YTReplacementDomain, - self.server.newswire) + self.server.newswire, + self.server.positiveVoting) msg = msg.encode('utf-8') self._set_headers('text/html', len(msg), cookie, callingDomain) @@ -6352,7 +6354,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.projectVersion, self._isMinimal(nickname), self.server.YTReplacementDomain, - self.server.newswire) + self.server.newswire, + self.server.positiveVoting) msg = msg.encode('utf-8') self._set_headers('text/html', len(msg), cookie, callingDomain) @@ -6453,7 +6456,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.projectVersion, self._isMinimal(nickname), self.server.YTReplacementDomain, - self.server.newswire) + self.server.newswire, + self.server.positiveVoting) msg = msg.encode('utf-8') self._set_headers('text/html', len(msg), cookie, callingDomain) @@ -6560,7 +6564,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.projectVersion, self._isMinimal(nickname), self.server.YTReplacementDomain, - self.server.newswire, moderator) + self.server.newswire, moderator, + self.server.positiveVoting) msg = msg.replace('/news/', '/' + currNickname + '/') msg = msg.replace('/users/news"', '/users/' + currNickname + '"') @@ -6641,7 +6646,8 @@ class PubServer(BaseHTTPRequestHandler): httpPrefix, self.server.projectVersion, self.server.YTReplacementDomain, - self.server.newswire) + self.server.newswire, + self.server.positiveVoting) msg = msg.encode('utf-8') self._set_headers('text/html', len(msg), cookie, callingDomain) @@ -6726,7 +6732,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.projectVersion, self._isMinimal(nickname), self.server.YTReplacementDomain, - self.server.newswire) + self.server.newswire, + self.server.positiveVoting) msg = msg.encode('utf-8') self._set_headers('text/html', len(msg), cookie, callingDomain) @@ -6830,7 +6837,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.projectVersion, self._isMinimal(nickname), self.server.YTReplacementDomain, - self.server.newswire) + self.server.newswire, + self.server.positiveVoting) msg = msg.encode('utf-8') self._set_headers('text/html', len(msg), cookie, callingDomain) @@ -6924,7 +6932,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.projectVersion, self._isMinimal(nickname), self.server.YTReplacementDomain, - self.server.newswire) + self.server.newswire, + self.server.positiveVoting) msg = msg.encode('utf-8') self._set_headers('text/html', len(msg), cookie, callingDomain) @@ -7010,7 +7019,8 @@ class PubServer(BaseHTTPRequestHandler): httpPrefix, self.server.projectVersion, self.server.YTReplacementDomain, - self.server.newswire) + self.server.newswire, + self.server.positiveVoting) msg = msg.encode('utf-8') self._set_headers('text/html', len(msg), cookie, callingDomain) @@ -11345,7 +11355,8 @@ def loadTokens(baseDir: str, tokensDict: {}, tokensLookup: {}) -> None: tokensLookup[token] = nickname -def runDaemon(newsInstance: bool, +def runDaemon(positiveVoting: bool, + newsInstance: bool, blogsInstance: bool, mediaInstance: bool, maxRecentPosts: int, @@ -11452,6 +11463,10 @@ def runDaemon(newsInstance: bool, print('ERROR: no translations loaded from ' + translationsFile) sys.exit() + # on the newswire, whether moderators vote positively for items + # or against them (veto) + httpd.positiveVoting = positiveVoting + if registration == 'open': httpd.registration = True else: diff --git a/epicyon.py b/epicyon.py index 9cb4eb300..ea13307d2 100644 --- a/epicyon.py +++ b/epicyon.py @@ -198,6 +198,10 @@ parser.add_argument("--blogsinstance", type=str2bool, nargs='?', parser.add_argument("--newsinstance", type=str2bool, nargs='?', const=True, default=False, help="News Instance - favor news over microblogging") +parser.add_argument("--positivevoting", type=str2bool, nargs='?', + const=True, default=False, + help="On newswire, whether moderators vote " + + "positively for or veto against items") parser.add_argument("--debug", type=str2bool, nargs='?', const=True, default=False, help="Show debug messages") @@ -1911,7 +1915,8 @@ if setTheme(baseDir, themeName): print('Theme set to ' + themeName) if __name__ == "__main__": - runDaemon(args.newsinstance, + runDaemon(args.positivevoting, + args.newsinstance, args.blogsinstance, args.mediainstance, args.maxRecentPosts, not args.nosharedinbox, diff --git a/tests.py b/tests.py index 8d9a2bd5e..8a8989e0c 100644 --- a/tests.py +++ b/tests.py @@ -287,7 +287,7 @@ def createServerAlice(path: str, domain: str, port: int, onionDomain = None i2pDomain = None print('Server running: Alice') - runDaemon(False, False, False, + runDaemon(False, False, False, False, 5, True, True, 'en', __version__, "instanceId", False, path, domain, onionDomain, i2pDomain, None, port, port, @@ -350,7 +350,7 @@ def createServerBob(path: str, domain: str, port: int, onionDomain = None i2pDomain = None print('Server running: Bob') - runDaemon(False, False, False, + runDaemon(False, False, False, False, 5, True, True, 'en', __version__, "instanceId", False, path, domain, onionDomain, i2pDomain, None, port, port, @@ -387,7 +387,7 @@ def createServerEve(path: str, domain: str, port: int, federationList: [], onionDomain = None i2pDomain = None print('Server running: Eve') - runDaemon(False, False, False, + runDaemon(False, False, False, False, 5, True, True, 'en', __version__, "instanceId", False, path, domain, onionDomain, i2pDomain, None, port, port, diff --git a/webinterface.py b/webinterface.py index ce43a75ee..778921dd8 100644 --- a/webinterface.py +++ b/webinterface.py @@ -5368,7 +5368,7 @@ def getLeftColumnContent(baseDir: str, nickname: str, domainFull: str, def htmlNewswire(newswire: str, nickname: str, moderator: bool, - translate: {}) -> str: + translate: {}, positiveVoting: bool) -> str: """Converts a newswire dict into html """ htmlStr = '' @@ -5408,8 +5408,15 @@ def htmlNewswire(newswire: str, nickname: str, moderator: bool, for line in item[2]: if 'vote:' in line: totalVotes += 1 + # show a number of ticks or crosses for how many + # votes for or against if totalVotes > 0: - totalVotesStr = ' +' + str(totalVotes) + totalVotesStr = ' ' + for v in range(totalVotes): + if positiveVoting: + totalVotesStr += '✓' + else: + totalVotesStr += '✗' htmlStr += '
' + \
'' + item[0] + '' + \
@@ -5431,7 +5438,7 @@ def htmlNewswire(newswire: str, nickname: str, moderator: bool,
def getRightColumnContent(baseDir: str, nickname: str, domainFull: str,
httpPrefix: str, translate: {},
iconsDir: str, moderator: bool,
- newswire: {}) -> str:
+ newswire: {}, positiveVoting: bool) -> str:
"""Returns html content for the right column
"""
htmlStr = ''
@@ -5503,7 +5510,8 @@ def getRightColumnContent(baseDir: str, nickname: str, domainFull: str,
else:
htmlStr += '
\n'
- htmlStr += htmlNewswire(newswire, nickname, moderator, translate)
+ htmlStr += htmlNewswire(newswire, nickname, moderator, translate,
+ positiveVoting)
return htmlStr
@@ -5518,7 +5526,8 @@ def htmlTimeline(defaultTimeline: str,
manuallyApproveFollowers: bool,
minimal: bool,
YTReplacementDomain: str,
- newswire: {}, moderator: bool) -> str:
+ newswire: {}, moderator: bool,
+ positiveVoting: bool) -> str:
"""Show the timeline as html
"""
timelineStartTime = time.time()
@@ -6153,7 +6162,7 @@ def htmlTimeline(defaultTimeline: str,
# right column
rightColumnStr = getRightColumnContent(baseDir, nickname, domainFull,
httpPrefix, translate, iconsDir,
- moderator, newswire)
+ moderator, newswire, positiveVoting)
tlStr += '