1
0
Fork 0
forked from Fuji/Fuji
Fuji/src/utils.py

105 lines
No EOL
3.1 KiB
Python

import keyring
import os
from pathlib import Path
from datetime import datetime, timedelta
import configparser
import subprocess
import sys
import flet as ft
def saveauth(service, username, data, chunk_size=1000):
chunks = [data[i:i+chunk_size] for i in range(0, len(data), chunk_size)]
keyring.set_password(service, f"{username}_count", str(len(chunks)))
for i, chunk in enumerate(chunks):
keyring.set_password(service, f"{username}_{i}", chunk)
def loadauth(service, username):
try:
count = int(keyring.get_password(service, f"{username}_count"))
return "".join(keyring.get_password(service, f"{username}_{i}") or "" for i in range(count))
except (TypeError, ValueError):
return None
def getconfigpath():
platform = os.name
home = Path.home()
match platform:
case 'posix':
return f"{home}/.config/Fuji"
case 'Darwin':
return f"{home}/.FujiConfig"
case 'nt':
return f"{home}/AppData/Local/Fuji"
def getthemecolor():
config = configparser.ConfigParser()
config.read(f"{getconfigpath()}/config.ini")
color = config['Settings']['themecolor']
return color
def setthemecolor(color):
config = configparser.ConfigParser()
config.read(f"{getconfigpath()}/config.ini")
config["Settings"]["themecolor"] = color
with open(f"{getconfigpath()}/config.ini", "w") as file:
config.write(file)
def setlanguage(lang):
config = configparser.ConfigParser()
config.read(f"{getconfigpath()}/config.ini")
match lang.data:
case "Polski":
config["Settings"]["language"] = "pl"
case "English":
config["Settings"]["language"] = "en"
with open(f"{getconfigpath()}/config.ini", "w") as file:
config.write(file)
def getcurrentsemester():
config = configparser.ConfigParser()
config.read(f"{getconfigpath()}/config.ini")
try:
semester = int(config['User']['semester'])
except ValueError:
semester = 1
return semester
def setcurrentsemester(semester):
config = configparser.ConfigParser()
config.read(f"{getconfigpath()}/config.ini")
try:
config["User"]["semester"] = str(semester.number)
except ValueError:
config["User"]["semester"] = "1"
with open(f"{getconfigpath()}/config.ini", "w") as file:
config.write(file)
def restart(page: ft.Page):
try:
python = sys.executable
subprocess.Popen([python] + sys.argv)
page.window.destroy()
except FileNotFoundError:
exit()
def get_current_month_dates():
today = datetime.today()
start_date = today.replace(day=1)
# To get the last day, move to the next month, then subtract one day
if today.month == 12:
next_month = today.replace(year=today.year + 1, month=1, day=1)
else:
next_month = today.replace(month=today.month + 1, day=1)
end_date = next_month - timedelta(days=1)
return start_date.strftime("%Y-%m-%d"), end_date.strftime("%Y-%m-%d")