diff --git a/ihatemoney/forms.py b/ihatemoney/forms.py
index 88afd296..62c21444 100644
--- a/ihatemoney/forms.py
+++ b/ihatemoney/forms.py
@@ -114,8 +114,11 @@ class EditProjectForm(FlaskForm):
class UploadForm(FlaskForm):
file = FileField(
- "JSON", validators=[FileRequired(), FileAllowed(["json", "JSON"], "JSON only!")]
+ "JSON",
+ validators=[FileRequired(), FileAllowed(["json", "JSON"], "JSON only!")],
+ description=_("Import previously exported JSON file"),
)
+ submit = SubmitField(_("Import"))
class ProjectForm(EditProjectForm):
diff --git a/ihatemoney/static/css/main.css b/ihatemoney/static/css/main.css
index 32c267ea..fe8eec20 100644
--- a/ihatemoney/static/css/main.css
+++ b/ihatemoney/static/css/main.css
@@ -185,7 +185,7 @@ footer {
padding: 45px 50px;
}
-@media (min-width: 768px) {
+@media (min-width: 1024px) {
footer {
padding-left: calc(25% + 50px);
}
@@ -523,3 +523,13 @@ footer .icon svg {
text-align: right;
width: 200px;
}
+
+/* edit settings */
+
+.edit-project form {
+ margin-top: 1em;
+ margin-bottom: 3em;
+}
+.edit-project .custom-file {
+ margin-bottom: 2em;
+}
diff --git a/ihatemoney/templates/edit_project.html b/ihatemoney/templates/edit_project.html
index dcbbbc86..b7861c51 100644
--- a/ihatemoney/templates/edit_project.html
+++ b/ihatemoney/templates/edit_project.html
@@ -5,18 +5,43 @@
{
$(this).html("{{_("you sure?")}}");
});
+
+ $('.custom-file-input').on('change', function(event) {
+ var filename = [].slice.call(this.files).map(function (file) { return file.name}).join(',')
+ var $labelElement = $(this).parents('.custom-file').find('.custom-file-label')
+ $labelElement.text(filename)
+ })
{% endblock %}
{% block content %}
-
{{ _("Edit project") }}
-
-
-
+
-
{{ _("Download project's data") }}
-
+
{{ _("Edit project") }}
+
+
+
+
{{ _("Import JSON") }}
+
+
+
{{ _("Download project's data") }}
@@ -51,5 +76,5 @@
{{ _('Download the list of transactions needed to settle the current bills.') }}
-
+
{% endblock %}
diff --git a/ihatemoney/templates/layout.html b/ihatemoney/templates/layout.html
index dc3d32f6..8609779c 100644
--- a/ihatemoney/templates/layout.html
+++ b/ihatemoney/templates/layout.html
@@ -46,7 +46,6 @@
{{ _("Settle") }}
{{ _("Statistics") }}
{{ _("Settings") }}
- {{ _("Import") }}
{% endblock %}
{% endif %}
diff --git a/ihatemoney/templates/upload_json.html b/ihatemoney/templates/upload_json.html
deleted file mode 100644
index 64aca0fe..00000000
--- a/ihatemoney/templates/upload_json.html
+++ /dev/null
@@ -1,10 +0,0 @@
-{% extends "layout.html" %}
-
-{% block content %}
- {{ _("Import JSON") }}
-
-
-
-{% endblock %}
diff --git a/ihatemoney/web.py b/ihatemoney/web.py
index a3b10726..8e0bca6c 100644
--- a/ihatemoney/web.py
+++ b/ihatemoney/web.py
@@ -384,36 +384,36 @@ def reset_password():
@main.route("//edit", methods=["GET", "POST"])
def edit_project():
edit_form = EditProjectForm()
- if request.method == "POST":
- if edit_form.validate():
- project = edit_form.update(g.project)
- db.session.add(project)
- db.session.commit()
+ import_form = UploadForm()
+ # Import form
+ if import_form.validate_on_submit():
+ try:
+ import_project(import_form.file.data.stream, g.project)
+ flash(_("Project successfully uploaded"))
- return redirect(url_for(".list_bills"))
+ return redirect(url_for("main.list_bills"))
+ except ValueError:
+ flash(_("Invalid JSON"), category="error")
+
+ # Edit form
+ if edit_form.validate_on_submit():
+ project = edit_form.update(g.project)
+ db.session.add(project)
+ db.session.commit()
+
+ return redirect(url_for("main.list_bills"))
else:
edit_form.name.data = g.project.name
edit_form.contact_email.data = g.project.contact_email
return render_template(
- "edit_project.html", edit_form=edit_form, current_view="edit_project"
+ "edit_project.html",
+ edit_form=edit_form,
+ import_form=import_form,
+ current_view="edit_project",
)
-@main.route("//upload_json", methods=["GET", "POST"])
-def upload_json():
- form = UploadForm()
- if form.validate_on_submit():
- try:
- import_project(form.file.data.stream, g.project)
- flash(_("Project successfully uploaded"))
- except ValueError:
- flash(_("Invalid JSON"), category="error")
- return redirect(url_for("main.list_bills"))
-
- return render_template("upload_json.html", form=form)
-
-
def import_project(file, project):
json_file = json.load(file)