From 0f1e754913875c0c53121bdfde8c2d1f78809691 Mon Sep 17 00:00:00 2001
From: Bob Mottram
Date: Wed, 1 Apr 2020 21:29:04 +0000
Subject: [PATCH] flake8 style
---
blog.py | 816 ++++++++++++++++++++++++++++----------------------------
1 file changed, 405 insertions(+), 411 deletions(-)
diff --git a/blog.py b/blog.py
index c01d11af2..724e7d783 100644
--- a/blog.py
+++ b/blog.py
@@ -1,21 +1,13 @@
-__filename__="blog.py"
-__author__="Bob Mottram"
-__license__="AGPL3+"
-__version__="1.1.0"
-__maintainer__="Bob Mottram"
-__email__="bob@freedombone.net"
-__status__="Production"
+__filename__ = "blog.py"
+__author__ = "Bob Mottram"
+__license__ = "AGPL3+"
+__version__ = "1.1.0"
+__maintainer__ = "Bob Mottram"
+__email__ = "bob@freedombone.net"
+__status__ = "Production"
-import json
-import time
import os
-from collections import OrderedDict
from datetime import datetime
-from datetime import date
-from dateutil.parser import parse
-from shutil import copyfile
-from shutil import copyfileobj
-from pprint import pprint
from content import replaceEmojiFromTags
from webinterface import contentWarningScriptOpen
@@ -31,142 +23,141 @@ from utils import loadJson
from posts import createBlogsTimeline
-def noOfBlogReplies(baseDir: str,httpPrefix: str,translate: {}, \
- nickname: str,domain: str,domainFull: str, \
- postId: str,depth=0) -> int:
+def noOfBlogReplies(baseDir: str, httpPrefix: str, translate: {},
+ nickname: str, domain: str, domainFull: str,
+ postId: str, depth=0) -> int:
"""Returns the number of replies on the post
This is recursive, so can handle replies to replies
"""
- if depth>4:
+ if depth > 4:
return 0
if not postId:
return 0
- tryPostBox=('tlblogs','inbox','outbox')
- boxFound=False
+ tryPostBox = ('tlblogs', 'inbox', 'outbox')
+ boxFound = False
for postBox in tryPostBox:
- postFilename= \
- baseDir+'/accounts/'+nickname+'@'+domain+'/'+postBox+'/'+ \
- postId.replace('/','#')+'.replies'
+ postFilename = baseDir + '/accounts/' + \
+ nickname + '@' + domain + '/' + postBox + '/' + \
+ postId.replace('/', '#') + '.replies'
if os.path.isfile(postFilename):
- boxFound=True
+ boxFound = True
break
if not boxFound:
# post may exist but has no replies
for postBox in tryPostBox:
- postFilename= \
- baseDir+'/accounts/'+nickname+'@'+domain+'/'+postBox+'/'+ \
- postId.replace('/','#')
+ postFilename = baseDir + '/accounts/' + \
+ nickname + '@' + domain + '/' + postBox + '/' + \
+ postId.replace('/', '#')
if os.path.isfile(postFilename):
return 1
return 0
- replies=0
+ replies = 0
with open(postFilename, "r") as f:
- lines=f.readlines()
+ lines = f.readlines()
for replyPostId in lines:
- replyPostId= \
- replyPostId.replace('\n','').replace('.json','').replace('.replies','')
- replies+= \
- 1+ \
- noOfBlogReplies(baseDir,httpPrefix,translate, \
- nickname,domain,domainFull, \
- replyPostId,depth+1)
+ replyPostId = replyPostId.replace('\n', '').replace('.json', '')
+ replyPostId = replyPostId.replace('.replies', '')
+ replies += 1 + noOfBlogReplies(baseDir, httpPrefix, translate,
+ nickname, domain, domainFull,
+ replyPostId, depth+1)
return replies
-def getBlogReplies(baseDir: str,httpPrefix: str,translate: {}, \
- nickname: str,domain: str,domainFull: str, \
- postId: str,depth=0) -> str:
+def getBlogReplies(baseDir: str, httpPrefix: str, translate: {},
+ nickname: str, domain: str, domainFull: str,
+ postId: str, depth=0) -> str:
"""Returns the number of replies on the post
"""
- if depth>4:
+ if depth > 4:
return ''
if not postId:
return ''
- tryPostBox=('tlblogs','inbox','outbox')
- boxFound=False
+ tryPostBox = ('tlblogs', 'inbox', 'outbox')
+ boxFound = False
for postBox in tryPostBox:
- postFilename= \
- baseDir+'/accounts/'+nickname+'@'+domain+'/'+postBox+'/'+ \
- postId.replace('/','#')+'.replies'
+ postFilename = baseDir + '/accounts/' + \
+ nickname + '@' + domain + '/' + postBox + '/' + \
+ postId.replace('/', '#') + '.replies'
if os.path.isfile(postFilename):
- boxFound=True
+ boxFound = True
break
if not boxFound:
# post may exist but has no replies
for postBox in tryPostBox:
- postFilename= \
- baseDir+'/accounts/'+nickname+'@'+domain+'/'+postBox+'/'+ \
- postId.replace('/','#')
+ postFilename = baseDir + '/accounts/' + \
+ nickname + '@' + domain + '/' + postBox + '/' + \
+ postId.replace('/', '#')
if os.path.isfile(postFilename):
- postFilename= \
- baseDir+'/accounts/'+nickname+'@'+domain+ \
- '/postcache/'+ \
- postId.replace('/','#')+'.html'
+ postFilename = baseDir + '/accounts/' + \
+ nickname + '@' + domain + \
+ '/postcache/' + \
+ postId.replace('/', '#') + '.html'
if os.path.isfile(postFilename):
with open(postFilename, "r") as postFile:
- return postFile.read()+'\n'
+ return postFile.read() + '\n'
return ''
with open(postFilename, "r") as f:
- lines=f.readlines()
- repliesStr=''
+ lines = f.readlines()
+ repliesStr = ''
for replyPostId in lines:
- replyPostId= \
- replyPostId.replace('\n','').replace('.json','').replace('.replies','')
- postFilename= \
- baseDir+'/accounts/'+nickname+'@'+domain+ \
- '/postcache/'+ \
- replyPostId.replace('\n','').replace('/','#')+'.html'
+ replyPostId = replyPostId.replace('\n', '').replace('.json', '')
+ replyPostId = replyPostId.replace('.replies', '')
+ postFilename = baseDir + '/accounts/' + \
+ nickname + '@' + domain + \
+ '/postcache/' + \
+ replyPostId.replace('\n', '').replace('/', '#') + '.html'
if not os.path.isfile(postFilename):
continue
with open(postFilename, "r") as postFile:
- repliesStr+=postFile.read()+'\n'
- repliesStr+= \
- getBlogReplies(baseDir,httpPrefix,translate, \
- nickname,domain,domainFull, \
- replyPostId,depth+1)
+ repliesStr += postFile.read() + '\n'
+ repliesStr += getBlogReplies(baseDir, httpPrefix, translate,
+ nickname, domain, domainFull,
+ replyPostId, depth+1)
# indicate the reply indentation level
- indentStr='>'
+ indentStr = '>'
for indentLevel in range(depth):
- indentStr+=' >'
+ indentStr += ' >'
- return repliesStr.replace(translate['SHOW MORE'],indentStr).replace('?tl=outbox','?tl=tlblogs')
+ repliesStr = repliesStr.replace(translate['SHOW MORE'], indentStr)
+ return repliesStr.replace('?tl=outbox', '?tl=tlblogs')
return ''
-def htmlBlogPostContent(authorized: bool, \
- baseDir: str,httpPrefix: str,translate: {}, \
- nickname: str,domain: str,domainFull: str, \
- postJsonObject: {}, \
- handle: str,restrictToDomain: bool) -> str:
+def htmlBlogPostContent(authorized: bool,
+ baseDir: str, httpPrefix: str, translate: {},
+ nickname: str, domain: str, domainFull: str,
+ postJsonObject: {},
+ handle: str, restrictToDomain: bool) -> str:
"""Returns the content for a single blog post
"""
- linkedAuthor=False
- actor=''
- blogStr=''
- messageLink=''
+ linkedAuthor = False
+ actor = ''
+ blogStr = ''
+ messageLink = ''
if postJsonObject['object'].get('id'):
- messageLink=postJsonObject['object']['id'].replace('/statuses/','/')
- titleStr=''
+ messageLink = postJsonObject['object']['id'].replace('/statuses/', '/')
+ titleStr = ''
if postJsonObject['object'].get('summary'):
- titleStr=postJsonObject['object']['summary']
- blogStr+='\n'
+ titleStr = postJsonObject['object']['summary']
+ blogStr += '\n'
# get the handle of the author
if postJsonObject['object'].get('attributedTo'):
- actor=postJsonObject['object']['attributedTo']
- authorNickname=getNicknameFromActor(actor)
+ actor = postJsonObject['object']['attributedTo']
+ authorNickname = getNicknameFromActor(actor)
if authorNickname:
- authorDomain,authorPort=getDomainFromActor(actor)
+ authorDomain, authorPort = getDomainFromActor(actor)
if authorDomain:
# author must be from the given domain
if restrictToDomain and authorDomain != domain:
return ''
- handle=authorNickname+'@'+authorDomain
+ handle = authorNickname + '@' + authorDomain
else:
# posts from the domain are expected to have an attributedTo field
if restrictToDomain:
@@ -174,504 +165,507 @@ def htmlBlogPostContent(authorized: bool, \
if postJsonObject['object'].get('published'):
if 'T' in postJsonObject['object']['published']:
- blogStr+=''+postJsonObject['object']['published'].split('T')[0]
+ blogStr += '' + \
+ postJsonObject['object']['published'].split('T')[0]
if handle:
- if handle.startswith(nickname+'@'+domain):
- blogStr+= \
- ' '+handle+' '
- linkedAuthor=True
+ if handle.startswith(nickname + '@' + domain):
+ blogStr += ' ' + handle + ' '
+ linkedAuthor = True
else:
- if author:
- blogStr+= \
- ' '+handle+' '
- linkedAuthor=True
+ if actor:
+ blogStr += ' ' + \
+ handle + ' '
+ linkedAuthor = True
else:
- blogStr+=' '+handle
- blogStr+=' \n'
+ blogStr += ' ' + handle
+ blogStr += ' \n'
- avatarLink=''
- replyStr=''
- announceStr=''
- likeStr=''
- bookmarkStr=''
- deleteStr=''
- muteStr=''
- isMuted=False
- attachmentStr,galleryStr= \
- getPostAttachmentsAsHtml(postJsonObject,'tlblogs',translate, \
- isMuted,avatarLink, \
- replyStr,announceStr,likeStr, \
- bookmarkStr,deleteStr,muteStr)
+ avatarLink = ''
+ replyStr = ''
+ announceStr = ''
+ likeStr = ''
+ bookmarkStr = ''
+ deleteStr = ''
+ muteStr = ''
+ isMuted = False
+ attachmentStr, galleryStr = getPostAttachmentsAsHtml(postJsonObject,
+ 'tlblogs', translate,
+ isMuted, avatarLink,
+ replyStr, announceStr,
+ likeStr, bookmarkStr,
+ deleteStr, muteStr)
if attachmentStr:
- blogStr+=''+attachmentStr+' '
+ blogStr += '' + attachmentStr + ' '
if postJsonObject['object'].get('content'):
- contentStr= \
- addEmbeddedElements(translate, \
- postJsonObject['object']['content'])
+ contentStr = addEmbeddedElements(translate,
+ postJsonObject['object']['content'])
if postJsonObject['object'].get('tag'):
- contentStr= \
- replaceEmojiFromTags(contentStr, \
- postJsonObject['object']['tag'],'content')
- blogStr+=' '+contentStr+'\n'
+ contentStr = replaceEmojiFromTags(contentStr,
+ postJsonObject['object']['tag'],
+ 'content')
+ blogStr += ' ' + contentStr + '\n'
- blogStr+=' \n'
+ blogStr += ' \n'
if not linkedAuthor:
- blogStr+= \
- ''+translate['About the author']+'
\n'
+ blogStr += '' + translate['About the author'] + \
+ '
\n'
- replies= \
- noOfBlogReplies(baseDir,httpPrefix,translate, \
- nickname,domain,domainFull, \
- postJsonObject['object']['id'])
- if replies>0:
+ replies = noOfBlogReplies(baseDir, httpPrefix, translate,
+ nickname, domain, domainFull,
+ postJsonObject['object']['id'])
+ if replies > 0:
if not authorized:
- blogStr+= \
- ''+ \
- translate['Replies'].lower()+': '+str(replies)+'
\n'
+ blogStr += '' + \
+ translate['Replies'].lower() + ': ' + str(replies) + '
\n'
else:
- blogStr+=''+translate['Replies']+' \n'
- blogStr+='\n'
+ blogStr += '' + translate['Replies'] + ' \n'
+ blogStr += '\n'
if not titleStr:
- blogStr+= \
- getBlogReplies(baseDir,httpPrefix,translate, \
- nickname,domain,domainFull, \
- postJsonObject['object']['id'])
+ blogStr += getBlogReplies(baseDir, httpPrefix, translate,
+ nickname, domain, domainFull,
+ postJsonObject['object']['id'])
else:
- blogStr+= \
- getBlogReplies(baseDir,httpPrefix,translate, \
- nickname,domain,domainFull, \
- postJsonObject['object']['id']).replace('>'+titleStr+'<','')
- blogStr+=' \n'
+ blogRepliesStr = getBlogReplies(baseDir, httpPrefix, translate,
+ nickname, domain, domainFull,
+ postJsonObject['object']['id'])
+ blogStr += blogRepliesStr.replace('>' + titleStr + '<', '')
+ blogStr += ' \n'
return blogStr
-def htmlBlogPostRSS(authorized: bool, \
- baseDir: str,httpPrefix: str,translate: {}, \
- nickname: str,domain: str,domainFull: str, \
- postJsonObject: {}, \
- handle: str,restrictToDomain: bool) -> str:
+def htmlBlogPostRSS(authorized: bool,
+ baseDir: str, httpPrefix: str, translate: {},
+ nickname: str, domain: str, domainFull: str,
+ postJsonObject: {},
+ handle: str, restrictToDomain: bool) -> str:
"""Returns the RSS feed for a single blog post
"""
- messageLink=''
+ messageLink = ''
if postJsonObject['object'].get('id'):
- messageLink=postJsonObject['object']['id'].replace('/statuses/','/')
+ messageLink = postJsonObject['object']['id'].replace('/statuses/', '/')
if not restrictToDomain or \
- (restrictToDomain and '/'+domain in messageLink):
+ (restrictToDomain and '/' + domain in messageLink):
if postJsonObject['object'].get('summary'):
- published=postJsonObject['object']['published']
- pubDate=datetime.strptime(published,"%Y-%m-%dT%H:%M:%SZ")
- titleStr=postJsonObject['object']['summary']
- rssStr= ' - '
- rssStr+='
'+titleStr+' '
- rssStr+=' '+messageLink+''
- rssStr+=' '+pubDate.strftime("%a, %d %b %Y %H:%M:%S UT")+' '
- rssStr+=' '
+ published = postJsonObject['object']['published']
+ pubDate = datetime.strptime(published, "%Y-%m-%dT%H:%M:%SZ")
+ titleStr = postJsonObject['object']['summary']
+ rssDateStr = pubDate.strftime("%a, %d %b %Y %H:%M:%S UT")
+ rssStr = ' - '
+ rssStr += '
' + titleStr + ' '
+ rssStr += ' ' + messageLink + ''
+ rssStr += ' ' + rssDateStr + ' '
+ rssStr += ' '
return rssStr
-def htmlBlogPost(authorized: bool, \
- baseDir: str,httpPrefix: str,translate: {}, \
- nickname: str,domain: str,domainFull: str, \
+def htmlBlogPost(authorized: bool,
+ baseDir: str, httpPrefix: str, translate: {},
+ nickname: str, domain: str, domainFull: str,
postJsonObject: {}) -> str:
"""Returns a html blog post
"""
- blogStr=''
+ blogStr = ''
- cssFilename=baseDir+'/epicyon-profile.css'
- if os.path.isfile(baseDir+'/epicyon.css'):
- cssFilename=baseDir+'/epicyon.css'
+ cssFilename = baseDir + '/epicyon-profile.css'
+ if os.path.isfile(baseDir + '/epicyon.css'):
+ cssFilename = baseDir + '/epicyon.css'
with open(cssFilename, 'r') as cssFile:
- blogCSS=cssFile.read()
- blogStr=htmlHeader(cssFilename,blogCSS)
- blogStr=blogStr.replace('.cwText','.cwTextInactive')
+ blogCSS = cssFile.read()
+ blogStr = htmlHeader(cssFilename, blogCSS)
+ blogStr = blogStr.replace('.cwText', '.cwTextInactive')
- blogStr+= \
- htmlBlogPostContent(authorized,baseDir,httpPrefix,translate, \
- nickname,domain,domainFull,postJsonObject, \
- None,False)
+ blogStr += htmlBlogPostContent(authorized, baseDir,
+ httpPrefix, translate,
+ nickname, domain,
+ domainFull, postJsonObject,
+ None, False)
# show rss link
- iconsDir=getIconsDir(baseDir)
- blogStr+=''
+ iconsDir = getIconsDir(baseDir)
+ blogStr += ''
- return blogStr+htmlFooter()
+ return blogStr + htmlFooter()
return None
-def htmlBlogPage(authorized: bool, session, \
- baseDir: str,httpPrefix: str,translate: {}, \
- nickname: str,domain: str,port: int, \
- noOfItems: int,pageNumber: int) -> str:
+
+def htmlBlogPage(authorized: bool, session,
+ baseDir: str, httpPrefix: str, translate: {},
+ nickname: str, domain: str, port: int,
+ noOfItems: int, pageNumber: int) -> str:
"""Returns a html blog page containing posts
"""
if ' ' in nickname or '@' in nickname or '\n' in nickname:
return None
- blogStr=''
+ blogStr = ''
- cssFilename=baseDir+'/epicyon-profile.css'
- if os.path.isfile(baseDir+'/epicyon.css'):
- cssFilename=baseDir+'/epicyon.css'
+ cssFilename = baseDir + '/epicyon-profile.css'
+ if os.path.isfile(baseDir + '/epicyon.css'):
+ cssFilename = baseDir + '/epicyon.css'
with open(cssFilename, 'r') as cssFile:
- blogCSS=cssFile.read()
- blogStr=htmlHeader(cssFilename,blogCSS)
- blogStr=blogStr.replace('.cwText','.cwTextInactive')
+ blogCSS = cssFile.read()
+ blogStr = htmlHeader(cssFilename, blogCSS)
+ blogStr = blogStr.replace('.cwText', '.cwTextInactive')
- blogsIndex= \
- baseDir+'/accounts/'+nickname+'@'+domain+'/tlblogs.index'
+ blogsIndex = baseDir + '/accounts/' + \
+ nickname + '@' + domain + '/tlblogs.index'
if not os.path.isfile(blogsIndex):
- return blogStr+htmlFooter()
+ return blogStr + htmlFooter()
- timelineJson= \
- createBlogsTimeline(session,baseDir, \
- nickname,domain,port,httpPrefix, \
- noOfItems,False,False,pageNumber)
+ timelineJson = createBlogsTimeline(session, baseDir,
+ nickname, domain, port,
+ httpPrefix,
+ noOfItems, False, False,
+ pageNumber)
if not timelineJson:
- return blogStr+htmlFooter()
+ return blogStr + htmlFooter()
- domainFull=domain
+ domainFull = domain
if port:
- if port!=80 and port!=443:
- domainFull=domain+':'+str(port)
+ if port != 80 and port != 443:
+ domainFull = domain + ':' + str(port)
# show previous and next buttons
- if pageNumber!=None:
- iconsDir=getIconsDir(baseDir)
- navigateStr=''
- if pageNumber>1:
+ if pageNumber is not None:
+ iconsDir = getIconsDir(baseDir)
+ navigateStr = '
'
+ if pageNumber > 1:
# show previous button
- navigateStr+= \
- ''+ \
- ' ' + \
+ ' \n'
- if len(timelineJson['orderedItems'])>=noOfItems:
+ if len(timelineJson['orderedItems']) >= noOfItems:
# show next button
- navigateStr+= \
- ''+ \
- ' ' + \
+ ' \n'
- navigateStr+='
'
- blogStr+=navigateStr
+ navigateStr += '
'
+ blogStr += navigateStr
for item in timelineJson['orderedItems']:
- if item['type']!='Create':
+ if item['type'] != 'Create':
continue
- blogStr+= \
- htmlBlogPostContent(authorized,baseDir,httpPrefix,translate, \
- nickname,domain,domainFull,item, \
- None,True)
+ blogStr += htmlBlogPostContent(authorized, baseDir,
+ httpPrefix, translate,
+ nickname, domain,
+ domainFull, item,
+ None, True)
- if len(timelineJson['orderedItems'])>=noOfItems:
- blogStr+=navigateStr
+ if len(timelineJson['orderedItems']) >= noOfItems:
+ blogStr += navigateStr
# show rss link
- blogStr+=''
+ blogStr += ''
- return blogStr+htmlFooter()
+ return blogStr + htmlFooter()
return None
-def rssHeader(httpPrefix: str,nickname: str,domainFull: str,translate: {}) -> str:
- rssStr=""
- rssStr+=""
- rssStr+=''
- rssStr+=' '+translate['Blog']+' '
- rssStr+=' '+httpPrefix+'://'+domainFull+'/users/'+nickname+'/rss.xml'+''
+
+def rssHeader(httpPrefix: str,
+ nickname: str, domainFull: str, translate: {}) -> str:
+ rssStr = ""
+ rssStr += ""
+ rssStr += ''
+ rssStr += ' ' + translate['Blog'] + ' '
+ rssStr += ' ' + httpPrefix + '://' + domainFull + \
+ '/users/' + nickname + '/rss.xml' + ''
return rssStr
+
def rssFooter() -> str:
- rssStr=' '
- rssStr+=' '
+ rssStr = ' '
+ rssStr += ' '
return rssStr
-def htmlBlogPageRSS(authorized: bool, session, \
- baseDir: str,httpPrefix: str,translate: {}, \
- nickname: str,domain: str,port: int, \
- noOfItems: int,pageNumber: int) -> str:
+
+def htmlBlogPageRSS(authorized: bool, session,
+ baseDir: str, httpPrefix: str, translate: {},
+ nickname: str, domain: str, port: int,
+ noOfItems: int, pageNumber: int) -> str:
"""Returns an rss feed containing posts
"""
if ' ' in nickname or '@' in nickname or '\n' in nickname:
return None
- domainFull=domain
+ domainFull = domain
if port:
- if port!=80 and port!=443:
- domainFull=domain+':'+str(port)
+ if port != 80 and port != 443:
+ domainFull = domain + ':' + str(port)
- blogRSS=rssHeader(httpPrefix,nickname,domainFull,translate)
+ blogRSS = rssHeader(httpPrefix, nickname, domainFull, translate)
- blogsIndex= \
- baseDir+'/accounts/'+nickname+'@'+domain+'/tlblogs.index'
+ blogsIndex = baseDir + '/accounts/' + \
+ nickname + '@' + domain + '/tlblogs.index'
if not os.path.isfile(blogsIndex):
- return blogRSS+rssFooter()
+ return blogRSS + rssFooter()
- timelineJson= \
- createBlogsTimeline(session,baseDir, \
- nickname,domain,port,httpPrefix, \
- noOfItems,False,False,pageNumber)
+ timelineJson = createBlogsTimeline(session, baseDir,
+ nickname, domain, port,
+ httpPrefix,
+ noOfItems, False, False,
+ pageNumber)
if not timelineJson:
- return blogRSS+rssFooter()
+ return blogRSS + rssFooter()
- if pageNumber!=None:
+ if pageNumber is not None:
for item in timelineJson['orderedItems']:
- if item['type']!='Create':
+ if item['type'] != 'Create':
continue
- blogRSS+= \
- htmlBlogPostRSS(authorized,baseDir,httpPrefix,translate, \
- nickname,domain,domainFull,item, \
- None,True)
+ blogRSS += htmlBlogPostRSS(authorized, baseDir,
+ httpPrefix, translate,
+ nickname, domain,
+ domainFull, item,
+ None, True)
- return blogRSS+rssFooter()
+ return blogRSS + rssFooter()
def getBlogIndexesForAccounts(baseDir: str) -> {}:
""" Get the index files for blogs for each account
and add them to a dict
"""
- blogIndexes={}
- for subdir, dirs, files in os.walk(baseDir+'/accounts'):
+ blogIndexes = {}
+ for subdir, dirs, files in os.walk(baseDir + '/accounts'):
for acct in dirs:
if '@' not in acct:
continue
if 'inbox@' in acct:
continue
- accountDir=os.path.join(baseDir+'/accounts', acct)
- blogsIndex=accountDir+'/tlblogs.index'
+ accountDir = os.path.join(baseDir + '/accounts', acct)
+ blogsIndex = accountDir + '/tlblogs.index'
if os.path.isfile(blogsIndex):
- blogIndexes[acct]=blogsIndex
+ blogIndexes[acct] = blogsIndex
return blogIndexes
+
def noOfBlogAccounts(baseDir: str) -> int:
"""Returns the number of blog accounts
"""
- ctr=0
- for subdir, dirs, files in os.walk(baseDir+'/accounts'):
+ ctr = 0
+ for subdir, dirs, files in os.walk(baseDir + '/accounts'):
for acct in dirs:
if '@' not in acct:
continue
if 'inbox@' in acct:
continue
- accountDir=os.path.join(baseDir+'/accounts', acct)
- blogsIndex=accountDir+'/tlblogs.index'
+ accountDir = os.path.join(baseDir + '/accounts', acct)
+ blogsIndex = accountDir + '/tlblogs.index'
if os.path.isfile(blogsIndex):
- ctr+=1
+ ctr += 1
return ctr
+
def singleBlogAccountNickname(baseDir: str) -> str:
"""Returns the nickname of a single blog account
"""
- for subdir, dirs, files in os.walk(baseDir+'/accounts'):
+ for subdir, dirs, files in os.walk(baseDir + '/accounts'):
for acct in dirs:
if '@' not in acct:
continue
if 'inbox@' in acct:
continue
- accountDir=os.path.join(baseDir+'/accounts', acct)
- blogsIndex=accountDir+'/tlblogs.index'
+ accountDir = os.path.join(baseDir + '/accounts', acct)
+ blogsIndex = accountDir + '/tlblogs.index'
if os.path.isfile(blogsIndex):
return acct.split('@')[0]
return None
-def htmlBlogView(authorized: bool, \
- session,baseDir: str,httpPrefix: str, \
- translate: {},domain: str,port: int, \
+
+def htmlBlogView(authorized: bool,
+ session, baseDir: str, httpPrefix: str,
+ translate: {}, domain: str, port: int,
noOfItems: int) -> str:
"""Show the blog main page
"""
- blogStr=''
+ blogStr = ''
- cssFilename=baseDir+'/epicyon-profile.css'
- if os.path.isfile(baseDir+'/epicyon.css'):
- cssFilename=baseDir+'/epicyon.css'
+ cssFilename = baseDir + '/epicyon-profile.css'
+ if os.path.isfile(baseDir + '/epicyon.css'):
+ cssFilename = baseDir + '/epicyon.css'
with open(cssFilename, 'r') as cssFile:
- blogCSS=cssFile.read()
- blogStr=htmlHeader(cssFilename,blogCSS)
+ blogCSS = cssFile.read()
+ blogStr = htmlHeader(cssFilename, blogCSS)
if noOfBlogAccounts(baseDir) <= 1:
- nickname=singleBlogAccountNickname(baseDir)
+ nickname = singleBlogAccountNickname(baseDir)
if nickname:
- return htmlBlogPage(authorized,session, \
- baseDir,httpPrefix,translate, \
- nickname,domain,port, \
- noOfItems,1)
+ return htmlBlogPage(authorized, session,
+ baseDir, httpPrefix, translate,
+ nickname, domain, port,
+ noOfItems, 1)
- domainFull=domain
+ domainFull = domain
if port:
- if port!=80 and port!=443:
- domainFull=domain+':'+str(port)
+ if port != 80 and port != 443:
+ domainFull = domain + ':' + str(port)
- for subdir, dirs, files in os.walk(baseDir+'/accounts'):
+ for subdir, dirs, files in os.walk(baseDir + '/accounts'):
for acct in dirs:
if '@' not in acct:
continue
if 'inbox@' in acct:
continue
- accountDir=os.path.join(baseDir+'/accounts', acct)
- blogsIndex=accountDir+'/tlblogs.index'
+ accountDir = os.path.join(baseDir + '/accounts', acct)
+ blogsIndex = accountDir + '/tlblogs.index'
if os.path.isfile(blogsIndex):
- blogStr+=''
- blogStr+= \
- ''+acct+' '
- blogStr+='
'
+ blogStr += ''
+ blogStr += '' + acct + ' '
+ blogStr += '
'
- return blogStr+htmlFooter()
+ return blogStr + htmlFooter()
return None
-def htmlEditBlog(mediaInstance: bool,translate: {}, \
- baseDir: str,httpPrefix: str, \
- path: str, \
- pageNumber: int, \
- nickname: str,domain: str, \
+
+def htmlEditBlog(mediaInstance: bool, translate: {},
+ baseDir: str, httpPrefix: str,
+ path: str,
+ pageNumber: int,
+ nickname: str, domain: str,
postUrl: str) -> str:
"""Edit a blog post after it was created
"""
- postFilename=locatePost(baseDir,nickname,domain,postUrl)
+ postFilename = locatePost(baseDir, nickname, domain, postUrl)
if not postFilename:
- print('Edit blog: Filename not found for '+postUrl)
+ print('Edit blog: Filename not found for ' + postUrl)
return None
- postJsonObject=loadJson(postFilename)
+ postJsonObject = loadJson(postFilename)
if not postJsonObject:
- print('Edit blog: json not loaded for '+postFilename)
+ print('Edit blog: json not loaded for ' + postFilename)
return None
- iconsDir=getIconsDir(baseDir)
+ iconsDir = getIconsDir(baseDir)
- editBlogText= \
- ''+ \
- translate['Write your post text below.']+'
'
+ editBlogText = '' + \
+ translate['Write your post text below.'] + '
'
- if os.path.isfile(baseDir+'/accounts/newpost.txt'):
- with open(baseDir+'/accounts/newpost.txt', 'r') as file:
- editBlogText=''+file.read()+'
'
+ if os.path.isfile(baseDir + '/accounts/newpost.txt'):
+ with open(baseDir + '/accounts/newpost.txt', 'r') as file:
+ editBlogText = '' + file.read() + '
'
- cssFilename=baseDir+'/epicyon-profile.css'
- if os.path.isfile(baseDir+'/epicyon.css'):
- cssFilename=baseDir+'/epicyon.css'
+ cssFilename = baseDir + '/epicyon-profile.css'
+ if os.path.isfile(baseDir + '/epicyon.css'):
+ cssFilename = baseDir + '/epicyon.css'
with open(cssFilename, 'r') as cssFile:
- editBlogCSS=cssFile.read()
- if httpPrefix!='https':
- editBlogCSS=editBlogCSS.replace('https://',httpPrefix+'://')
+ editBlogCSS = cssFile.read()
+ if httpPrefix != 'https':
+ editBlogCSS = editBlogCSS.replace('https://', httpPrefix+'://')
if '?' in path:
- path=path.split('?')[0]
- pathBase=path
+ path = path.split('?')[0]
+ pathBase = path
- editBlogImageSection =' '
- editBlogImageSection+=' '+translate['Image description']+' '
- editBlogImageSection+=' '
- editBlogImageSection+=' '
- editBlogImageSection+='
'
+ editBlogImageSection = ' '
+ editBlogImageSection += ' ' + \
+ translate['Image description'] + ' '
+ editBlogImageSection += ' '
+ editBlogImageSection += ' '
+ editBlogImageSection += '
'
- placeholderMessage=translate['Write something']+'...'
- endpoint='editblogpost'
- placeholderSubject=translate['Title']
- scopeIcon='scope_blog.png'
- scopeDescription=translate['Blog']
+ placeholderMessage = translate['Write something'] + '...'
+ endpoint = 'editblogpost'
+ placeholderSubject = translate['Title']
+ scopeIcon = 'scope_blog.png'
+ scopeDescription = translate['Blog']
- dateAndLocation=''
- dateAndLocation=''
+ dateAndLocation += ''
+ dateAndLocation += '' + translate['Location'] + ': '
+ dateAndLocation += ' '
+ dateAndLocation += '
'
- editBlogForm=htmlHeader(cssFilename,editBlogCSS)
+ editBlogForm = htmlHeader(cssFilename, editBlogCSS)
- mentionsStr=''
+ editBlogForm += ''
- editBlogForm= \
- editBlogForm.replace('','')
+ editBlogForm = editBlogForm.replace('',
+ '')
- editBlogForm+=htmlFooter()
+ editBlogForm += htmlFooter()
return editBlogForm