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

View File

@ -1041,7 +1041,14 @@ if args.unfilterStr:
if args.testdata: if args.testdata:
useBlurhash=False useBlurhash=False
nickname='testuser567' nickname='testuser567'
password='boringpassword'
print('Generating some test data for user: '+nickname) 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') createPerson(baseDir,nickname,domain,port,httpPrefix,True,'likewhateveryouwantscoob')
setSkillLevel(baseDir,nickname,domain,'testing',60) setSkillLevel(baseDir,nickname,domain,'testing',60)
setSkillLevel(baseDir,nickname,domain,'typing',50) setSkillLevel(baseDir,nickname,domain,'typing',50)
@ -1051,8 +1058,6 @@ if args.testdata:
setAvailability(baseDir,nickname,domain,'busy') setAvailability(baseDir,nickname,domain,'busy')
deleteAllPosts(baseDir,nickname,domain,'inbox') deleteAllPosts(baseDir,nickname,domain,'inbox')
deleteAllPosts(baseDir,nickname,domain,'outbox') 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,"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,"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) 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,"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) 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, \ runDaemon(args.client,baseDir,domain,port,httpPrefix, \
federationList, \ federationList, \
args.noreply,args.nolike,args.nopics, \ args.noreply,args.nolike,args.nopics, \

View File

@ -209,7 +209,10 @@ def getFollowingFeed(baseDir: str,domain: str,port: int,path: str, \
'totalItems': 0, 'totalItems': 0,
'type': 'OrderedCollectionPage'} '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' filename=baseDir+'/accounts/'+handle+'/'+followFile+'.txt'
if not os.path.isfile(filename): if not os.path.isfile(filename):
return following return following
@ -220,7 +223,7 @@ def getFollowingFeed(baseDir: str,domain: str,port: int,path: str, \
lines = f.readlines() lines = f.readlines()
for line in lines: for line in lines:
if '#' not in line: 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 pageCtr += 1
totalCtr += 1 totalCtr += 1
if currPage==pageNumber: if currPage==pageNumber:

View File

@ -7,6 +7,7 @@ __email__ = "bob@freedombone.net"
__status__ = "Production" __status__ = "Production"
import json import json
from pprint import pprint
from person import personBoxJson from person import personBoxJson
from utils import getNicknameFromActor from utils import getNicknameFromActor
from utils import getDomainFromActor from utils import getDomainFromActor
@ -51,6 +52,14 @@ def htmlProfilePosts(baseDir: str,httpPrefix: str,authorized: bool,ocapAlways: b
profileStr+=individualPostAsHtml(item) profileStr+=individualPostAsHtml(item)
return profileStr 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: def htmlProfile(baseDir: str,httpPrefix: str,authorized: bool,ocapAlways: bool,profileJson: {},selected: str,extraJson=None) -> str:
"""Show the profile page as html """Show the profile page as html
""" """
@ -295,9 +304,22 @@ def htmlProfile(baseDir: str,httpPrefix: str,authorized: bool,ocapAlways: bool,p
if selected=='posts': if selected=='posts':
profileStr+=htmlProfilePosts(baseDir,httpPrefix,authorized,ocapAlways,nickname,domain,port) 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() profileStr=htmlHeader(profileStyle)+profileStr+htmlFooter()
return profileStr 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: def individualPostAsHtml(postJsonObject: {}) -> str:
avatarPosition='' avatarPosition=''
containerClass='container' containerClass='container'