diff options
Diffstat (limited to 'budget/api.py')
| -rw-r--r-- | budget/api.py | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/budget/api.py b/budget/api.py index 3df8ab2..c5ae76b 100644 --- a/budget/api.py +++ b/budget/api.py @@ -2,8 +2,8 @@ from flask import * from models import db, Project, Person, Bill -from forms import ProjectForm -from utils import for_all_methods +from forms import ProjectForm, EditProjectForm, MemberForm, BillForm +from utils import for_all_methods, get_billform_for from rest import RESTResource, need_auth# FIXME make it an ext from werkzeug import Response @@ -32,7 +32,7 @@ class ProjectHandler(object): def add(self): form = ProjectForm(csrf_enabled=False) if form.validate(): - project = form.save(Project()) + project = form.save() db.session.add(project) db.session.commit() return 201, project.id @@ -40,7 +40,7 @@ class ProjectHandler(object): @need_auth(check_project, "project") def get(self, project): - return project + return 200, project @need_auth(check_project, "project") def delete(self, project): @@ -50,9 +50,9 @@ class ProjectHandler(object): @need_auth(check_project, "project") def update(self, project): - form = ProjectForm(csrf_enabled=False) + form = EditProjectForm(csrf_enabled=False) if form.validate(): - form.save(project) + form.update(project) db.session.commit() return 200, "UPDATED" return 400, form.errors @@ -61,25 +61,25 @@ class ProjectHandler(object): class MemberHandler(object): def get(self, project, member_id): - member = Person.query.get(member_id) + member = Person.query.get(member_id, project) if not member or member.project != project: return 404, "Not Found" - return member + return 200, member def list(self, project): - return project.members + return 200, project.members def add(self, project): - form = MemberForm(csrf_enabled=False) + form = MemberForm(project, csrf_enabled=False) if form.validate(): member = Person() form.save(project, member) db.session.commit() - return 200, member.id + return 201, member.id return 400, form.errors def update(self, project, member_id): - form = MemberForm(csrf_enabled=False) + form = MemberForm(project, csrf_enabled=False) if form.validate(): member = Person.query.get(member_id, project) form.save(project, member) @@ -99,39 +99,41 @@ class BillHandler(object): bill = Bill.query.get(project, bill_id) if not bill: return 404, "Not Found" - return bill + return 200, bill def list(self, project): return project.get_bills().all() def add(self, project): - form = BillForm(csrf_enabled=False) + form = get_billform_for(project, True, csrf_enabled=False) if form.validate(): bill = Bill() - form.save(bill) + form.save(bill, project) db.session.add(bill) db.session.commit() - return 200, bill.id + return 201, bill.id return 400, form.errors def update(self, project, bill_id): - form = BillForm(csrf_enabled=False) + form = get_billform_for(project, True, csrf_enabled=False) if form.validate(): - form.save(bill) + bill = Bill.query.get(project, bill_id) + form.save(bill, project) db.session.commit() return 200, bill.id return 400, form.errors def delete(self, project, bill_id): bill = Bill.query.delete(project, bill_id) + db.session.commit() if not bill: return 404, "Not Found" - return bill + return 200, "OK" project_resource = RESTResource( name="project", - route="/project", + route="/projects", app=api, actions=["add", "update", "delete", "get"], handler=ProjectHandler()) @@ -139,7 +141,7 @@ project_resource = RESTResource( member_resource = RESTResource( name="member", inject_name="project", - route="/project/<project_id>/members", + route="/projects/<project_id>/members", app=api, handler=MemberHandler(), authentifier=check_project) @@ -147,7 +149,7 @@ member_resource = RESTResource( bill_resource = RESTResource( name="bill", inject_name="project", - route="/project/<project_id>/bills", + route="/projects/<project_id>/bills", app=api, handler=BillHandler(), authentifier=check_project) |
