diff --git a/daemon.py b/daemon.py index f689c4bc1..b9b710bef 100644 --- a/daemon.py +++ b/daemon.py @@ -269,6 +269,7 @@ from languages import get_understood_languages from like import update_likes_collection from reaction import update_reaction_collection from utils import load_reverse_timeline +from utils import save_reverse_timeline from utils import load_min_images_for_accounts from utils import set_minimize_all_images from utils import get_json_content_from_accept @@ -7189,6 +7190,21 @@ class PubServer(BaseHTTPRequestHandler): 'unable to delete ' + bold_reading_filename) + # reverse timelines checkbox + reverse = False + if fields.get('reverseTimelines'): + if fields['reverseTimelines'] == 'on': + reverse = True + if nickname not in self.server.reverse_sequence: + self.server.reverse_sequence.append(nickname) + save_reverse_timeline(base_dir, + self.server.reverse_sequence) + if not reverse: + if nickname in self.server.reverse_sequence: + self.server.reverse_sequence.remove(nickname) + save_reverse_timeline(base_dir, + self.server.reverse_sequence) + # notify about new Likes if on_final_welcome_screen: # default setting from welcome screen @@ -15530,7 +15546,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.lists_enabled, self.server.system_language, self.server.min_images_for_accounts, - self.server.max_recent_posts) + self.server.max_recent_posts, + self.server.reverse_sequence) if msg: msg = msg.encode('utf-8') msglen = len(msg) diff --git a/translations/ar.json b/translations/ar.json index 0d0bff38d..fa4713dbf 100644 --- a/translations/ar.json +++ b/translations/ar.json @@ -601,5 +601,6 @@ "Send": "إرسال", "Minimize all images": "تصغير كل الصور", "Edit post": "تعديل المنشور", - "Preview posts on profile screen": "معاينة المشاركات على شاشة الملف الشخصي" + "Preview posts on profile screen": "معاينة المشاركات على شاشة الملف الشخصي", + "Reverse timelines": "عكس الجداول الزمنية" } diff --git a/translations/bn.json b/translations/bn.json index 609bbf823..7d29655b1 100644 --- a/translations/bn.json +++ b/translations/bn.json @@ -601,5 +601,6 @@ "Send": "পাঠান", "Minimize all images": "সমস্ত ছবি ছোট করুন", "Edit post": "পোস্ট সম্পাদনা করুন", - "Preview posts on profile screen": "প্রোফাইল স্ক্রিনে পোস্টের পূর্বরূপ দেখুন" + "Preview posts on profile screen": "প্রোফাইল স্ক্রিনে পোস্টের পূর্বরূপ দেখুন", + "Reverse timelines": "বিপরীত সময়রেখা" } diff --git a/translations/ca.json b/translations/ca.json index 51d4620b2..d67b78592 100644 --- a/translations/ca.json +++ b/translations/ca.json @@ -601,5 +601,6 @@ "Send": "Enviar", "Minimize all images": "Minimitzar totes les imatges", "Edit post": "Edita la publicació", - "Preview posts on profile screen": "Previsualitza les publicacions a la pantalla del perfil" + "Preview posts on profile screen": "Previsualitza les publicacions a la pantalla del perfil", + "Reverse timelines": "Cronologia inversa" } diff --git a/translations/cy.json b/translations/cy.json index 42cf7e740..c12103107 100644 --- a/translations/cy.json +++ b/translations/cy.json @@ -601,5 +601,6 @@ "Send": "Anfon", "Minimize all images": "Lleihau pob delwedd", "Edit post": "Golygu post", - "Preview posts on profile screen": "Rhagolwg postiadau ar sgrin proffil" + "Preview posts on profile screen": "Rhagolwg postiadau ar sgrin proffil", + "Reverse timelines": "Gwrthdroi llinellau amser" } diff --git a/translations/de.json b/translations/de.json index e08e893ac..72c4c5bf3 100644 --- a/translations/de.json +++ b/translations/de.json @@ -601,5 +601,6 @@ "Send": "Senden", "Minimize all images": "Alle Bilder minimieren", "Edit post": "Beitrag bearbeiten", - "Preview posts on profile screen": "Vorschau von Beiträgen auf dem Profilbildschirm" + "Preview posts on profile screen": "Vorschau von Beiträgen auf dem Profilbildschirm", + "Reverse timelines": "Umgekehrte Zeitlinien" } diff --git a/translations/el.json b/translations/el.json index 081bd5784..cf04ff8d0 100644 --- a/translations/el.json +++ b/translations/el.json @@ -601,5 +601,6 @@ "Send": "Στείλετε", "Minimize all images": "Ελαχιστοποίηση όλων των εικόνων", "Edit post": "Επεξεργασία ανάρτησης", - "Preview posts on profile screen": "Προεπισκόπηση αναρτήσεων στην οθόνη προφίλ" + "Preview posts on profile screen": "Προεπισκόπηση αναρτήσεων στην οθόνη προφίλ", + "Reverse timelines": "Αντίστροφα χρονοδιαγράμματα" } diff --git a/translations/en.json b/translations/en.json index 5161d3eeb..9799205e6 100644 --- a/translations/en.json +++ b/translations/en.json @@ -601,5 +601,6 @@ "Send": "Send", "Minimize all images": "Minimize all images", "Edit post": "Edit post", - "Preview posts on profile screen": "Preview posts on profile screen" + "Preview posts on profile screen": "Preview posts on profile screen", + "Reverse timelines": "Reverse timelines" } diff --git a/translations/es.json b/translations/es.json index 1031e2d86..5e8192763 100644 --- a/translations/es.json +++ b/translations/es.json @@ -601,5 +601,6 @@ "Send": "Enviar", "Minimize all images": "Minimizar todas las imágenes", "Edit post": "Editar post", - "Preview posts on profile screen": "Vista previa de publicaciones en la pantalla de perfil" + "Preview posts on profile screen": "Vista previa de publicaciones en la pantalla de perfil", + "Reverse timelines": "Líneas de tiempo inversas" } diff --git a/translations/fa.json b/translations/fa.json index de35e6f84..e7163e242 100644 --- a/translations/fa.json +++ b/translations/fa.json @@ -601,5 +601,6 @@ "Send": "ارسال", "Minimize all images": "تمام تصاویر را به حداقل برسانید", "Edit post": "ویرایش پست", - "Preview posts on profile screen": "پیش نمایش پست ها در صفحه نمایه" + "Preview posts on profile screen": "پیش نمایش پست ها در صفحه نمایه", + "Reverse timelines": "جدول های زمانی معکوس" } diff --git a/translations/fr.json b/translations/fr.json index 4777480d5..fb339e044 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -601,5 +601,6 @@ "Send": "Envoyer", "Minimize all images": "Réduire toutes les images", "Edit post": "Modifier le message", - "Preview posts on profile screen": "Prévisualiser les messages sur l'écran de profil" + "Preview posts on profile screen": "Prévisualiser les messages sur l'écran de profil", + "Reverse timelines": "Chronologies inversées" } diff --git a/translations/ga.json b/translations/ga.json index 86caa7e1a..a79625165 100644 --- a/translations/ga.json +++ b/translations/ga.json @@ -601,5 +601,6 @@ "Send": "Seol", "Minimize all images": "Íoslaghdaigh gach íomhá", "Edit post": "Cuir postáil in eagar", - "Preview posts on profile screen": "Réamhamhairc postálacha ar an scáileán próifíle" + "Preview posts on profile screen": "Réamhamhairc postálacha ar an scáileán próifíle", + "Reverse timelines": "Amlínte droim ar ais" } diff --git a/translations/hi.json b/translations/hi.json index 603a02da1..deb79d897 100644 --- a/translations/hi.json +++ b/translations/hi.json @@ -601,5 +601,6 @@ "Send": "भेजना", "Minimize all images": "सभी छवियों को छोटा करें", "Edit post": "संपादित पोस्ट", - "Preview posts on profile screen": "प्रोफ़ाइल स्क्रीन पर पोस्ट का पूर्वावलोकन करें" + "Preview posts on profile screen": "प्रोफ़ाइल स्क्रीन पर पोस्ट का पूर्वावलोकन करें", + "Reverse timelines": "रिवर्स टाइमलाइन" } diff --git a/translations/it.json b/translations/it.json index 0d1cc770c..c4ec40463 100644 --- a/translations/it.json +++ b/translations/it.json @@ -601,5 +601,6 @@ "Send": "Inviare", "Minimize all images": "Riduci a icona tutte le immagini", "Edit post": "Modifica post", - "Preview posts on profile screen": "Visualizza l'anteprima dei post nella schermata del profilo" + "Preview posts on profile screen": "Visualizza l'anteprima dei post nella schermata del profilo", + "Reverse timelines": "Invertire le tempistiche" } diff --git a/translations/ja.json b/translations/ja.json index 296f5d207..68b15e773 100644 --- a/translations/ja.json +++ b/translations/ja.json @@ -601,5 +601,6 @@ "Send": "送信", "Minimize all images": "すべての画像を最小化", "Edit post": "投稿を編集", - "Preview posts on profile screen": "プロフィール画面で投稿をプレビュー" + "Preview posts on profile screen": "プロフィール画面で投稿をプレビュー", + "Reverse timelines": "逆タイムライン" } diff --git a/translations/ko.json b/translations/ko.json index 315018b2e..09722272a 100644 --- a/translations/ko.json +++ b/translations/ko.json @@ -601,5 +601,6 @@ "Send": "보내기", "Minimize all images": "모든 이미지 최소화", "Edit post": "게시물 수정", - "Preview posts on profile screen": "프로필 화면에서 게시물 미리보기" + "Preview posts on profile screen": "프로필 화면에서 게시물 미리보기", + "Reverse timelines": "역방향 타임라인" } diff --git a/translations/ku.json b/translations/ku.json index 1c084849d..8e7b5ee3b 100644 --- a/translations/ku.json +++ b/translations/ku.json @@ -601,5 +601,6 @@ "Send": "Şandin", "Minimize all images": "Hemî wêneyan kêm bikin", "Edit post": "Biguherîne post", - "Preview posts on profile screen": "Mesajên li ser ekrana profîlê pêşdîtin" + "Preview posts on profile screen": "Mesajên li ser ekrana profîlê pêşdîtin", + "Reverse timelines": "Reverse timelines" } diff --git a/translations/nl.json b/translations/nl.json index 209ca3db5..933f1ecf3 100644 --- a/translations/nl.json +++ b/translations/nl.json @@ -601,5 +601,6 @@ "Send": "Versturen", "Minimize all images": "Alle afbeeldingen minimaliseren", "Edit post": "Bericht bewerken", - "Preview posts on profile screen": "Bekijk berichten op het profielscherm" + "Preview posts on profile screen": "Bekijk berichten op het profielscherm", + "Reverse timelines": "Omgekeerde tijdlijnen" } diff --git a/translations/oc.json b/translations/oc.json index 1c1df0cee..3fb7854f8 100644 --- a/translations/oc.json +++ b/translations/oc.json @@ -597,5 +597,6 @@ "Send": "Send", "Minimize all images": "Minimize all images", "Edit post": "Edit post", - "Preview posts on profile screen": "Preview posts on profile screen" + "Preview posts on profile screen": "Preview posts on profile screen", + "Reverse timelines": "Reverse timelines" } diff --git a/translations/pl.json b/translations/pl.json index 003e756dc..8d2b72a20 100644 --- a/translations/pl.json +++ b/translations/pl.json @@ -601,5 +601,6 @@ "Send": "Wysłać", "Minimize all images": "Zminimalizuj wszystkie obrazy", "Edit post": "Edytuj post", - "Preview posts on profile screen": "Podgląd postów na ekranie profilu" + "Preview posts on profile screen": "Podgląd postów na ekranie profilu", + "Reverse timelines": "Odwróć ramy czasowe" } diff --git a/translations/pt.json b/translations/pt.json index 475036cef..23c0b6dbd 100644 --- a/translations/pt.json +++ b/translations/pt.json @@ -601,5 +601,6 @@ "Send": "Mandar", "Minimize all images": "Minimize todas as imagens", "Edit post": "Editar post", - "Preview posts on profile screen": "Visualizar postagens na tela do perfil" + "Preview posts on profile screen": "Visualizar postagens na tela do perfil", + "Reverse timelines": "Cronogramas reversos" } diff --git a/translations/ru.json b/translations/ru.json index bc1a2acd6..474607369 100644 --- a/translations/ru.json +++ b/translations/ru.json @@ -601,5 +601,6 @@ "Send": "Отправлять", "Minimize all images": "Свернуть все изображения", "Edit post": "Редактировать сообщение", - "Preview posts on profile screen": "Предварительный просмотр сообщений на экране профиля" + "Preview posts on profile screen": "Предварительный просмотр сообщений на экране профиля", + "Reverse timelines": "Обратные сроки" } diff --git a/translations/sw.json b/translations/sw.json index 48fd89928..6c2f0da49 100644 --- a/translations/sw.json +++ b/translations/sw.json @@ -601,5 +601,6 @@ "Send": "Tuma", "Minimize all images": "Punguza picha zote", "Edit post": "Badilisha chapisho", - "Preview posts on profile screen": "Hakiki machapisho kwenye skrini ya wasifu" + "Preview posts on profile screen": "Hakiki machapisho kwenye skrini ya wasifu", + "Reverse timelines": "Обратные сроки" } diff --git a/translations/tr.json b/translations/tr.json index 71d361767..0730e7864 100644 --- a/translations/tr.json +++ b/translations/tr.json @@ -601,5 +601,6 @@ "Send": "Göndermek", "Minimize all images": "Tüm görüntüleri simge durumuna küçült", "Edit post": "Gönderiyi düzenle", - "Preview posts on profile screen": "Gönderileri profil ekranında önizleyin" + "Preview posts on profile screen": "Gönderileri profil ekranında önizleyin", + "Reverse timelines": "Обратные сроки" } diff --git a/translations/uk.json b/translations/uk.json index a0ad0a3f1..2373f681c 100644 --- a/translations/uk.json +++ b/translations/uk.json @@ -601,5 +601,6 @@ "Send": "Надіслати", "Minimize all images": "Згорнути всі зображення", "Edit post": "Редагувати пост", - "Preview posts on profile screen": "Попередній перегляд дописів на екрані профілю" + "Preview posts on profile screen": "Попередній перегляд дописів на екрані профілю", + "Reverse timelines": "Обратные сроки" } diff --git a/translations/yi.json b/translations/yi.json index c82a98b21..57c12a08e 100644 --- a/translations/yi.json +++ b/translations/yi.json @@ -601,5 +601,6 @@ "Send": "שיקן", "Minimize all images": "מינאַמייז אַלע בילדער", "Edit post": "רעדאַגירן פּאָסטן", - "Preview posts on profile screen": "פאָרויסיקע ווייַזונג אַרטיקלען אויף פּראָפיל פאַרשטעלן" + "Preview posts on profile screen": "פאָרויסיקע ווייַזונג אַרטיקלען אויף פּראָפיל פאַרשטעלן", + "Reverse timelines": "פאַרקערט טיימליינז" } diff --git a/translations/zh.json b/translations/zh.json index 1a5004dd9..92619799b 100644 --- a/translations/zh.json +++ b/translations/zh.json @@ -601,5 +601,6 @@ "Send": "发送", "Minimize all images": "最小化所有图像", "Edit post": "编辑帖子", - "Preview posts on profile screen": "在个人资料屏幕上预览帖子" + "Preview posts on profile screen": "在个人资料屏幕上预览帖子", + "Reverse timelines": "倒转时间线" } diff --git a/utils.py b/utils.py index b69cff578..34ca8912e 100644 --- a/utils.py +++ b/utils.py @@ -4040,3 +4040,33 @@ def load_reverse_timeline(base_dir: str) -> []: reverse_sequence.append(nickname) break return reverse_sequence + + +def save_reverse_timeline(base_dir: str, reverse_sequence: []) -> []: + """Saves flags for each user indicating whether they prefer to + see reversed timelines + """ + for _, dirs, _ in os.walk(base_dir + '/accounts'): + for acct in dirs: + if not is_account_dir(acct): + continue + nickname = acct.split('@')[0] + domain = acct.split('@')[1] + reverse_filename = \ + acct_dir(base_dir, nickname, domain) + '/.reverse_timeline' + if nickname in reverse_sequence: + if not os.path.isfile(reverse_filename): + try: + with open(reverse_filename, 'w+', + encoding='utf-8') as fp_reverse: + fp_reverse.write('\n') + except OSError: + print('EX: failed to save reverse ' + reverse_filename) + else: + if os.path.isfile(reverse_filename): + try: + os.remove(reverse_filename) + except OSError: + print('EX: failed to delete reverse ' + + reverse_filename) + break diff --git a/webapp_profile.py b/webapp_profile.py index 6afcb15d2..188e93b5f 100644 --- a/webapp_profile.py +++ b/webapp_profile.py @@ -2157,7 +2157,8 @@ def _html_edit_profile_options(is_admin: bool, hide_reaction_button: str, translate: {}, bold_reading: bool, nickname: str, - min_images_for_accounts: []) -> str: + min_images_for_accounts: [], + reverse_sequence: []) -> str: """option checkboxes section of edit profile screen """ edit_profile_form = '