diff --git a/question.py b/question.py index 02da358cc..a52a9bb09 100644 --- a/question.py +++ b/question.py @@ -1,17 +1,19 @@ -__filename__="question.py" -__author__="Bob Mottram" -__license__="AGPL3+" -__version__="1.1.0" -__maintainer__="Bob Mottram" -__email__="bob@freedombone.net" -__status__="Production" +__filename__ = "question.py" +__author__ = "Bob Mottram" +__license__ = "AGPL3+" +__version__ = "1.1.0" +__maintainer__ = "Bob Mottram" +__email__ = "bob@freedombone.net" +__status__ = "Production" import os from utils import locatePost from utils import loadJson from utils import saveJson -def questionUpdateVotes(baseDir: str,nickname: str,domain: str,replyJson: {}) -> {}: + +def questionUpdateVotes(baseDir: str, nickname: str, domain: str, + replyJson: {}) -> {}: """ For a given reply update the votes on a question Returns the question json object if the vote totals were changed """ @@ -25,11 +27,11 @@ def questionUpdateVotes(baseDir: str,nickname: str,domain: str,replyJson: {}) -> return None if not replyJson['object'].get('name'): return None - inReplyTo=replyJson['object']['inReplyTo'] - questionPostFilename=locatePost(baseDir,nickname,domain,inReplyTo) + inReplyTo = replyJson['object']['inReplyTo'] + questionPostFilename = locatePost(baseDir, nickname, domain, inReplyTo) if not questionPostFilename: return None - questionJson=loadJson(questionPostFilename) + questionJson = loadJson(questionPostFilename) if not questionJson: return None if not questionJson.get('object'): @@ -38,7 +40,7 @@ def questionUpdateVotes(baseDir: str,nickname: str,domain: str,replyJson: {}) -> return None if not questionJson['object'].get('type'): return None - if questionJson['type']!='Question': + if questionJson['type'] != 'Question': return None if not questionJson['object'].get('oneOf'): return None @@ -46,45 +48,51 @@ def questionUpdateVotes(baseDir: str,nickname: str,domain: str,replyJson: {}) -> return None if not questionJson['object'].get('content'): return None - replyVote=replyJson['object']['name'] + replyVote = replyJson['object']['name'] # does the reply name field match any possible question option? - foundAnswer=None + foundAnswer = None for possibleAnswer in questionJson['object']['oneOf']: if not possibleAnswer.get('name'): continue if possibleAnswer['name'] == replyVote: - foundAnswer=possibleAnswer + foundAnswer = possibleAnswer break if not foundAnswer: return None # update the voters file - votersFileSeparator=';;;' - votersFilename=questionPostFilename.replace('.json','.voters') + votersFileSeparator = ';;;' + votersFilename = questionPostFilename.replace('.json', '.voters') if not os.path.isfile(votersFilename): # create a new voters file - votersFile=open(votersFilename, "w") + votersFile = open(votersFilename, "w") if votersFile: - votersFile.write(replyJson['actor']+votersFileSeparator+foundAnswer+'\n') + votersFile.write(replyJson['actor'] + + votersFileSeparator + + foundAnswer + '\n') votersFile.close() else: if replyJson['actor'] not in open(votersFilename).read(): # append to the voters file - votersFile=open(votersFilename, "a+") + votersFile = open(votersFilename, "a+") if votersFile: - votersFile.write(replyJson['actor']+votersFileSeparator+foundAnswer+'\n') + votersFile.write(replyJson['actor'] + + votersFileSeparator + + foundAnswer + '\n') votersFile.close() else: # change an entry in the voters file with open(votersFilename, "r") as votersFile: - lines=votersFile.readlines() - newlines=[] - saveVotersFile=False + lines = votersFile.readlines() + newlines = [] + saveVotersFile = False for voteLine in lines: - if voteLine.startswith(replyJson['actor']+votersFileSeparator): - newVoteLine=replyJson['actor']+votersFileSeparator+foundAnswer+'\n' - if voteLine==newVoteLine: + if voteLine.startswith(replyJson['actor'] + + votersFileSeparator): + newVoteLine = replyJson['actor'] + \ + votersFileSeparator + foundAnswer + '\n' + if voteLine == newVoteLine: break - saveVotersFile=True + saveVotersFile = True newlines.append(newVoteLine) else: newlines.append(voteLine) @@ -95,21 +103,22 @@ def questionUpdateVotes(baseDir: str,nickname: str,domain: str,replyJson: {}) -> else: return None # update the vote counts - questionTotalsChanged=False + questionTotalsChanged = False for possibleAnswer in questionJson['object']['oneOf']: if not possibleAnswer.get('name'): continue - totalItems=0 + totalItems = 0 with open(votersFilename, "r") as votersFile: - lines=votersFile.readlines() + lines = votersFile.readlines() for voteLine in lines: - if voteLine.endswith(votersFileSeparator+possibleAnswer['name']+'\n'): - totalItems+=1 - if possibleAnswer['replies']['totalItems']!=totalItems: - possibleAnswer['replies']['totalItems']=totalItems - questionTotalsChanged=True + if voteLine.endswith(votersFileSeparator + + possibleAnswer['name'] + '\n'): + totalItems += 1 + if possibleAnswer['replies']['totalItems'] != totalItems: + possibleAnswer['replies']['totalItems'] = totalItems + questionTotalsChanged = True if not questionTotalsChanged: return None # save the question with altered totals - saveJson(questionJson,questionPostFilename) + saveJson(questionJson, questionPostFilename) return questionJson