mirror of https://gitlab.com/bashrc2/epicyon
flake8 format
parent
da3900c9f1
commit
3334cc0466
83
question.py
83
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
|
||||
|
|
Loading…
Reference in New Issue