Followers and following on profile screen

master
Bob Mottram 2019-07-22 12:44:31 +01:00
parent e334eeae14
commit ed6a98af07
4 changed files with 45 additions and 6 deletions

View File

@ -645,7 +645,7 @@ class PubServer(BaseHTTPRequestHandler):
if 'page=' not in self.path:
# get a page of following, not the summary
following=getFollowingFeed(self.server.baseDir,self.server.domain, \
self.server.port,self.path+'?page=1', \
self.server.port,self.path+'?page=true', \
self.server.httpPrefix, \
authorized,followsPerPage)
getPerson = personLookup(self.server.domain,self.path.replace('/following',''), \
@ -664,7 +664,7 @@ class PubServer(BaseHTTPRequestHandler):
self._set_headers('application/json')
self.wfile.write(json.dumps(following).encode('utf-8'))
self.server.GETbusy=False
return
return
followers=getFollowingFeed(self.server.baseDir,self.server.domain, \
self.server.port,self.path, \
self.server.httpPrefix, \

View File

@ -1041,7 +1041,14 @@ if args.unfilterStr:
if args.testdata:
useBlurhash=False
nickname='testuser567'
password='boringpassword'
print('Generating some test data for user: '+nickname)
createPerson(baseDir,'maxboardroom',domain,port,httpPrefix,True,password)
createPerson(baseDir,'ultrapancake',domain,port,httpPrefix,True,password)
createPerson(baseDir,'drokk',domain,port,httpPrefix,True,password)
createPerson(baseDir,'sausagedog',domain,port,httpPrefix,True,password)
createPerson(baseDir,nickname,domain,port,httpPrefix,True,'likewhateveryouwantscoob')
setSkillLevel(baseDir,nickname,domain,'testing',60)
setSkillLevel(baseDir,nickname,domain,'typing',50)
@ -1051,8 +1058,6 @@ if args.testdata:
setAvailability(baseDir,nickname,domain,'busy')
deleteAllPosts(baseDir,nickname,domain,'inbox')
deleteAllPosts(baseDir,nickname,domain,'outbox')
followPerson(baseDir,nickname,domain,'admin',domain,federationList,True)
followerOfPerson(baseDir,nickname,domain,'admin',domain,federationList,True)
createPublicPost(baseDir,nickname,domain,port,httpPrefix,"like, this is totally just a test, man",False,True,False,None,None,useBlurhash)
createPublicPost(baseDir,nickname,domain,port,httpPrefix,"Zoiks!!!",False,True,False,None,None,useBlurhash)
createPublicPost(baseDir,nickname,domain,port,httpPrefix,"Hey scoob we need like a hundred more milkshakes",False,True,False,None,None,useBlurhash)
@ -1062,6 +1067,15 @@ if args.testdata:
createPublicPost(baseDir,nickname,domain,port,httpPrefix,"another mystery solved hey",False,True,False,None,None,useBlurhash)
createPublicPost(baseDir,nickname,domain,port,httpPrefix,"let's go bowling",False,True,False,None,None,useBlurhash)
domainFull=domain+':'+str(port)
clearFollows(baseDir,nickname,domain)
followPerson(baseDir,nickname,domain,'maxboardroom',domainFull,federationList,False)
followPerson(baseDir,nickname,domain,'ultrapancake',domainFull,federationList,False)
followPerson(baseDir,nickname,domain,'sausagedog',domainFull,federationList,False)
followPerson(baseDir,nickname,domain,'drokk',domainFull,federationList,False)
followerOfPerson(baseDir,nickname,domain,'drokk',domainFull,federationList,False)
followerOfPerson(baseDir,nickname,domain,'maxboardroom',domainFull,federationList,False)
runDaemon(args.client,baseDir,domain,port,httpPrefix, \
federationList, \
args.noreply,args.nolike,args.nopics, \

View File

@ -209,7 +209,10 @@ def getFollowingFeed(baseDir: str,domain: str,port: int,path: str, \
'totalItems': 0,
'type': 'OrderedCollectionPage'}
handle=nickname.lower()+'@'+domain.lower()
handleDomain=domain
if ':' in handleDomain:
handleDomain=domain.split(':')[0]
handle=nickname.lower()+'@'+handleDomain.lower()
filename=baseDir+'/accounts/'+handle+'/'+followFile+'.txt'
if not os.path.isfile(filename):
return following
@ -220,7 +223,7 @@ def getFollowingFeed(baseDir: str,domain: str,port: int,path: str, \
lines = f.readlines()
for line in lines:
if '#' not in line:
if '@' in line and '.' in line and not line.startswith('http'):
if '@' in line and not line.startswith('http'):
pageCtr += 1
totalCtr += 1
if currPage==pageNumber:

View File

@ -7,6 +7,7 @@ __email__ = "bob@freedombone.net"
__status__ = "Production"
import json
from pprint import pprint
from person import personBoxJson
from utils import getNicknameFromActor
from utils import getDomainFromActor
@ -51,6 +52,14 @@ def htmlProfilePosts(baseDir: str,httpPrefix: str,authorized: bool,ocapAlways: b
profileStr+=individualPostAsHtml(item)
return profileStr
def htmlProfileFollowing(baseDir: str,httpPrefix: str,authorized: bool,ocapAlways: bool,nickname: str,domain: str,port: int,followingJson: {}) -> str:
"""Shows following on the profile screen
"""
profileStr=''
for item in followingJson['orderedItems']:
profileStr+=individualFollowAsHtml(item)
return profileStr
def htmlProfile(baseDir: str,httpPrefix: str,authorized: bool,ocapAlways: bool,profileJson: {},selected: str,extraJson=None) -> str:
"""Show the profile page as html
"""
@ -295,9 +304,22 @@ def htmlProfile(baseDir: str,httpPrefix: str,authorized: bool,ocapAlways: bool,p
if selected=='posts':
profileStr+=htmlProfilePosts(baseDir,httpPrefix,authorized,ocapAlways,nickname,domain,port)
if selected=='following' or selected=='followers':
profileStr+=htmlProfileFollowing(baseDir,httpPrefix,authorized,ocapAlways,nickname,domain,port,extraJson)
profileStr=htmlHeader(profileStyle)+profileStr+htmlFooter()
return profileStr
def individualFollowAsHtml(followUrl: str) -> str:
nickname=getNicknameFromActor(followUrl)
domain,port=getDomainFromActor(followUrl)
titleStr='@'+nickname+'@'+domain
return \
'<div class="container">\n' \
'<a href="'+followUrl+'">' \
'<img src="'+followUrl+'/avatar.png" alt="Avatar">\n'+ \
'<p>'+titleStr+'</p></a>'+ \
'</div>\n'
def individualPostAsHtml(postJsonObject: {}) -> str:
avatarPosition=''
containerClass='container'