mirror of
https://github.com/YunoHost-Apps/ihatemoney_ynh.git
synced 2024-09-03 19:26:15 +02:00
merge with master
This commit is contained in:
parent
48bc551853
commit
19ae3ab3b2
5 changed files with 13 additions and 25 deletions
|
@ -2,8 +2,9 @@
|
||||||
from flask import *
|
from flask import *
|
||||||
|
|
||||||
from models import db, Project, Person, Bill
|
from models import db, Project, Person, Bill
|
||||||
from forms import ProjectForm, EditProjectForm, MemberForm, BillForm
|
from forms import (ProjectForm, EditProjectForm, MemberForm, BillForm,
|
||||||
from utils import for_all_methods, get_billform_for
|
get_billform_for)
|
||||||
|
from utils import for_all_methods
|
||||||
|
|
||||||
from rest import RESTResource, need_auth# FIXME make it an ext
|
from rest import RESTResource, need_auth# FIXME make it an ext
|
||||||
from werkzeug import Response
|
from werkzeug import Response
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
from flaskext.wtf import *
|
from flaskext.wtf import *
|
||||||
|
from flask import request
|
||||||
|
|
||||||
from wtforms.widgets import html_params
|
from wtforms.widgets import html_params
|
||||||
from models import Project, Person, Bill, db
|
from models import Project, Person, Bill, db
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
@ -20,14 +22,14 @@ def select_multi_checkbox(field, ul_class='', **kwargs):
|
||||||
return u''.join(html)
|
return u''.join(html)
|
||||||
|
|
||||||
|
|
||||||
def get_billform_for(request, project, set_default=True):
|
def get_billform_for(project, set_default=True, **kwargs):
|
||||||
"""Return an instance of BillForm configured for a particular project.
|
"""Return an instance of BillForm configured for a particular project.
|
||||||
|
|
||||||
:set_default: if set to True, on GET methods (usually when we want to
|
:set_default: if set to True, on GET methods (usually when we want to
|
||||||
display the default form, it will call set_default on it.
|
display the default form, it will call set_default on it.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
form = BillForm()
|
form = BillForm(**kwargs)
|
||||||
form.payed_for.choices = form.payer.choices = [(str(m.id), m.name) for m in project.active_members]
|
form.payed_for.choices = form.payer.choices = [(str(m.id), m.name) for m in project.active_members]
|
||||||
form.payed_for.default = [str(m.id) for m in project.active_members]
|
form.payed_for.default = [str(m.id) for m in project.active_members]
|
||||||
|
|
||||||
|
@ -36,6 +38,7 @@ def get_billform_for(request, project, set_default=True):
|
||||||
return form
|
return form
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class EditProjectForm(Form):
|
class EditProjectForm(Form):
|
||||||
name = TextField("Project name", validators=[Required()])
|
name = TextField("Project name", validators=[Required()])
|
||||||
password = TextField("Private code", validators=[Required()])
|
password = TextField("Private code", validators=[Required()])
|
||||||
|
@ -71,10 +74,8 @@ class ProjectForm(EditProjectForm):
|
||||||
if Project.query.get(form.id.data):
|
if Project.query.get(form.id.data):
|
||||||
raise ValidationError(Markup("""The project identifier is used
|
raise ValidationError(Markup("""The project identifier is used
|
||||||
to log in and for the URL of the project.
|
to log in and for the URL of the project.
|
||||||
<br />
|
|
||||||
We tried to generate an identifier for you but
|
We tried to generate an identifier for you but
|
||||||
a project with this identifier already exists.
|
a project with this identifier already exists.
|
||||||
<br />
|
|
||||||
Please create a new identifier you will be able
|
Please create a new identifier you will be able
|
||||||
to remember.
|
to remember.
|
||||||
"""))
|
"""))
|
||||||
|
|
|
@ -410,7 +410,8 @@ class APITestCase(TestCase):
|
||||||
resp = self.api_create("raclette")
|
resp = self.api_create("raclette")
|
||||||
|
|
||||||
self.assertTrue(400, resp.status_code)
|
self.assertTrue(400, resp.status_code)
|
||||||
self.assertEqual('{"id": ["This project id is already used"]}', resp.data)
|
self.assertIn('id', json.loads(resp.data))
|
||||||
|
|
||||||
# get information about it
|
# get information about it
|
||||||
resp = self.app.get("/api/projects/raclette",
|
resp = self.app.get("/api/projects/raclette",
|
||||||
headers=self.get_auth("raclette"))
|
headers=self.get_auth("raclette"))
|
||||||
|
|
|
@ -18,21 +18,6 @@ def slugify(value):
|
||||||
return re.sub('[-\s]+', '-', value)
|
return re.sub('[-\s]+', '-', value)
|
||||||
|
|
||||||
|
|
||||||
def get_billform_for(project, set_default=True, **kwargs):
|
|
||||||
"""Return an instance of BillForm configured for a particular project.
|
|
||||||
|
|
||||||
:set_default: if set to True, on GET methods (usually when we want to
|
|
||||||
display the default form, it will call set_default on it.
|
|
||||||
|
|
||||||
"""
|
|
||||||
form = BillForm(**kwargs)
|
|
||||||
form.payed_for.choices = form.payer.choices = [(str(m.id), m.name) for m in project.active_members]
|
|
||||||
form.payed_for.default = [str(m.id) for m in project.active_members]
|
|
||||||
|
|
||||||
if set_default and request.method == "GET":
|
|
||||||
form.set_default()
|
|
||||||
return form
|
|
||||||
|
|
||||||
class Redirect303(HTTPException, RoutingException):
|
class Redirect303(HTTPException, RoutingException):
|
||||||
"""Raise if the map requests a redirect. This is for example the case if
|
"""Raise if the map requests a redirect. This is for example the case if
|
||||||
`strict_slashes` are activated and an url that requires a trailing slash.
|
`strict_slashes` are activated and an url that requires a trailing slash.
|
||||||
|
|
|
@ -219,7 +219,7 @@ def list_bills():
|
||||||
bills = g.project.get_bills()
|
bills = g.project.get_bills()
|
||||||
return render_template("list_bills.html",
|
return render_template("list_bills.html",
|
||||||
bills=bills, member_form=MemberForm(g.project),
|
bills=bills, member_form=MemberForm(g.project),
|
||||||
bill_form=get_billform_for(request, g.project)
|
bill_form=get_billform_for(g.project)
|
||||||
)
|
)
|
||||||
|
|
||||||
@main.route("/<project_id>/members/add", methods=["GET", "POST"])
|
@main.route("/<project_id>/members/add", methods=["GET", "POST"])
|
||||||
|
@ -258,7 +258,7 @@ def remove_member(member_id):
|
||||||
|
|
||||||
@main.route("/<project_id>/add", methods=["GET", "POST"])
|
@main.route("/<project_id>/add", methods=["GET", "POST"])
|
||||||
def add_bill():
|
def add_bill():
|
||||||
form = get_billform_for(request, g.project)
|
form = get_billform_for(g.project)
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
if form.validate():
|
if form.validate():
|
||||||
bill = Bill()
|
bill = Bill()
|
||||||
|
@ -292,7 +292,7 @@ def edit_bill(bill_id):
|
||||||
if not bill:
|
if not bill:
|
||||||
raise werkzeug.exceptions.NotFound()
|
raise werkzeug.exceptions.NotFound()
|
||||||
|
|
||||||
form = get_billform_for(request, g.project, set_default=False)
|
form = get_billform_for(g.project, set_default=False)
|
||||||
|
|
||||||
if request.method == 'POST' and form.validate():
|
if request.method == 'POST' and form.validate():
|
||||||
form.save(bill, g.project)
|
form.save(bill, g.project)
|
||||||
|
|
Loading…
Reference in a new issue