Merge branch 'main' of ssh://code.freedombone.net:2222/bashrc/epicyon

main
Bob Mottram 2021-06-07 10:24:31 +01:00
commit e5557f01dc
8 changed files with 56 additions and 38 deletions

View File

@ -9,6 +9,7 @@ __status__ = "Production"
import os
import json
from datetime import datetime
from utils import isAccountDir
from utils import getCachedPostFilename
from utils import loadJson
from utils import saveJson
@ -660,9 +661,7 @@ def setBrochMode(baseDir: str, domainFull: str, enabled: bool) -> None:
followFiles = ('following.txt', 'followers.txt')
for subdir, dirs, files in os.walk(baseDir + '/accounts'):
for acct in dirs:
if '@' not in acct:
continue
if 'inbox@' in acct or 'news@' in acct:
if not isAccountDir(acct):
continue
accountDir = os.path.join(baseDir + '/accounts', acct)
for followFileType in followFiles:

View File

@ -203,6 +203,7 @@ from shares import addShare
from shares import removeShare
from shares import expireShares
from categories import setHashtagCategory
from utils import isAccountDir
from utils import getOccupationSkills
from utils import getOccupationName
from utils import setOccupationName
@ -5700,9 +5701,7 @@ class PubServer(BaseHTTPRequestHandler):
msg = ''
for subdir, dirs, files in os.walk(baseDir + '/accounts'):
for acct in dirs:
if '@' not in acct:
continue
if 'inbox@' in acct or 'news@' in acct:
if not isAccountDir(acct):
continue
nickname = acct.split('@')[0]
domain = acct.split('@')[1]

View File

@ -47,16 +47,19 @@ def removeFilter(baseDir: str, nickname: str, domain: str,
"""
filtersFilename = baseDir + '/accounts/' + \
nickname + '@' + domain + '/filters.txt'
if os.path.isfile(filtersFilename):
if words in open(filtersFilename).read():
if not os.path.isfile(filtersFilename):
return False
if words not in open(filtersFilename).read():
return False
newFiltersFilename = filtersFilename + '.new'
with open(filtersFilename, 'r') as fp:
with open(filtersFilename + '.new', 'w+') as fpnew:
with open(newFiltersFilename, 'w+') as fpnew:
for line in fp:
line = line.replace('\n', '')
if line != words:
fpnew.write(line + '\n')
if os.path.isfile(filtersFilename + '.new'):
os.rename(filtersFilename + '.new', filtersFilename)
if os.path.isfile(newFiltersFilename):
os.rename(newFiltersFilename, filtersFilename)
return True
return False
@ -65,16 +68,19 @@ def removeGlobalFilter(baseDir: str, words: str) -> bool:
"""Removes a global word filter
"""
filtersFilename = baseDir + '/accounts/filters.txt'
if os.path.isfile(filtersFilename):
if words in open(filtersFilename).read():
if not os.path.isfile(filtersFilename):
return False
if words not in open(filtersFilename).read():
return False
newFiltersFilename = filtersFilename + '.new'
with open(filtersFilename, 'r') as fp:
with open(filtersFilename + '.new', 'w+') as fpnew:
with open(newFiltersFilename, 'w+') as fpnew:
for line in fp:
line = line.replace('\n', '')
if line != words:
fpnew.write(line + '\n')
if os.path.isfile(filtersFilename + '.new'):
os.rename(filtersFilename + '.new', filtersFilename)
if os.path.isfile(newFiltersFilename):
os.rename(newFiltersFilename, filtersFilename)
return True
return False

View File

@ -22,6 +22,7 @@ from posts import sendSignedJson
from posts import getPersonBox
from utils import loadJson
from utils import saveJson
from utils import isAccountDir
from acceptreject import createAccept
from acceptreject import createReject
from webfinger import webfingerHandle
@ -31,13 +32,13 @@ from session import postJson
def createInitialLastSeen(baseDir: str, httpPrefix: str) -> None:
"""Creates initial lastseen files for all follows
"""Creates initial lastseen files for all follows.
The lastseen files are used to generate the Zzz icons on
follows/following lists on the profile screen.
"""
for subdir, dirs, files in os.walk(baseDir + '/accounts'):
for acct in dirs:
if '@' not in acct:
continue
if 'inbox@' in acct or 'news@' in acct:
if not isAccountDir(acct):
continue
accountDir = os.path.join(baseDir + '/accounts', acct)
followingFilename = accountDir + '/following.txt'

View File

@ -7,6 +7,7 @@ __email__ = "bob@freedombone.net"
__status__ = "Production"
import os
from utils import isAccountDir
from utils import loadJson
from utils import noOfAccounts
from utils import noOfActiveAccountsMonthly
@ -19,9 +20,7 @@ def _getStatusCount(baseDir: str) -> int:
accountsDir = baseDir + '/accounts'
for subdir, dirs, files in os.walk(accountsDir):
for acct in dirs:
if '@' not in acct:
continue
if 'inbox@' in acct or 'news@' in acct:
if not isAccountDir(acct):
continue
acctDir = os.path.join(accountsDir, acct + '/outbox')
for subdir2, dirs2, files2 in os.walk(acctDir):

View File

@ -95,6 +95,11 @@ def setActorSkillLevel(actorJson: {},
]
ocSkillsList = getOccupationSkills(actorJson)
skillsDict = getSkillsFromList(ocSkillsList)
if not skillsDict.get(skill):
if len(skillsDict.items()) >= 32:
print('WARN: Maximum number of skills reached for ' +
actorJson['id'])
return False
if skillLevelPercent > 0:
skillsDict[skill] = skillLevelPercent
else:

View File

@ -2400,3 +2400,13 @@ def setOccupationSkillsList(actorJson: {}, skillsList: []) -> bool:
occupationItem['skills'] = skillsList
return True
return False
def isAccountDir(dirName: str) -> bool:
"""Is the given directory an account within /accounts ?
"""
if '@' not in dirName:
return False
if 'inbox@' in dirName or 'news@' in dirName:
return False
return True

View File

@ -7,6 +7,7 @@ __email__ = "bob@freedombone.net"
__status__ = "Production"
import os
from utils import isAccountDir
from utils import loadJson
from utils import getConfigParam
from webapp_utils import htmlHeaderWithExternalStyle
@ -19,9 +20,7 @@ def loadAccessKeysForAccounts(baseDir: str, keyShortcuts: {},
"""
for subdir, dirs, files in os.walk(baseDir + '/accounts'):
for acct in dirs:
if '@' not in acct:
continue
if 'inbox@' in acct or 'news@' in acct:
if not isAccountDir(acct):
continue
accountDir = os.path.join(baseDir + '/accounts', acct)
accessKeysFilename = accountDir + '/accessKeys.json'