Automatic content warnings

merge-requests/8/head
Bob Mottram 2020-09-13 19:56:41 +01:00
parent 3d15ae40ad
commit 74a6f286fc
18 changed files with 95 additions and 15 deletions

View File

@ -3363,6 +3363,18 @@ class PubServer(BaseHTTPRequestHandler):
if os.path.isfile(autoTagsFilename): if os.path.isfile(autoTagsFilename):
os.remove(autoTagsFilename) os.remove(autoTagsFilename)
# autogenerated content warnings
autoCWFilename = \
baseDir + '/accounts/' + \
nickname + '@' + domain + \
'/autocw.txt'
if fields.get('autoCW'):
with open(autoCWFilename, 'w+') as autoCWFile:
autoCWFile.write(fields['autoCW'])
else:
if os.path.isfile(autoCWFilename):
os.remove(autoCWFilename)
# save blocked accounts list # save blocked accounts list
blockedFilename = \ blockedFilename = \
baseDir + '/accounts/' + \ baseDir + '/accounts/' + \

View File

@ -668,6 +668,41 @@ def validContentWarning(cw: str) -> str:
return cw return cw
def loadAutoCW(baseDir: str, nickname: str, domain: str) -> []:
"""Loads automatic CWs file and returns a list containing
the lines of the file
"""
filename = baseDir + '/accounts/' + \
nickname + '@' + domain + '/autocw.txt'
if not os.path.isfile(filename):
return []
with open(filename, "r") as f:
return f.readlines()
return []
def addAutoCW(baseDir: str, nickname: str, domain: str,
subject: str, content: str) -> str:
"""Appends any automatic CW to the subject line
and returns the new subject line
"""
newSubject = subject
autoCWList = loadAutoCW(baseDir, nickname, domain)
for cwRule in autoCWList:
if '->' not in cwRule:
continue
match = cwRule.split('->')[0].strip()
if match not in content:
continue
cwStr = cwRule.split('->')[1].strip()
if newSubject:
if cwStr not in newSubject:
newSubject += ', ' + cwStr
else:
newSubject = cwStr
return newSubject
def createPostBase(baseDir: str, nickname: str, domain: str, port: int, def createPostBase(baseDir: str, nickname: str, domain: str, port: int,
toUrl: str, ccUrl: str, httpPrefix: str, content: str, toUrl: str, ccUrl: str, httpPrefix: str, content: str,
followersOnly: bool, saveToFile: bool, clientToServer: bool, followersOnly: bool, saveToFile: bool, clientToServer: bool,
@ -687,6 +722,8 @@ def createPostBase(baseDir: str, nickname: str, domain: str, port: int,
eventStatus=None, ticketUrl=None) -> {}: eventStatus=None, ticketUrl=None) -> {}:
"""Creates a message """Creates a message
""" """
subject = addAutoCW(baseDir, nickname, domain, subject, content)
mentionedRecipients = \ mentionedRecipients = \
getMentionedPeople(baseDir, httpPrefix, content, domain, False) getMentionedPeople(baseDir, httpPrefix, content, domain, False)

View File

@ -284,5 +284,6 @@
"Edit event": "تحرير الحدث", "Edit event": "تحرير الحدث",
"Notify when posts are liked": "يخطر عندما يتم اعجاب المشاركات", "Notify when posts are liked": "يخطر عندما يتم اعجاب المشاركات",
"Don't show the Like button": "لا تظهر زر أعجبني", "Don't show the Like button": "لا تظهر زر أعجبني",
"Autogenerated Hashtags": "علامات التجزئة المُنشأة تلقائيًا" "Autogenerated Hashtags": "علامات التجزئة المُنشأة تلقائيًا",
"Autogenerated Content Warnings": "تحذيرات المحتوى المُنشأ تلقائيًا"
} }

View File

@ -284,5 +284,6 @@
"Edit event": "Edita lesdeveniment", "Edit event": "Edita lesdeveniment",
"Notify when posts are liked": "Notifiqueu-ho quan us agradin les publicacions", "Notify when posts are liked": "Notifiqueu-ho quan us agradin les publicacions",
"Don't show the Like button": "No mostreu el botó M'agrada", "Don't show the Like button": "No mostreu el botó M'agrada",
"Autogenerated Hashtags": "Hashtags autogenerats" "Autogenerated Hashtags": "Hashtags autogenerats",
"Autogenerated Content Warnings": "Advertiments de contingut autogenerats"
} }

View File

@ -284,5 +284,6 @@
"Edit event": "Golygu digwyddiad", "Edit event": "Golygu digwyddiad",
"Notify when posts are liked": "Hysbysu pryd mae swyddi'n cael eu hoffi", "Notify when posts are liked": "Hysbysu pryd mae swyddi'n cael eu hoffi",
"Don't show the Like button": "Peidiwch â dangos y botwm Hoffi", "Don't show the Like button": "Peidiwch â dangos y botwm Hoffi",
"Autogenerated Hashtags": "Hashtags awtogeneiddiedig" "Autogenerated Hashtags": "Hashtags awtogeneiddiedig",
"Autogenerated Content Warnings": "Rhybuddion Cynnwys Autogenerated"
} }

View File

@ -284,5 +284,6 @@
"Edit event": "Ereignis bearbeiten", "Edit event": "Ereignis bearbeiten",
"Notify when posts are liked": "Benachrichtigen, wenn Beiträge gefallen", "Notify when posts are liked": "Benachrichtigen, wenn Beiträge gefallen",
"Don't show the Like button": "Zeigen Sie nicht die Schaltfläche \"Gefällt mir\" an", "Don't show the Like button": "Zeigen Sie nicht die Schaltfläche \"Gefällt mir\" an",
"Autogenerated Hashtags": "Automatisch generierte Hashtags" "Autogenerated Hashtags": "Automatisch generierte Hashtags",
"Autogenerated Content Warnings": "Warnungen vor automatisch generierten Inhalten"
} }

View File

@ -284,5 +284,6 @@
"Edit event": "Edit event", "Edit event": "Edit event",
"Notify when posts are liked": "Notify when posts are liked", "Notify when posts are liked": "Notify when posts are liked",
"Don't show the Like button": "Don't show the Like button", "Don't show the Like button": "Don't show the Like button",
"Autogenerated Hashtags": "Autogenerated Hashtags" "Autogenerated Hashtags": "Autogenerated Hashtags",
"Autogenerated Content Warnings": "Autogenerated Content Warnings"
} }

View File

@ -284,5 +284,6 @@
"Edit event": "Editar evento", "Edit event": "Editar evento",
"Notify when posts are liked": "Notificar cuando les gusten las publicaciones", "Notify when posts are liked": "Notificar cuando les gusten las publicaciones",
"Don't show the Like button": "No mostrar el botón Me gusta", "Don't show the Like button": "No mostrar el botón Me gusta",
"Autogenerated Hashtags": "Hashtags autogenerados" "Autogenerated Hashtags": "Hashtags autogenerados",
"Autogenerated Content Warnings": "Advertencias de contenido generado automáticamente"
} }

View File

@ -284,5 +284,6 @@
"Edit event": "Modifier l'événement", "Edit event": "Modifier l'événement",
"Notify when posts are liked": "Notifier lorsque les messages sont aimés", "Notify when posts are liked": "Notifier lorsque les messages sont aimés",
"Don't show the Like button": "Ne pas afficher le bouton J'aime", "Don't show the Like button": "Ne pas afficher le bouton J'aime",
"Autogenerated Hashtags": "Hashtags générés automatiquement" "Autogenerated Hashtags": "Hashtags générés automatiquement",
"Autogenerated Content Warnings": "Avertissements de contenu générés automatiquement"
} }

View File

@ -284,5 +284,6 @@
"Edit event": "Cuir imeacht in eagar", "Edit event": "Cuir imeacht in eagar",
"Notify when posts are liked": "Cuir in iúl cathain is maith poist", "Notify when posts are liked": "Cuir in iúl cathain is maith poist",
"Don't show the Like button": "Ná taispeáin an cnaipe Cosúil", "Don't show the Like button": "Ná taispeáin an cnaipe Cosúil",
"Autogenerated Hashtags": "Hashtags uathghinte" "Autogenerated Hashtags": "Hashtags uathghinte",
"Autogenerated Content Warnings": "Rabhaidh Ábhar Uathghinte"
} }

View File

@ -284,5 +284,6 @@
"Edit event": "घटना संपादित करें", "Edit event": "घटना संपादित करें",
"Notify when posts are liked": "पोस्ट पसंद आने पर सूचित करें", "Notify when posts are liked": "पोस्ट पसंद आने पर सूचित करें",
"Don't show the Like button": "लाइक बटन न दिखाएं", "Don't show the Like button": "लाइक बटन न दिखाएं",
"Autogenerated Hashtags": "ऑटोजेनरेटेड हैशटैग" "Autogenerated Hashtags": "ऑटोजेनरेटेड हैशटैग",
"Autogenerated Content Warnings": "स्वतः प्राप्त सामग्री चेतावनी"
} }

View File

@ -284,5 +284,6 @@
"Edit event": "Modifica evento", "Edit event": "Modifica evento",
"Notify when posts are liked": "Avvisa quando i post sono piaciuti", "Notify when posts are liked": "Avvisa quando i post sono piaciuti",
"Don't show the Like button": "Non mostrare il pulsante Mi piace", "Don't show the Like button": "Non mostrare il pulsante Mi piace",
"Autogenerated Hashtags": "Hashtag generati automaticamente" "Autogenerated Hashtags": "Hashtag generati automaticamente",
"Autogenerated Content Warnings": "Avvisi sui contenuti generati automaticamente"
} }

View File

@ -284,5 +284,6 @@
"Edit event": "イベントを編集", "Edit event": "イベントを編集",
"Notify when posts are liked": "投稿が高く評価されたときに通知する", "Notify when posts are liked": "投稿が高く評価されたときに通知する",
"Don't show the Like button": "「いいね!」ボタンを表示しない", "Don't show the Like button": "「いいね!」ボタンを表示しない",
"Autogenerated Hashtags": "自動生成されたハッシュタグ" "Autogenerated Hashtags": "自動生成されたハッシュタグ",
"Autogenerated Content Warnings": "自動生成されたコンテンツの警告"
} }

View File

@ -280,5 +280,6 @@
"Edit event": "Edit event", "Edit event": "Edit event",
"Notify when posts are liked": "Notify when posts are liked", "Notify when posts are liked": "Notify when posts are liked",
"Don't show the Like button": "Don't show the Like button", "Don't show the Like button": "Don't show the Like button",
"Autogenerated Hashtags": "Autogenerated Hashtags" "Autogenerated Hashtags": "Autogenerated Hashtags",
"Autogenerated Content Warnings": "Autogenerated Content Warnings"
} }

View File

@ -284,5 +284,6 @@
"Edit event": "Editar evento", "Edit event": "Editar evento",
"Notify when posts are liked": "Notificar quando as postagens forem curtidas", "Notify when posts are liked": "Notificar quando as postagens forem curtidas",
"Don't show the Like button": "Não mostrar o botão Curtir", "Don't show the Like button": "Não mostrar o botão Curtir",
"Autogenerated Hashtags": "Hashtags autogeradas" "Autogenerated Hashtags": "Hashtags autogeradas",
"Autogenerated Content Warnings": "Avisos de conteúdo gerado automaticamente"
} }

View File

@ -284,5 +284,6 @@
"Edit event": "Изменить мероприятие", "Edit event": "Изменить мероприятие",
"Notify when posts are liked": "Уведомлять, когда публикации нравятся", "Notify when posts are liked": "Уведомлять, когда публикации нравятся",
"Don't show the Like button": "Не показывать кнопку \"Нравится\"", "Don't show the Like button": "Не показывать кнопку \"Нравится\"",
"Autogenerated Hashtags": "Автоматически сгенерированные хештеги" "Autogenerated Hashtags": "Автоматически сгенерированные хештеги",
"Autogenerated Content Warnings": "Автоматические предупреждения о содержании"
} }

View File

@ -284,5 +284,6 @@
"Edit event": "编辑活动", "Edit event": "编辑活动",
"Notify when posts are liked": "通知喜欢的帖子", "Notify when posts are liked": "通知喜欢的帖子",
"Don't show the Like button": "不显示“赞”按钮", "Don't show the Like button": "不显示“赞”按钮",
"Autogenerated Hashtags": "自动生成的标签" "Autogenerated Hashtags": "自动生成的标签",
"Autogenerated Content Warnings": "自动生成的内容警告"
} }

View File

@ -1175,6 +1175,14 @@ def htmlEditProfile(translate: {}, baseDir: str, path: str,
with open(autoTagsFilename, 'r') as autoTagsFile: with open(autoTagsFilename, 'r') as autoTagsFile:
autoTags = autoTagsFile.read() autoTags = autoTagsFile.read()
autoCW = ''
autoCWFilename = \
baseDir + '/accounts/' + \
nickname + '@' + domain + '/autocw.txt'
if os.path.isfile(autoCWFilename):
with open(autoCWFilename, 'r') as autoCWFile:
autoCW = autoCWFile.read()
blockedStr = '' blockedStr = ''
blockedFilename = \ blockedFilename = \
baseDir + '/accounts/' + \ baseDir + '/accounts/' + \
@ -1523,6 +1531,14 @@ def htmlEditProfile(translate: {}, baseDir: str, path: str,
' <textarea id="message" name="autoTags" ' + \ ' <textarea id="message" name="autoTags" ' + \
'style="height:200px">' + autoTags + '</textarea>\n' 'style="height:200px">' + autoTags + '</textarea>\n'
editProfileForm += \
' <br><b><label class="labels">' + \
translate['Autogenerated Content Warnings'] + '</label></b>\n'
editProfileForm += ' <br><label class="labels">A -> B</label>\n'
editProfileForm += \
' <textarea id="message" name="autoCW" ' + \
'style="height:200px">' + autoCW + '</textarea>\n'
editProfileForm += \ editProfileForm += \
' <br><b><label class="labels">' + \ ' <br><b><label class="labels">' + \
translate['Blocked accounts'] + '</label></b>\n' translate['Blocked accounts'] + '</label></b>\n'