summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-10-05 07:46:45 +0100
committerV3n3RiX <venerix@koprulu.sector>2024-10-05 07:46:45 +0100
commit3686bbcd8d465fdd79782d3da8285930b679db02 (patch)
tree21dd88e992900d818e279a5e0b90946be6daa7a8 /src/backend
parent1d0d37324a8fbdd0a3587698af577fcd39a25b08 (diff)
implement a news system
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/__init__.py1
-rw-r--r--src/backend/getfs.py2
-rw-r--r--src/backend/getnews.py116
3 files changed, 119 insertions, 0 deletions
diff --git a/src/backend/__init__.py b/src/backend/__init__.py
index 0e54ce9..21dec83 100644
--- a/src/backend/__init__.py
+++ b/src/backend/__init__.py
@@ -3,6 +3,7 @@ from .dlbinpkg import *
from .getclr import *
from .getenv import *
from .getfs import *
+from .getnews import *
from .killemerge import *
from .pkgadd import *
from .pkgremove import *
diff --git a/src/backend/getfs.py b/src/backend/getfs.py
index 77e0b2d..27da9ba 100644
--- a/src/backend/getfs.py
+++ b/src/backend/getfs.py
@@ -17,6 +17,8 @@ p_cch_dir = '/var/cache/packages'
p_dst_dir = '/var/cache/distfiles'
p_mtd_dir = '/var/cache/edb'
+s_cfg_dir = '/etc/sisyphus'
+
rmt_pcsv = '/var/lib/sisyphus/csv/remotePackagesPre.csv'
rmt_dcsv = '/var/lib/sisyphus/csv/remoteDescriptionsPre.csv'
lcl_pcsv = '/var/lib/sisyphus/csv/localPackagesPre.csv'
diff --git a/src/backend/getnews.py b/src/backend/getnews.py
new file mode 100644
index 0000000..ce56df4
--- /dev/null
+++ b/src/backend/getnews.py
@@ -0,0 +1,116 @@
+#!/usr/bin/python3
+
+import os
+import sisyphus.getclr
+import sisyphus.getfs
+
+NEWS_DIR = "news"
+
+N_NEWS_FILE = os.path.join(sisyphus.getfs.p_cfg_dir,
+ os.path.join(NEWS_DIR, "n_news.txt"))
+R_NEWS_FILE = os.path.join(sisyphus.getfs.s_cfg_dir,
+ os.path.join(NEWS_DIR, "r_news.txt"))
+DELIMITER = "---"
+
+
+def ld_n_news():
+ with open(N_NEWS_FILE, "r") as file:
+ content = file.read()
+ articles = content.split(DELIMITER)
+ return [article.strip() for article in articles if article.strip()]
+
+
+def ld_r_news():
+ try:
+ with open(R_NEWS_FILE, "r") as file:
+ return [int(line.strip()) for line in file.readlines()]
+ except FileNotFoundError:
+ return []
+
+
+def save_r_news(r_news):
+ with open(R_NEWS_FILE, "w") as file:
+ for index in r_news:
+ file.write(f"{index}\n")
+
+
+def mark_read(article_nr):
+ n_news = ld_n_news()
+
+ if 1 <= article_nr <= len(n_news):
+ article_index = article_nr - 1
+ r_news_index = ld_r_news()
+
+ if article_index in r_news_index:
+ print(f"\nArticle {sisyphus.getclr.green}{article_nr}{sisyphus.getclr.reset} is already marked as {sisyphus.getclr.green}read{sisyphus.getclr.reset}.")
+ else:
+ r_news_index.append(article_index)
+ save_r_news(r_news_index)
+ print(
+ f"\nArticle {sisyphus.getclr.green}{article_nr}{sisyphus.getclr.reset} marked as {sisyphus.getclr.green}read{sisyphus.getclr.reset}.")
+ else:
+ print(
+ f"\nArticle {sisyphus.getclr.green}{article_nr}{sisyphus.getclr.reset} doesn't exist.")
+
+
+def mark_unread(article_nr):
+ n_news = ld_n_news()
+
+ if 1 <= article_nr <= len(n_news):
+ article_index = article_nr - 1
+ r_news_index = ld_r_news()
+
+ if article_index not in r_news_index:
+ print(f"\nArticle {sisyphus.getclr.green}{article_nr}{sisyphus.getclr.reset} is already marked as {sisyphus.getclr.green}unread{sisyphus.getclr.reset}.")
+ else:
+ r_news_index.remove(article_index)
+ save_r_news(r_news_index)
+ print(
+ f"\nArticle {sisyphus.getclr.green}{article_nr}{sisyphus.getclr.reset} marked as {sisyphus.getclr.green}unread{sisyphus.getclr.reset}.")
+ else:
+ print(
+ f"\nArticle {sisyphus.getclr.green}{article_nr}{sisyphus.getclr.reset} doesn't exist.")
+
+
+def list_all_news():
+ n_news = ld_n_news()
+ r_news_index = ld_r_news()
+
+ for index, news in enumerate(n_news):
+ status = "Read" if index in r_news_index else "Unread"
+ print(
+ f"\nArticle {sisyphus.getclr.green}{index + 1}{sisyphus.getclr.reset} ({status}):\n{news}")
+
+
+def check_n_news():
+ n_news = ld_n_news()
+ r_news_index = ld_r_news()
+
+ unread_count = len(n_news) - len(r_news_index)
+
+ if unread_count > 0:
+ print(
+ f"\nThere are {sisyphus.getclr.bright_red}{unread_count}{sisyphus.getclr.reset} unread news article(s).")
+ else:
+ print(
+ f"\nThere are {sisyphus.getclr.green}{unread_count}{sisyphus.getclr.reset} unread news article(s).")
+
+
+def start(check=False, list=False, read=False, unread=False, article_nr=None):
+ if check:
+ check_n_news()
+
+ if list:
+ list_all_news()
+
+ if read:
+ if article_nr is not None:
+ mark_read(article_nr)
+ else:
+ print("\nError: No article number provided to mark as read.")
+
+ if unread:
+ if article_nr is not None:
+ mark_unread(article_nr)
+ else:
+ print("\nError: No article number provided to mark as unread.")