forked from indymedia/epicyon
Ability to remove scheduled posts
parent
cdc2b67bc7
commit
fb4588d8b2
|
@ -169,6 +169,7 @@ from httpsig import verifyPostHeaders
|
||||||
from theme import setTheme
|
from theme import setTheme
|
||||||
from schedule import runPostSchedule
|
from schedule import runPostSchedule
|
||||||
from schedule import runPostScheduleWatchdog
|
from schedule import runPostScheduleWatchdog
|
||||||
|
from schedule import removeScheduledPosts
|
||||||
from outbox import postMessageToOutbox
|
from outbox import postMessageToOutbox
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
@ -4197,6 +4198,9 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
modNick,self.server.domain, \
|
modNick,self.server.domain, \
|
||||||
'instance','moderator')
|
'instance','moderator')
|
||||||
|
|
||||||
|
if fields.get('removeScheduledPosts'):
|
||||||
|
if fields['removeScheduledPosts']=='on':
|
||||||
|
removeScheduledPosts(self.server.baseDir,nickname,self.server.domain)
|
||||||
approveFollowers=False
|
approveFollowers=False
|
||||||
if fields.get('approveFollowers'):
|
if fields.get('approveFollowers'):
|
||||||
if fields['approveFollowers']=='on':
|
if fields['approveFollowers']=='on':
|
||||||
|
|
19
schedule.py
19
schedule.py
|
@ -153,3 +153,22 @@ def runPostScheduleWatchdog(projectVersion: str,httpd) -> None:
|
||||||
postScheduleOriginal.clone(runPostSchedule)
|
postScheduleOriginal.clone(runPostSchedule)
|
||||||
httpd.thrPostSchedule.start()
|
httpd.thrPostSchedule.start()
|
||||||
print('Restarting scheduled posts...')
|
print('Restarting scheduled posts...')
|
||||||
|
|
||||||
|
def removeScheduledPosts(baseDir: str,nickname: str,domain: str) -> None:
|
||||||
|
"""Removes any scheduled posts
|
||||||
|
"""
|
||||||
|
# remove the index
|
||||||
|
scheduleIndexFilename=baseDir+'/accounts/'+nickname+'@'+domain+'/schedule.index'
|
||||||
|
if os.path.isfile(scheduleIndexFilename):
|
||||||
|
os.remove(scheduleIndexFilename)
|
||||||
|
# remove the scheduled posts
|
||||||
|
scheduledDir=baseDir+'/accounts/'+nickname+'@'+domain+'/scheduled'
|
||||||
|
if not os.path.isdir(scheduledDir):
|
||||||
|
return
|
||||||
|
for scheduledPostFilename in os.listdir(scheduledDir):
|
||||||
|
filePath=os.path.join(scheduledDir,scheduledPostFilename)
|
||||||
|
try:
|
||||||
|
if os.path.isfile(filePath):
|
||||||
|
os.remove(filePath)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "البريد الإلكتروني",
|
"Email": "البريد الإلكتروني",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "هذا هو المقرر المقرر."
|
"This is a scheduled post.": "هذا هو المقرر المقرر.",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "Correu electrònic",
|
"Email": "Correu electrònic",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "Aquesta és una publicació programada."
|
"This is a scheduled post.": "Aquesta és una publicació programada.",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "E-bost",
|
"Email": "E-bost",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "Mae hon yn swydd wedi'i hamserlennu."
|
"This is a scheduled post.": "Mae hon yn swydd wedi'i hamserlennu.",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "Email",
|
"Email": "Email",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "Dies ist ein geplanter Beitrag."
|
"This is a scheduled post.": "Dies ist ein geplanter Beitrag.",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "Email",
|
"Email": "Email",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "This is a scheduled post."
|
"This is a scheduled post.": "This is a scheduled post.",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "Email",
|
"Email": "Email",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "Esta es una publicación programada."
|
"This is a scheduled post.": "Esta es una publicación programada.",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "Email",
|
"Email": "Email",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "Il s'agit d'un article programmé."
|
"This is a scheduled post.": "Il s'agit d'un article programmé.",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "Ríomhphost",
|
"Email": "Ríomhphost",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "Is post sceidealta é seo."
|
"This is a scheduled post.": "Is post sceidealta é seo.",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "ईमेल",
|
"Email": "ईमेल",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "यह एक अनुसूचित पद है।"
|
"This is a scheduled post.": "यह एक अनुसूचित पद है।",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "E-mail",
|
"Email": "E-mail",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "Questo è un post programmato"
|
"This is a scheduled post.": "Questo è un post programmato",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "Eメール",
|
"Email": "Eメール",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "これはスケジュールされた投稿です。"
|
"This is a scheduled post.": "これはスケジュールされた投稿です。",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -201,5 +201,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "Email",
|
"Email": "Email",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "This is a scheduled post."
|
"This is a scheduled post.": "This is a scheduled post.",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "Email",
|
"Email": "Email",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "Esta é uma postagem agendada."
|
"This is a scheduled post.": "Esta é uma postagem agendada.",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "Эл. адрес",
|
"Email": "Эл. адрес",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "Это запланированный пост."
|
"This is a scheduled post.": "Это запланированный пост.",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Matrix": "Matrix",
|
"Matrix": "Matrix",
|
||||||
"Email": "电子邮件",
|
"Email": "电子邮件",
|
||||||
"PGP": "PGP",
|
"PGP": "PGP",
|
||||||
"This is a scheduled post.": "这是预定的帖子。"
|
"This is a scheduled post.": "这是预定的帖子。",
|
||||||
|
"Remove scheduled posts": "Remove scheduled posts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -564,6 +564,16 @@ def htmlSkillsSearch(translate: {},baseDir: str, \
|
||||||
skillSearchForm+=htmlFooter()
|
skillSearchForm+=htmlFooter()
|
||||||
return skillSearchForm
|
return skillSearchForm
|
||||||
|
|
||||||
|
def scheduledPostsExist(baseDir: str,nickname: str,domain: str) -> bool:
|
||||||
|
"""Returns true if there are posts scheduled to be delivered
|
||||||
|
"""
|
||||||
|
scheduleIndexFilename=baseDir+'/accounts/'+nickname+'@'+domain+'/schedule.index'
|
||||||
|
if not os.path.isfile(scheduleIndexFilename):
|
||||||
|
return False
|
||||||
|
if '#users#' in open(scheduleIndexFilename).read():
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def htmlEditProfile(translate: {},baseDir: str,path: str,domain: str,port: int,httpPrefix: str) -> str:
|
def htmlEditProfile(translate: {},baseDir: str,path: str,domain: str,port: int,httpPrefix: str) -> str:
|
||||||
"""Shows the edit profile screen
|
"""Shows the edit profile screen
|
||||||
"""
|
"""
|
||||||
|
@ -716,6 +726,12 @@ def htmlEditProfile(translate: {},baseDir: str,path: str,domain: str,port: int,h
|
||||||
editProfileForm+=' <input type="submit" name="submitProfile" value="'+translate['Submit']+'">'
|
editProfileForm+=' <input type="submit" name="submitProfile" value="'+translate['Submit']+'">'
|
||||||
editProfileForm+=' <a href="'+pathOriginal+'"><button class="cancelbtn">'+translate['Cancel']+'</button></a>'
|
editProfileForm+=' <a href="'+pathOriginal+'"><button class="cancelbtn">'+translate['Cancel']+'</button></a>'
|
||||||
editProfileForm+=' </div>'
|
editProfileForm+=' </div>'
|
||||||
|
|
||||||
|
if scheduledPostsExist(baseDir,nickname,domain):
|
||||||
|
editProfileForm+=' <div class="container">'
|
||||||
|
editProfileForm+=' <input type="checkbox" class="profilecheckbox" name="removeScheduledPosts">'+translate['Remove scheduled posts']+'<br>'
|
||||||
|
editProfileForm+=' </div>'
|
||||||
|
|
||||||
editProfileForm+=' <div class="container">'
|
editProfileForm+=' <div class="container">'
|
||||||
editProfileForm+=' <label class="labels">'+translate['Nickname']+'</label>'
|
editProfileForm+=' <label class="labels">'+translate['Nickname']+'</label>'
|
||||||
editProfileForm+=' <input type="text" name="displayNickname" value="'+displayNickname+'"><br>'
|
editProfileForm+=' <input type="text" name="displayNickname" value="'+displayNickname+'"><br>'
|
||||||
|
|
Loading…
Reference in New Issue