Remove temp file in upload_json()

This commit is contained in:
Nicolas Vanvyve 2020-01-08 17:33:05 +01:00
parent 7e6fc168e8
commit 51b7d2caff
2 changed files with 7 additions and 14 deletions

View file

@ -4,6 +4,7 @@ import ast
import operator import operator
from io import BytesIO, StringIO from io import BytesIO, StringIO
import jinja2 import jinja2
from json import dumps, JSONEncoder from json import dumps, JSONEncoder
from flask import redirect, current_app from flask import redirect, current_app
@ -11,6 +12,7 @@ from babel import Locale
from werkzeug.routing import HTTPException, RoutingException from werkzeug.routing import HTTPException, RoutingException
from datetime import datetime, timedelta from datetime import datetime, timedelta
import csv import csv
@ -255,8 +257,3 @@ def same_bill(bill1, bill2):
if bill1[a] != bill2[a]: if bill1[a] != bill2[a]:
return False return False
return True return True
def parse_date(string_date):
date = string_date.split("-")
return datetime(int(date[0]), int(date[1]), int(date[2]), 0, 0, 0)

View file

@ -13,6 +13,7 @@ import os
from functools import wraps from functools import wraps
from smtplib import SMTPRecipientsRefused from smtplib import SMTPRecipientsRefused
from dateutil.parser import parse
from flask import ( from flask import (
abort, abort,
Blueprint, Blueprint,
@ -53,7 +54,6 @@ from ihatemoney.utils import (
LoginThrottler, LoginThrottler,
get_members, get_members,
same_bill, same_bill,
parse_date,
) )
main = Blueprint("main", __name__) main = Blueprint("main", __name__)
@ -399,17 +399,13 @@ def edit_project():
@main.route("/<project_id>/upload_json", methods=["GET", "POST"]) @main.route("/<project_id>/upload_json", methods=["GET", "POST"])
def upload_json(): def upload_json():
form = UploadForm() form = UploadForm()
pid = g.project.id
if form.validate_on_submit(): if form.validate_on_submit():
filename = pid + "_uploaded_bills.json" file = form.file.data.stream.read()
form.file.data.save(filename)
try: try:
import_project(filename) import_project(file)
flash(_("Project successfully uploaded")) flash(_("Project successfully uploaded"))
except ValueError: except ValueError:
flash(_("Invalid JSON"), category="error") flash(_("Invalid JSON"), category="error")
finally:
os.remove(filename)
return redirect(url_for("main.list_bills")) return redirect(url_for("main.list_bills"))
return render_template("upload_json.html", form=form) return render_template("upload_json.html", form=form)
@ -417,7 +413,7 @@ def upload_json():
def import_project(file): def import_project(file):
# From json : export list of members # From json : export list of members
json_file = json.load(open(file)) json_file = json.loads(file)
members_json = get_members(json_file) members_json = get_members(json_file)
members = g.project.members members = g.project.members
members_already_here = list() members_already_here = list()
@ -463,7 +459,7 @@ def import_project(file):
form = get_billform_for(g.project) form = get_billform_for(g.project)
form.what = b["what"] form.what = b["what"]
form.amount = b["amount"] form.amount = b["amount"]
form.date = parse_date(b["date"]) form.date = parse(b["date"])
form.payer = id_dict[b["payer_name"]] form.payer = id_dict[b["payer_name"]]
form.payed_for = owers_id form.payed_for = owers_id