1
0
Fork 0
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:
Alexis Metaireau 2011-10-08 13:45:05 +02:00
parent 48bc551853
commit 19ae3ab3b2
5 changed files with 13 additions and 25 deletions

View file

@ -2,8 +2,9 @@
from flask import *
from models import db, Project, Person, Bill
from forms import ProjectForm, EditProjectForm, MemberForm, BillForm
from utils import for_all_methods, get_billform_for
from forms import (ProjectForm, EditProjectForm, MemberForm, BillForm,
get_billform_for)
from utils import for_all_methods
from rest import RESTResource, need_auth# FIXME make it an ext
from werkzeug import Response

View file

@ -1,4 +1,6 @@
from flaskext.wtf import *
from flask import request
from wtforms.widgets import html_params
from models import Project, Person, Bill, db
from datetime import datetime
@ -20,14 +22,14 @@ def select_multi_checkbox(field, ul_class='', **kwargs):
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.
: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()
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]
@ -36,6 +38,7 @@ def get_billform_for(request, project, set_default=True):
return form
class EditProjectForm(Form):
name = TextField("Project name", validators=[Required()])
password = TextField("Private code", validators=[Required()])
@ -71,10 +74,8 @@ class ProjectForm(EditProjectForm):
if Project.query.get(form.id.data):
raise ValidationError(Markup("""The project identifier is used
to log in and for the URL of the project.
<br />
We tried to generate an identifier for you but
a project with this identifier already exists.
<br />
Please create a new identifier you will be able
to remember.
"""))

View file

@ -410,7 +410,8 @@ class APITestCase(TestCase):
resp = self.api_create("raclette")
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
resp = self.app.get("/api/projects/raclette",
headers=self.get_auth("raclette"))

View file

@ -18,21 +18,6 @@ def slugify(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):
"""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.

View file

@ -219,7 +219,7 @@ def list_bills():
bills = g.project.get_bills()
return render_template("list_bills.html",
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"])
@ -258,7 +258,7 @@ def remove_member(member_id):
@main.route("/<project_id>/add", methods=["GET", "POST"])
def add_bill():
form = get_billform_for(request, g.project)
form = get_billform_for(g.project)
if request.method == 'POST':
if form.validate():
bill = Bill()
@ -292,7 +292,7 @@ def edit_bill(bill_id):
if not bill:
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():
form.save(bill, g.project)