diff options
| author | JocelynDelalande <JocelynDelalande@users.noreply.github.com> | 2017-12-29 18:07:39 +0100 |
|---|---|---|
| committer | Alexis Metaireau <alexis@notmyidea.org> | 2017-12-29 18:07:39 +0100 |
| commit | c002cdbf9477f6db6f8c5c3db912957601c290a5 (patch) | |
| tree | 12f3df8f30b07917b1131e252dc5653121a2e304 /ihatemoney/api.py | |
| parent | 40e5a833a17d932b45f018980d1c558ca5a68e26 (diff) | |
| download | ihatemoney-mirror-c002cdbf9477f6db6f8c5c3db912957601c290a5.zip ihatemoney-mirror-c002cdbf9477f6db6f8c5c3db912957601c290a5.tar.gz ihatemoney-mirror-c002cdbf9477f6db6f8c5c3db912957601c290a5.tar.bz2 | |
Allow to disable/enable member via API (#301)
Disable was already (kind-of) possible via API via DELETE, but not re-enabling.
Kudos to @almet for helping me fixing that damn BooleanField :-)
Diffstat (limited to 'ihatemoney/api.py')
| -rw-r--r-- | ihatemoney/api.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/ihatemoney/api.py b/ihatemoney/api.py index 84f454e..827202c 100644 --- a/ihatemoney/api.py +++ b/ihatemoney/api.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from flask import Blueprint, request from flask_rest import RESTResource, need_auth +from wtforms.fields.core import BooleanField from ihatemoney.models import db, Project, Person, Bill from ihatemoney.forms import (ProjectForm, EditProjectForm, MemberForm, @@ -58,6 +59,18 @@ class ProjectHandler(object): return 400, form.errors +class APIMemberForm(MemberForm): + """ Member is not disablable via a Form. + + But we want Member.enabled to be togglable via the API. + """ + activated = BooleanField(false_values=('false', '', 'False')) + + def save(self, project, person): + person.activated = self.activated.data + return super(APIMemberForm, self).save(project, person) + + class MemberHandler(object): def get(self, project, member_id): @@ -79,7 +92,7 @@ class MemberHandler(object): return 400, form.errors def update(self, project, member_id): - form = MemberForm(project, meta={'csrf': False}, edit=True) + form = APIMemberForm(project, meta={'csrf': False}, edit=True) if form.validate(): member = Person.query.get(member_id, project) form.save(project, member) |
