Search for shared items

master
Bob Mottram 2019-08-13 22:32:18 +01:00
parent a44cabb849
commit 1dae3bacca
2 changed files with 55 additions and 3 deletions

View File

@ -91,6 +91,7 @@ from webinterface import htmlEditProfile
from webinterface import htmlTermsOfService
from webinterface import htmlHashtagSearch
from webinterface import htmlModerationInfo
from webinterface import htmlSearchSharedItems
from shares import getSharesFeedForPerson
from shares import outboxShareUpload
from shares import outboxUndoShareUpload
@ -2225,9 +2226,8 @@ class PubServer(BaseHTTPRequestHandler):
self.wfile.write(hashtagStr.encode('utf-8'))
self.server.POSTbusy=False
return
if '@' in searchStr:
elif '@' in searchStr:
# profile search
print('Search: '+searchStr)
nickname=getNicknameFromActor(self.path)
if not self.server.session:
self.server.session= \
@ -2248,6 +2248,15 @@ class PubServer(BaseHTTPRequestHandler):
self.wfile.write(profileStr.encode('utf-8'))
self.server.POSTbusy=False
return
else:
# shared items search
sharedItemsStr= \
htmlSearchSharedItems(self.server.baseDir,searchStr)
if sharedItemsStr:
self._login_headers('text/html')
self.wfile.write(sharedItemsStr.encode('utf-8'))
self.server.POSTbusy=False
return
self._redirect_headers(actorStr,cookie)
self.server.POSTbusy=False
return

View File

@ -35,6 +35,49 @@ from content import getMentionsFromHtml
from config import getConfigParam
from skills import getSkills
def htmlSearchSharedItems(baseDir: str,searchStr: str) -> str:
sharedItemsForm=''
searchStrLower=searchStr.lower()
with open(baseDir+'/epicyon-profile.css', 'r') as cssFile:
sharedItemsCSS=cssFile.read()
sharedItemsForm=htmlHeader(sharedItemsCSS)
sharedItemsForm+='<center><h1>Shared Items Search</h1></center>'
resultsExist=False
for subdir, dirs, files in os.walk(baseDir+'/accounts'):
for handle in dirs:
if '@' not in handle:
continue
sharesFilename=baseDir+'/accounts/'+handle+'/shares.json'
if not os.path.isfile(sharesFilename):
continue
with open(sharesFilename, 'r') as fp:
sharesJson=commentjson.load(fp)
for name,sharedItem in sharesJson.items():
matched=False
if sharedItem['location'].lower() in searchStrLower:
matched=True
elif searchStrLower in sharedItem['summary'].lower():
matched=True
elif sharedItem['displayName'].lower() in searchStrLower:
matched=True
elif sharedItem['category'].lower() in searchStrLower:
matched=True
if matched:
sharedItemsForm+='<div class="container">'
sharedItemsForm+='<p class="share-title">'+sharedItem['displayName']+'</p>'
sharedItemsForm+='<a href="'+sharedItem['imageUrl']+'">'
sharedItemsForm+='<img src="'+sharedItem['imageUrl']+'" alt="Item image"></a>'
sharedItemsForm+='<p>'+sharedItem['summary']+'</p>'
sharedItemsForm+='<p><b>Type:</b> '+sharedItem['itemType']+' '
sharedItemsForm+='<b>Category:</b> '+sharedItem['category']+' '
sharedItemsForm+='<b>Location:</b> '+sharedItem['location']+'</p>'
sharedItemsForm+='</div>'
resultsExist=True
if not resultsExist:
sharedItemsForm+='<center><h5>No results</h5></center>'
sharedItemsForm+=htmlFooter()
return sharedItemsForm
def htmlModerationInfo(baseDir: str) -> str:
infoForm=''
with open(baseDir+'/epicyon-profile.css', 'r') as cssFile: