If an announce is invalid then don't repeatedly read it

master
Bob Mottram 2019-09-09 11:06:27 +01:00
parent 84e4b1f5a5
commit 76ec8e06ec
1 changed files with 56 additions and 39 deletions

View File

@ -1409,6 +1409,14 @@ def insertQuestion(translate: {}, \
content+='</form></div>' content+='</form></div>'
return content return content
def rejectAnnounce(announceFilename: str):
"""Marks an announce as rejected
"""
if not os.path.isfile(announceFilename+'.reject'):
rejectAnnounceFile=open(announceFilename+'.reject', "w+")
rejectAnnounceFile.write('\n')
rejectAnnounceFile.close()
def individualPostAsHtml(translate: {}, \ def individualPostAsHtml(translate: {}, \
pageNumber: int,baseDir: str, \ pageNumber: int,baseDir: str, \
session,wfRequest: {},personCache: {}, \ session,wfRequest: {},personCache: {}, \
@ -1442,6 +1450,7 @@ def individualPostAsHtml(translate: {}, \
os.mkdir(announceCacheDir) os.mkdir(announceCacheDir)
announceFilename=announceCacheDir+'/'+postJsonObject['object'].replace('/','#')+'.json' announceFilename=announceCacheDir+'/'+postJsonObject['object'].replace('/','#')+'.json'
print('announceFilename: '+announceFilename) print('announceFilename: '+announceFilename)
if not os.path.isfile(announceFilename+'.reject'):
if os.path.isfile(announceFilename): if os.path.isfile(announceFilename):
print('Reading cached Announce content for '+postJsonObject['object']) print('Reading cached Announce content for '+postJsonObject['object'])
with open(announceFilename, 'r') as fp: with open(announceFilename, 'r') as fp:
@ -1455,16 +1464,21 @@ def individualPostAsHtml(translate: {}, \
announcedJson = getJson(session,postJsonObject['object'],asHeader,None,projectVersion,httpPrefix,domain) announcedJson = getJson(session,postJsonObject['object'],asHeader,None,projectVersion,httpPrefix,domain)
if announcedJson: if announcedJson:
if not announcedJson.get('id'): if not announcedJson.get('id'):
rejectAnnounce(announceFilename)
pprint(announcedJson) pprint(announcedJson)
return '' return ''
if '/statuses/' not in announcedJson['id']: if '/statuses/' not in announcedJson['id']:
rejectAnnounce(announceFilename)
return '' return ''
if '/users/' not in announcedJson['id'] and '/profile/' not in announcedJson['id']: if '/users/' not in announcedJson['id'] and '/profile/' not in announcedJson['id']:
rejectAnnounce(announceFilename)
return '' return ''
if not announcedJson.get('type'): if not announcedJson.get('type'):
rejectAnnounce(announceFilename)
pprint(announcedJson) pprint(announcedJson)
return '' return ''
if announcedJson['type']!='Note': if announcedJson['type']!='Note':
rejectAnnounce(announceFilename)
pprint(announcedJson) pprint(announcedJson)
return '' return ''
# wrap in create to be consistent with other posts # wrap in create to be consistent with other posts
@ -1473,6 +1487,7 @@ def individualPostAsHtml(translate: {}, \
actorNickname,actorDomain,actorPort, \ actorNickname,actorDomain,actorPort, \
announcedJson) announcedJson)
if announcedJson['type']!='Create': if announcedJson['type']!='Create':
rejectAnnounce(announceFilename)
pprint(announcedJson) pprint(announcedJson)
return '' return ''
# set the id to the original status # set the id to the original status
@ -1486,6 +1501,8 @@ def individualPostAsHtml(translate: {}, \
return '' return ''
else: else:
return '' return ''
else:
return ''
if not isinstance(postJsonObject['object'], dict): if not isinstance(postJsonObject['object'], dict):
return '' return ''