forked from indymedia/epicyon
Displaying replies to posts selected from the web interface
parent
49deddf1dc
commit
bbae1dc77d
20
daemon.py
20
daemon.py
|
@ -848,7 +848,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.session, \
|
||||
self.server.cachedWebfingers,self.server.personCache, \
|
||||
nickname,self.server.domain,self.server.port, \
|
||||
postJsonObject).encode('utf-8'))
|
||||
authorized,postJsonObject).encode('utf-8'))
|
||||
else:
|
||||
self._set_headers('application/json',None)
|
||||
self.wfile.write(json.dumps(postJsonObject).encode('utf-8'))
|
||||
|
@ -1036,7 +1036,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.session, \
|
||||
self.server.cachedWebfingers,self.server.personCache, \
|
||||
nickname,self.server.domain,self.server.port, \
|
||||
postJsonObject).encode('utf-8'))
|
||||
authorized,postJsonObject).encode('utf-8'))
|
||||
else:
|
||||
self._set_headers('application/json',None)
|
||||
self.wfile.write(json.dumps(postJsonObject).encode('utf-8'))
|
||||
|
@ -1419,15 +1419,13 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
fields['replyTo'], fields['replyTo'],fields['subject'])
|
||||
if messageJson:
|
||||
self.postToNickname=nickname
|
||||
result=self._postToOutbox(messageJson)
|
||||
print('_postToOutbox ********************************************** '+str(result))
|
||||
populateReplies(self.server.baseDir, \
|
||||
self.server.httpPrefix, \
|
||||
self.server.domainFull, \
|
||||
messageJson, \
|
||||
self.server.maxReplies, \
|
||||
self.server.debug)
|
||||
if result:
|
||||
if self._postToOutbox(messageJson):
|
||||
populateReplies(self.server.baseDir, \
|
||||
self.server.httpPrefix, \
|
||||
self.server.domainFull, \
|
||||
messageJson, \
|
||||
self.server.maxReplies, \
|
||||
self.server.debug)
|
||||
return 1
|
||||
else:
|
||||
return -1
|
||||
|
|
14
inbox.py
14
inbox.py
|
@ -812,26 +812,19 @@ def populateReplies(baseDir :str,httpPrefix :str,domain :str, \
|
|||
"""Updates the list of replies for a post on this domain if
|
||||
a reply to it arrives
|
||||
"""
|
||||
print("Test1")
|
||||
if not messageJson.get('id'):
|
||||
return False
|
||||
print("Test2")
|
||||
if not messageJson.get('object'):
|
||||
return False
|
||||
print("Test3")
|
||||
if not isinstance(messageJson['object'], dict):
|
||||
return False
|
||||
print("Test4")
|
||||
if not messageJson['object'].get('inReplyTo'):
|
||||
return False
|
||||
print("Test5")
|
||||
if not messageJson['object'].get('to'):
|
||||
return False
|
||||
print("Test6")
|
||||
replyTo=messageJson['object']['inReplyTo']
|
||||
if debug:
|
||||
print('DEBUG: post contains a reply')
|
||||
print("Test7")
|
||||
# is this a reply to a post on this domain?
|
||||
if not replyTo.startswith(httpPrefix+'://'+domain+'/'):
|
||||
if debug:
|
||||
|
@ -839,40 +832,33 @@ def populateReplies(baseDir :str,httpPrefix :str,domain :str, \
|
|||
print(replyTo)
|
||||
print('Expected: '+httpPrefix+'://'+domain+'/')
|
||||
return False
|
||||
print("Test8")
|
||||
replyToNickname=getNicknameFromActor(replyTo)
|
||||
if not replyToNickname:
|
||||
if debug:
|
||||
print('DEBUG: no nickname found for '+replyTo)
|
||||
return False
|
||||
print("Test9")
|
||||
replyToDomain,replyToPort=getDomainFromActor(replyTo)
|
||||
if not replyToDomain:
|
||||
if debug:
|
||||
print('DEBUG: no domain found for '+replyTo)
|
||||
return False
|
||||
print("Test10")
|
||||
postFilename=locatePost(baseDir,replyToNickname,replyToDomain,replyTo)
|
||||
if not postFilename:
|
||||
if debug:
|
||||
print('DEBUG: post may have expired - '+replyTo)
|
||||
return False
|
||||
print("Test11")
|
||||
# populate a text file containing the ids of replies
|
||||
postRepliesFilename=postFilename.replace('.json','.replies')
|
||||
messageId=messageJson['id'].replace('/activity','')
|
||||
if os.path.isfile(postRepliesFilename):
|
||||
numLines = sum(1 for line in open(postRepliesFilename))
|
||||
print("Test12 "+str(numLines))
|
||||
if numLines>maxReplies:
|
||||
return False
|
||||
print("Test13")
|
||||
if messageId not in open(postRepliesFilename).read():
|
||||
repliesFile=open(postRepliesFilename, "a")
|
||||
repliesFile.write(messageId+'\n')
|
||||
repliesFile.close()
|
||||
else:
|
||||
print("Test14")
|
||||
repliesFile=open(postRepliesFilename, "w")
|
||||
repliesFile.write(messageId+'\n')
|
||||
repliesFile.close()
|
||||
|
|
|
@ -16,11 +16,13 @@ from pprint import pprint
|
|||
from person import personBoxJson
|
||||
from utils import getNicknameFromActor
|
||||
from utils import getDomainFromActor
|
||||
from posts import getPersonBox
|
||||
from utils import locatePost
|
||||
from follow import isFollowingActor
|
||||
from webfinger import webfingerHandle
|
||||
from posts import getPersonBox
|
||||
from posts import getUserUrl
|
||||
from posts import parseUserFeed
|
||||
from posts import populateRepliesJson
|
||||
from session import getJson
|
||||
from auth import createPassword
|
||||
from like import likedByPerson
|
||||
|
@ -794,21 +796,26 @@ def htmlOutbox(pageNumber: int,itemsPerPage: int, \
|
|||
nickname,domain,port,outboxJson,'outbox')
|
||||
|
||||
def htmlIndividualPost(baseDir: str,session,wfRequest: {},personCache: {}, \
|
||||
nickname: str,domain: str,port: int,postJsonObject: {}) -> str:
|
||||
nickname: str,domain: str,port: int,authorized: bool, \
|
||||
postJsonObject: {}) -> str:
|
||||
"""Show an individual post as html
|
||||
"""
|
||||
postStr= \
|
||||
individualPostAsHtml(baseDir,session,wfRequest,personCache, \
|
||||
nickname,domain,port,postJsonObject,None,True,False)
|
||||
if postJsonObject.get('object'):
|
||||
if isinstance(postJsonObject['object'], dict):
|
||||
if postJsonObject['object'].get('replies'):
|
||||
repliesJson=postJsonObject['object']['replies']
|
||||
if repliesJson.get('orderedItems'):
|
||||
for item in repliesJson['orderedItems']:
|
||||
postStr+= \
|
||||
individualPostAsHtml(baseDir,session,wfRequest,personCache, \
|
||||
nickname,domain,port,item,None,True,False)
|
||||
postFilename=locatePost(baseDir,nickname,domain,postJsonObject['id'].replace('/activity',''))
|
||||
if postFilename:
|
||||
# is there a replies file for this post?
|
||||
repliesFilename=postFilename.replace('.json','.replies')
|
||||
if os.path.isfile(repliesFilename):
|
||||
# get items from the replies file
|
||||
repliesJson={'orderedItems': []}
|
||||
populateRepliesJson(baseDir,nickname,domain,repliesFilename,authorized,repliesJson)
|
||||
# add items to the html output
|
||||
for item in repliesJson['orderedItems']:
|
||||
postStr+= \
|
||||
individualPostAsHtml(baseDir,session,wfRequest,personCache, \
|
||||
nickname,domain,port,item,None,True,False)
|
||||
return htmlHeader()+postStr+htmlFooter()
|
||||
|
||||
def htmlPostReplies(baseDir: str,session,wfRequest: {},personCache: {}, \
|
||||
|
|
Loading…
Reference in New Issue