saturn_cli/webserver.py

124 lines
3.7 KiB
Python
Raw Permalink Normal View History

from flask import Flask, render_template, request, redirect
import csv
HOST_NAME = "localhost"
HOST_PORT = 5000
app = Flask(__name__)
@app.route("/")
def mainpage():
with open("animelist.csv") as file:
reader = csv.reader(file)
enum = list(enumerate(list(reader)))
lista = []
for el in enum:
lista.append([el[0]]+el[1])
return render_template('index.html',csv=lista)
@app.route("/new_animu", methods = ['POST', 'GET'])
def new_animu():
if request.method == 'GET':
return redirect('/')
if request.method == 'POST':
form_data = request.form
#print(form_data)
if add_animu_fun(form_data):
return redirect('/')
return f'Errore aggiungendo anime, hai inserito correttamente i valori?'
@app.route("/del_animu", methods = ['POST', 'GET'])
def del_animu():
if request.method == 'GET':
return redirect('/')
if request.method == 'POST':
form_data = request.form
print(form_data)
if del_animu_fun(form_data):
return redirect('/')
return f'Errore rimuovendo anime, hai inserito correttamente i valori?'
@app.route("/mod_animu", methods = ['POST', 'GET'])
def mod_animu():
if request.method == 'GET':
return redirect('/')
if request.method == 'POST':
form_data = request.form
print(form_data)
if mod_animu_fun(form_data):
return redirect('/')
return f'Errore modificando anime, hai inserito correttamente i valori?'
def add_animu_fun(form_data):
try:
if not (form_data['field_season'] and form_data['field_url'] and form_data['field_folder']):
return False
stagione = int(form_data['field_season'])
new_entry = [form_data['field_url'],
form_data['field_folder'] + '/Season ' + str(stagione),
'Episode S' + format(stagione,'02d'),
1,
1]
with open("animelist.csv",mode='a') as animecsv: #link,cartella>
csvfile=csv.writer(animecsv)
csvfile.writerow(new_entry)
return True
except Exception as e:
print(e)
return False
def del_animu_fun(form_data):
try:
if not form_data['del_field']:
return False
data = []
with open("animelist.csv", 'r', newline='') as file:
csv_reader = csv.reader(file)
for index, row in enumerate(csv_reader):
if index != int(form_data['del_field']):
data.append(row)
# Write the remaining data back to the CSV file
with open("animelist.csv", 'w', newline='') as file:
csv_writer = csv.writer(file)
csv_writer.writerows(data)
return True
except Exception as e:
print(e)
return False
def mod_animu_fun(form_data):
try:
index = int(form_data['field_1_index'])
url = form_data['field_1_url']
folder = form_data['field_1_folder']
name = form_data['field_1_name']
check = form_data['field_1_check']
naming = form_data['field_1_naming']
if not ((check in '01') and (naming in '01')):
return False
newrow = [url,folder,name,check[-1:],naming[-1:]]
if not index: #cosi non si può modificare la riga 0
return False
data = []
with open("animelist.csv", 'r', newline='') as file:
csv_reader = csv.reader(file)
for ind, row in enumerate(csv_reader):
if ind != index:
data.append(row)
else: #cosi se lindex dato è fuori dal range non si fanno modifiche
for i in range(len(newrow)):
if newrow[i] == '':
newrow[i]=row[i]
data.append(newrow)
# Write the remaining data back to the CSV file
with open("animelist.csv", 'w', newline='') as file:
csv_writer = csv.writer(file)
csv_writer.writerows(data)
return True
except Exception as e:
print(e)
return False
if __name__ == "__main__":
app.run(HOST_NAME, HOST_PORT)