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 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

View file

@ -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.
""")) """))

View file

@ -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"))

View file

@ -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.

View file

@ -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)