for-improve-vern/fiexport.py

240 lines
11 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#fiexport - An easy way to export financial reports
#Copyright (C) 2024 19atlas
#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#(at your option) any later version.
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with this program. If not, see <https://www.gnu.org/licenses/>.
from datetime import date
import os
# get date
today = date.today()
dt_string = today.strftime("%Y-%m")
print("Some questions for that file\npls month should be like 01 or 12\n")
print("What is date for file? (Y-m format) [", dt_string,"] ")
dt_string = str(input())
if (dt_string == ""):
dt_string = today.strftime("%Y-%m")
month_int = dt_string.split("-",1)[1].replace(" ", "")
if (month_int == ""):
print("error month")
exit()
year_int = dt_string.split("-",1)[0].replace(" ", "")
if (year_int == ""):
print("error year")
exit()
print("set for file => date is",dt_string, "year is", year_int, "month is", month_int)
# for writing get number of month change to text
# for example 1 -> January
month_name_eng = {
"01": "January",
"02": "February",
"03": "March",
"04": "April",
"05": "May",
"06": "June",
"07": "July",
"08": "August",
"09": "September",
"10": "October",
"11": "November",
"12": "December"
}
short_month_name = {
"01": "jan",
"02": "feb",
"03": "mar",
"04": "apr",
"05": "may",
"06": "jun",
"07": "jul",
"08": "aug",
"09": "sep",
"10": "oct",
"11": "nov",
"12": "dec"
}
month_name_tur = {
"01": "Ocak",
"02": "Şubat",
"03": "Mart",
"04": "Nisan",
"05": "Mayıs",
"06": "Haziran",
"07": "Temmuz",
"08": "Ağustos",
"09": "Eylül",
"10": "Ekim",
"11": "Kasım",
"12": "Aralık"
}
month_name_por_BR = {
"01": "Janeiro",
"02": "Fevereiro",
"03": "Março",
"04": "Abril",
"05": "Maio",
"06": "Junho",
"07": "Julho",
"08": "Agosto",
"09": "Setembro",
"10": "Outubro",
"11": "Novembro",
"12": "Dezembro"
}
# writing dates
writing_date_eng = month_name_eng[month_int] + " " + year_int
writing_date_tur = month_name_tur[month_int] + " " + year_int
writing_date_por_BR = month_name_por_BR[month_int] + " " + year_int
# for html id
html_id_n = short_month_name[month_int] + year_int[-2::] + "finreport"
# make dir that eng/ tur/ por_BR/
langfolder_names = ["tur", "eng", "por_BR"]
for folder in langfolder_names:
os.makedirs(folder, exist_ok=True)
print("Dirs was created\nnow please answer financial questions (maybe boring) (dont use currency only number) ")
LibP_total_str = str(input("LiberaPay total [0] = "))
XMR_total_str = str(input("Monero (XMR) total [0] = "))
servers_usage_str = str(input("all servers usage (don't forget that is text) = "))
totally_used_s = str(input("all money used [0] = "))
what_we_have = str(input("what we have? [0] = "))
XMR_wehave = str(input("XMR conversion rate? [0] = "))
XMR_conv_date = str(input("XMR cheking date? (Dth MMM YYYY) = "))
extramoneyis_dividedto_team = str(input("Was extra money shared among team? [The extra money has not been yet divided among the team] = "))
# if is that NULL
if (LibP_total_str == ""):
LibP_total_str = "0"
if (XMR_total_str == ""):
XMR_total_str = "0"
if (servers_usage_str == ""):
servers_usage_str = "dont used any server"
if (totally_used_s == ""):
totally_used_s = "0"
if (what_we_have == ""):
what_we_have = "0"
if (XMR_wehave == ""):
XMR_wehave = "0"
if (extramoneyis_dividedto_team == ""):
extramoneyis_dividedto_team = "The extra money has not been yet divided among the team."
remaining = str(float(what_we_have) + float(XMR_wehave)) #maybe that is make performance issue
if (remaining == ""):
print("remaining is NULL please check again...")
# output html's
# English
eng_f = open(os.path.join("eng", dt_string + ".html"), "w")
eng_f.write("<!DOCTYPE html>\n")
eng_f.write('<html lang="en">\n')
eng_f.write("<head>\n")
eng_f.write(' <meta name="viewport" content="width=device-width">\n')
eng_f.write(' <meta charset="UTF-8">\n')
eng_f.write(' <meta name="description" content="' + writing_date_eng + ' Financial Report of ~vern">\n')
eng_f.write(' <meta name="keywords" content="~vern, vern, free software, privacy, tilde, tildeverse, costs, transparency">\n')
eng_f.write(' <link rel="preload" href="//gcdn.vern.cc/vernsite/style.css">\n')
eng_f.write(' <link rel="stylesheet" href="//gcdn.vern.cc/vernsite/style.css">\n')
eng_f.write(" <title>" + writing_date_eng + " | ~vern</title>\n")
eng_f.write("</head>\n")
eng_f.write("<body>\n")
eng_f.write(' <!--#include file="/eng/nav.php" -->\n')
eng_f.write(' <div class=h><h1 id=' + html_id_n + '>' + writing_date_eng + ' Financial Report of ~vern</h1> <a aria-hidden=true href=#'+ html_id_n +'>#'+ html_id_n+ '</a></div>\n')
eng_f.write(' <div class=h><b id=liberapay>LiberaPay (Fiat) Donations:</b> <a aria-hidden=true href=#liberapay>#liberapay</a></div>\n')
eng_f.write(" <p>We received a total of " + LibP_total_str + " USD on LiberaPay this month.</p>\n")
eng_f.write(' <div class=h><b id=xmr>Monero (XMR) Donations:</b> <a aria-hidden=true href=#xmr>#xmr</a></div>\n')
eng_f.write(" <p>We received a total of "+ XMR_total_str +" XMR this month. It has not been converted to fiat. This money is kept for times when we have a lack of funds to use or to cash out when XMR peaks.</p>\n")
eng_f.write(' <div class=h><b id=usage>Usage:</b> <a aria-hidden=true href=#usage>#usage</a></div>\n')
eng_f.write(" <p>"+ servers_usage_str +"</p>\n")
eng_f.write(' <p>Totally '+ totally_used_s +' USD was used up this month. We have '+ what_we_have +' USD + around '+ XMR_wehave +' USD (XMR conversion rate as of '+ XMR_conv_date +') = '+ remaining +' USD remaining.</p>\n')
eng_f.write(' <p>'+ extramoneyis_dividedto_team +'</p>\n')
eng_f.write(' <!--#include file="/eng/footer.cgi" -->\n')
eng_f.write('</body>\n')
eng_f.write('</html>')
eng_f.close()
print("\e[1;31m!!!!Please send the remaining files(por_BR and tur) to our translators!!!!\e[0m")
# Turkish
tur_f = open(os.path.join("tur", dt_string + ".html"), "w")
tur_f.write("<!DOCTYPE html>\n")
tur_f.write('<html lang="tr">\n')
tur_f.write("<head>\n")
tur_f.write(' <meta name="viewport" content="width=device-width">\n')
tur_f.write(' <meta charset="UTF-8">\n')
tur_f.write(' <meta name="description" content="~vern ' + writing_date_tur + ' Finansal Raporu">\n')
tur_f.write(' <meta name="keywords" content="~vern, vern, free software, privacy, tilde, tildeverse, costs, transparency">\n')
tur_f.write(' <link rel="preload" href="//gcdn.vern.cc/vernsite/style.css">\n')
tur_f.write(' <link rel="stylesheet" href="//gcdn.vern.cc/vernsite/style.css">\n')
tur_f.write(" <title>" + writing_date_tur + " Finansal Raporu | ~vern</title>\n")
tur_f.write("</head>\n")
tur_f.write("<body>\n")
tur_f.write(' <!--#include file="/tur/nav.php" -->\n')
tur_f.write(' <div class=h><h1 id='+ html_id_n+ '>~vern ' + writing_date_tur + ' Finansal Raporu</h1> <a aria-hidden=true href=#'+ html_id_n+ '>#'+ html_id_n+ '</a></div>\n')
tur_f.write(' <div class=h><b id=liberapay>LiberaPay (Fiat) Bağışları:</b> <a aria-hidden=true href=#liberapay>#liberapay</a></div>\n')
tur_f.write(" <p>Bu ayda LiberaPay'den toplam olarak "+ LibP_total_str +" USD aldık.</p>")
tur_f.write(' <div class=h><b id=xmr>Monero (XMR) Bağışları:</b> <a aria-hidden=true href=#xmr>#xmr</a></div>\n')
tur_f.write(" <p>Bu ay toplam olarak "+ XMR_total_str +" XMR aldık. Fiat'a dönüştürülmedi. Bu para, XMR zirveye ulaştığında kullanacak veya nakde çevirecek paramızın olmadığı zamanlar için tutuluyor.</p>\n")
tur_f.write(' <div class=h><b id=usage>Kullanım:</b> <a aria-hidden=true href=#usage>#usage</a></div>\n')
tur_f.write(" <p>"+ servers_usage_str +"</p>\n")
tur_f.write(' <p>Toplam '+ totally_used_s +' USD bu ay kullanıldı. bizde olan '+ what_we_have +' USD + yaklaşık '+ XMR_wehave +' USD ('+ XMR_conv_date +' itibarıyla XMR dönüşüm oranı) = '+ remaining +' USD kalan.</p>\n')
tur_f.write(' <p>'+ extramoneyis_dividedto_team +'</p>\n')
tur_f.write(' <!--#include file="/tur/footer.cgi" -->\n')
tur_f.write('</body>\n')
tur_f.write('</html>')
tur_f.close()
# Portaguse
por_BR_f = open(os.path.join("por_BR", dt_string + ".html"), "w")
por_BR_f.write("<!DOCTYPE html>\n")
por_BR_f.write('<html lang="pt">\n')
por_BR_f.write("<head>\n")
por_BR_f.write(' <meta name="viewport" content="width=device-width">\n')
por_BR_f.write(' <meta charset="UTF-8">\n')
por_BR_f.write(' <meta name="description" content="' + writing_date_por_BR + ' Relatório financeiro do ~vern">\n')
por_BR_f.write(' <meta name="keywords" content="~vern, vern, free software, privacy, tilde, tildeverse, costs, transparency">\n')
por_BR_f.write(' <link rel="preload" href="//gcdn.vern.cc/vernsite/style.css">\n')
por_BR_f.write(' <link rel="stylesheet" href="//gcdn.vern.cc/vernsite/style.css">\n')
por_BR_f.write(" <title>Reporte Financeiro de " + writing_date_por_BR + " | ~vern</title>\n")
por_BR_f.write("</head>\n")
por_BR_f.write("<body>\n")
por_BR_f.write(' <!--#include file="/por-BR/nav.php" -->')
por_BR_f.write(' <div class=h><h1 id='+ html_id_n+ '>Reporte Financeiro de '+ writing_date_por_BR +' do ~vern</h1> <a aria-hidden=true href=#'+ html_id_n+ '>#'+ html_id_n+ '</a></div>\n')
por_BR_f.write(' <div class=h><b id=liberapay>LiberaPay (dinheiro):</b> <a aria-hidden=true href=#liberapay>#liberapay</a></div>\n')
por_BR_f.write(" <p>Recebemos um total de "+ LibP_total_str +" USD no LiberaPay neste mês.</p>\n")
por_BR_f.write(' <div class=h><b id=xmr>Monero (XMR):</b> <a aria-hidden=true href=#xmr>#xmr</a></div>\n')
por_BR_f.write(" <p>Recebemos um total de "+ XMR_total_str +" XMR este mês. Não foi convertido para dinheiro. Este dinheiro é guardado para quando nós temos uma emergência e para conversão quando XMR subir.</p>\n")
por_BR_f.write(' <div class=h><b id=usage>Utilização:</b> <a aria-hidden=true href=#usage>#usage</a></div>\n')
por_BR_f.write(" <p>"+ servers_usage_str +"</p>\n")
por_BR_f.write(' <p>No total, '+ totally_used_s +' USD foi utilizado neste mês. Nós temos '+ what_we_have +' USD + por volta de '+ XMR_wehave +' USD (taxa de conversão de XMR na data de '+ XMR_conv_date +') = '+ remaining +' USD restantes.</p>\n')
por_BR_f.write(' <p>'+ extramoneyis_dividedto_team +'</p>\n')
por_BR_f.write(' <!--#include file="/por-BR/footer.cgi" -->\n')
por_BR_f.write('</body>\n')
por_BR_f.write('</html>')
por_BR_f.close()