New tab upload

This commit is contained in:
Nicolas Vanvyve 2019-11-26 08:45:38 +01:00
parent f51a02005c
commit 3fe668c1e1
6 changed files with 46 additions and 2 deletions

1
.gitignore vendored
View file

@ -11,3 +11,4 @@ build
.vscode .vscode
.env .env
.pytest_cache .pytest_cache
.idea/

View file

@ -10,6 +10,8 @@ from wtforms.validators import (
NumberRange, NumberRange,
Optional, Optional,
) )
from flask_wtf.file import FileField, FileAllowed, FileRequired
from flask_babel import lazy_gettext as _ from flask_babel import lazy_gettext as _
from flask import request from flask import request
from werkzeug.security import generate_password_hash from werkzeug.security import generate_password_hash
@ -109,6 +111,12 @@ class EditProjectForm(FlaskForm):
return project return project
class UploadForm(FlaskForm):
file = FileField('JSON', validators=[
FileRequired(),
FileAllowed(['json', 'JSON'], 'JSON only!')
])
class ProjectForm(EditProjectForm): class ProjectForm(EditProjectForm):
id = StringField(_("Project identifier"), validators=[DataRequired()]) id = StringField(_("Project identifier"), validators=[DataRequired()])

View file

@ -85,6 +85,16 @@
{% endmacro %} {% endmacro %}
{% macro upload_json(form) %}
{% include "display_errors.html" %}
{{ form.hidden_tag() }}
{{ form.file }}
{{ form.csrf_token() }}
<div class="actions">
<button class="btn btn-primary">{{ _("BlaBlaBla") }}</button>
</div>
{% endmacro %}
{% macro add_bill(form, edit=False, title=True) %} {% macro add_bill(form, edit=False, title=True) %}
<fieldset> <fieldset>

View file

@ -42,6 +42,7 @@
<li class="nav-item{% if current_view == 'settle_bill' %} active{% endif %}"><a class="nav-link" href="{{ url_for("main.settle_bill") }}">{{ _("Settle") }}</a></li> <li class="nav-item{% if current_view == 'settle_bill' %} active{% endif %}"><a class="nav-link" href="{{ url_for("main.settle_bill") }}">{{ _("Settle") }}</a></li>
<li class="nav-item{% if current_view == 'statistics' %} active{% endif %}"><a class="nav-link" href="{{ url_for("main.statistics") }}">{{ _("Statistics") }}</a></li> <li class="nav-item{% if current_view == 'statistics' %} active{% endif %}"><a class="nav-link" href="{{ url_for("main.statistics") }}">{{ _("Statistics") }}</a></li>
<li class="nav-item{% if current_view == 'edit_project' %} active{% endif %}"><a class="nav-link" href="{{ url_for("main.edit_project") }}">{{ _("Settings") }}</a></li> <li class="nav-item{% if current_view == 'edit_project' %} active{% endif %}"><a class="nav-link" href="{{ url_for("main.edit_project") }}">{{ _("Settings") }}</a></li>
<li class="nav-item{% if current_view == 'upload_json' %} active{% endif %}"><a class="nav-link" href="{{ url_for("main.upload_json") }}">{{ _("Upload") }}</a></li>
{% endblock %} {% endblock %}
{% endif %} {% endif %}
</ul> </ul>

View file

@ -0,0 +1,10 @@
{% extends "layout.html" %}
{% block content %}
<h2>{{ _("Upload JSON") }}</h2>
<p>
<form class="form-horizontal" method="post" enctype="multipart/form-data">
{{ forms.upload_json(form) }}
</form>
</p>
{% endblock %}

View file

@ -43,7 +43,7 @@ from ihatemoney.forms import (
ResetPasswordForm, ResetPasswordForm,
ProjectForm, ProjectForm,
get_billform_for, get_billform_for,
) UploadForm)
from ihatemoney.utils import ( from ihatemoney.utils import (
Redirect303, Redirect303,
list_of_dicts2json, list_of_dicts2json,
@ -391,6 +391,20 @@ def edit_project():
) )
@main.route('/<project_id>/upload_json', methods=['GET', 'POST'])
def upload_json():
form = UploadForm()
pid = g.project.id
if form.validate_on_submit():
filename = pid+"_uploaded_bills.json"
form.file.data.save(filename)
return redirect(url_for('upload'))
os.remove(filename)
return redirect(url_for('main.list_bills'))
return render_template('upload_json.html', form=form)
@main.route("/<project_id>/delete") @main.route("/<project_id>/delete")
def delete_project(): def delete_project():
g.project.remove_project() g.project.remove_project()