mirror of
https://github.com/spiral-project/ihatemoney.git
synced 2025-05-05 20:51:49 +02:00
Do not allow negative weights on users (Fixes #362)
This commit is contained in:
parent
5c46e19aaa
commit
ef7f1f94c5
4 changed files with 25 additions and 6 deletions
|
@ -2,7 +2,7 @@ from flask_wtf.form import FlaskForm
|
||||||
from wtforms.fields.core import SelectField, SelectMultipleField
|
from wtforms.fields.core import SelectField, SelectMultipleField
|
||||||
from wtforms.fields.html5 import DateField, DecimalField
|
from wtforms.fields.html5 import DateField, DecimalField
|
||||||
from wtforms.fields.simple import PasswordField, SubmitField, TextAreaField, StringField
|
from wtforms.fields.simple import PasswordField, SubmitField, TextAreaField, StringField
|
||||||
from wtforms.validators import Email, Required, ValidationError, EqualTo
|
from wtforms.validators import Email, Required, ValidationError, EqualTo, NumberRange
|
||||||
from flask_babel import lazy_gettext as _
|
from flask_babel import lazy_gettext as _
|
||||||
from flask import request
|
from flask import request
|
||||||
from werkzeug.security import generate_password_hash
|
from werkzeug.security import generate_password_hash
|
||||||
|
@ -149,9 +149,11 @@ class BillForm(FlaskForm):
|
||||||
|
|
||||||
|
|
||||||
class MemberForm(FlaskForm):
|
class MemberForm(FlaskForm):
|
||||||
|
|
||||||
name = StringField(_("Name"), validators=[Required()])
|
name = StringField(_("Name"), validators=[Required()])
|
||||||
weight = CommaDecimalField(_("Weight"), default=1)
|
|
||||||
|
wieght_validators = [NumberRange(min=0.1, message=_("Weights should be positive"))]
|
||||||
|
weight = CommaDecimalField(_("Weight"), default=1,
|
||||||
|
validators=weight_validators)
|
||||||
submit = SubmitField(_("Add"))
|
submit = SubmitField(_("Add"))
|
||||||
|
|
||||||
def __init__(self, project, edit=False, *args, **kwargs):
|
def __init__(self, project, edit=False, *args, **kwargs):
|
||||||
|
|
|
@ -74,6 +74,9 @@ msgstr ""
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Weights should be positive"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -619,6 +619,18 @@ class BudgetTestCase(IhatemoneyTestCase):
|
||||||
resp = self.client.get("/raclette/")
|
resp = self.client.get("/raclette/")
|
||||||
self.assertNotIn('extra-info', resp.data.decode('utf-8'))
|
self.assertNotIn('extra-info', resp.data.decode('utf-8'))
|
||||||
|
|
||||||
|
def test_negative_weight(self):
|
||||||
|
self.post_project("raclette")
|
||||||
|
|
||||||
|
# Add one user and edit it to have a negative share
|
||||||
|
self.client.post("/raclette/members/add", data={'name': 'alexis'})
|
||||||
|
resp = self.client.post("/raclette/members/1/edit", data={'name': 'alexis', 'weight': -1})
|
||||||
|
|
||||||
|
# An error should be generated, and its weight should still be 1.
|
||||||
|
self.assertIn('<p class="alert alert-danger">', resp.data.decode('utf-8'))
|
||||||
|
self.assertEqual(len(models.Project.query.get('raclette').members), 1)
|
||||||
|
self.assertEqual(models.Project.query.get('raclette').members[0].weight, 1)
|
||||||
|
|
||||||
def test_rounding(self):
|
def test_rounding(self):
|
||||||
self.post_project("raclette")
|
self.post_project("raclette")
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2018-07-16 23:26+0200\n"
|
"POT-Creation-Date: 2018-08-05 16:21+0200\n"
|
||||||
"PO-Revision-Date: 2018-05-15 22:00+0200\n"
|
"PO-Revision-Date: 2018-05-15 22:00+0200\n"
|
||||||
"Last-Translator: Adrien CLERC <>\n"
|
"Last-Translator: Adrien CLERC <>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
|
@ -16,7 +16,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.5.3\n"
|
"Generated-By: Babel 2.6.0\n"
|
||||||
|
|
||||||
msgid "Project name"
|
msgid "Project name"
|
||||||
msgstr "Nom de projet"
|
msgstr "Nom de projet"
|
||||||
|
@ -98,6 +98,9 @@ msgstr "Nom"
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr "Parts"
|
msgstr "Parts"
|
||||||
|
|
||||||
|
msgid "Weights should be positive"
|
||||||
|
msgstr "Les parts doivent être positives"
|
||||||
|
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Ajouter"
|
msgstr "Ajouter"
|
||||||
|
|
||||||
|
@ -488,4 +491,3 @@ msgstr "Solde"
|
||||||
|
|
||||||
#~ msgid "Invite"
|
#~ msgid "Invite"
|
||||||
#~ msgstr "Invitez"
|
#~ msgstr "Invitez"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue