aboutsummaryrefslogtreecommitdiff
path: root/budget
diff options
context:
space:
mode:
Diffstat (limited to 'budget')
-rw-r--r--budget/api.py12
-rw-r--r--budget/default_settings.py4
-rw-r--r--budget/forms.py18
-rwxr-xr-xbudget/manage.py4
-rw-r--r--budget/tests.py4
-rw-r--r--budget/utils.py4
6 files changed, 27 insertions, 19 deletions
diff --git a/budget/api.py b/budget/api.py
index ec664b6..4b991bd 100644
--- a/budget/api.py
+++ b/budget/api.py
@@ -29,7 +29,7 @@ def check_project(*args, **kwargs):
class ProjectHandler(object):
def add(self):
- form = ProjectForm(csrf_enabled=False)
+ form = ProjectForm(meta={'csrf': False})
if form.validate():
project = form.save()
db.session.add(project)
@@ -49,7 +49,7 @@ class ProjectHandler(object):
@need_auth(check_project, "project")
def update(self, project):
- form = EditProjectForm(csrf_enabled=False)
+ form = EditProjectForm(meta={'csrf': False})
if form.validate():
form.update(project)
db.session.commit()
@@ -69,7 +69,7 @@ class MemberHandler(object):
return 200, project.members
def add(self, project):
- form = MemberForm(project, csrf_enabled=False)
+ form = MemberForm(project, meta={'csrf': False})
if form.validate():
member = Person()
form.save(project, member)
@@ -78,7 +78,7 @@ class MemberHandler(object):
return 400, form.errors
def update(self, project, member_id):
- form = MemberForm(project, csrf_enabled=False)
+ form = MemberForm(project, meta={'csrf': False})
if form.validate():
member = Person.query.get(member_id, project)
form.save(project, member)
@@ -104,7 +104,7 @@ class BillHandler(object):
return project.get_bills().all()
def add(self, project):
- form = get_billform_for(project, True, csrf_enabled=False)
+ form = get_billform_for(project, True, meta={'csrf': False})
if form.validate():
bill = Bill()
form.save(bill, project)
@@ -114,7 +114,7 @@ class BillHandler(object):
return 400, form.errors
def update(self, project, bill_id):
- form = get_billform_for(project, True, csrf_enabled=False)
+ form = get_billform_for(project, True, meta={'csrf': False})
if form.validate():
bill = Bill.query.get(project, bill_id)
form.save(bill, project)
diff --git a/budget/default_settings.py b/budget/default_settings.py
index d5a9a9b..5ee6de8 100644
--- a/budget/default_settings.py
+++ b/budget/default_settings.py
@@ -1,6 +1,10 @@
DEBUG = False
SQLALCHEMY_DATABASE_URI = 'sqlite:///budget.db'
SQLACHEMY_ECHO = DEBUG
+# Will likely become the default value in flask-sqlalchemy >=3 ; could be removed
+# then:
+SQLALCHEMY_TRACK_MODIFICATIONS = False
+
SECRET_KEY = "tralala"
MAIL_DEFAULT_SENDER = ("Budget manager", "budget@notmyidea.org")
diff --git a/budget/forms.py b/budget/forms.py
index 6967983..f446475 100644
--- a/budget/forms.py
+++ b/budget/forms.py
@@ -1,7 +1,7 @@
from flask_wtf.form import FlaskForm
from wtforms.fields.core import SelectField, SelectMultipleField
from wtforms.fields.html5 import DateField, DecimalField
-from wtforms.fields.simple import PasswordField, SubmitField, TextAreaField, TextField
+from wtforms.fields.simple import PasswordField, SubmitField, TextAreaField, StringField
from wtforms.validators import Email, Required, ValidationError
from flask_babel import lazy_gettext as _
from flask import request
@@ -38,9 +38,9 @@ class CommaDecimalField(DecimalField):
class EditProjectForm(FlaskForm):
- name = TextField(_("Project name"), validators=[Required()])
- password = TextField(_("Private code"), validators=[Required()])
- contact_email = TextField(_("Email"), validators=[Required(), Email()])
+ name = StringField(_("Project name"), validators=[Required()])
+ password = StringField(_("Private code"), validators=[Required()])
+ contact_email = StringField(_("Email"), validators=[Required(), Email()])
def save(self):
"""Create a new project with the information given by this form.
@@ -62,7 +62,7 @@ class EditProjectForm(FlaskForm):
class ProjectForm(EditProjectForm):
- id = TextField(_("Project identifier"), validators=[Required()])
+ id = StringField(_("Project identifier"), validators=[Required()])
password = PasswordField(_("Private code"), validators=[Required()])
submit = SubmitField(_("Create the project"))
@@ -78,13 +78,13 @@ class ProjectForm(EditProjectForm):
class AuthenticationForm(FlaskForm):
- id = TextField(_("Project identifier"), validators=[Required()])
+ id = StringField(_("Project identifier"), validators=[Required()])
password = PasswordField(_("Private code"), validators=[Required()])
submit = SubmitField(_("Get in"))
class PasswordReminder(FlaskForm):
- id = TextField(_("Project identifier"), validators=[Required()])
+ id = StringField(_("Project identifier"), validators=[Required()])
submit = SubmitField(_("Send me the code by email"))
def validate_id(form, field):
@@ -94,7 +94,7 @@ class PasswordReminder(FlaskForm):
class BillForm(FlaskForm):
date = DateField(_("Date"), validators=[Required()], default=datetime.now)
- what = TextField(_("What?"), validators=[Required()])
+ what = StringField(_("What?"), validators=[Required()])
payer = SelectField(_("Payer"), validators=[Required()], coerce=int)
amount = CommaDecimalField(_("Amount paid"), validators=[Required()])
payed_for = SelectMultipleField(_("For whom?"),
@@ -129,7 +129,7 @@ class BillForm(FlaskForm):
class MemberForm(FlaskForm):
- name = TextField(_("Name"), validators=[Required()])
+ name = StringField(_("Name"), validators=[Required()])
weight = CommaDecimalField(_("Weight"), default=1)
submit = SubmitField(_("Add"))
diff --git a/budget/manage.py b/budget/manage.py
index e0b25a7..94a21a2 100755
--- a/budget/manage.py
+++ b/budget/manage.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
-from flask.ext.script import Manager
-from flask.ext.migrate import Migrate, MigrateCommand
+from flask_script import Manager
+from flask_migrate import Migrate, MigrateCommand
from run import app
from models import db
diff --git a/budget/tests.py b/budget/tests.py
index 50c01ae..854c07b 100644
--- a/budget/tests.py
+++ b/budget/tests.py
@@ -5,7 +5,6 @@ try:
except ImportError:
import unittest # NOQA
-import base64
import os
import json
from collections import defaultdict
@@ -17,6 +16,7 @@ from flask import session
import run
import models
+import utils
class TestCase(unittest.TestCase):
@@ -759,7 +759,7 @@ class APITestCase(TestCase):
def get_auth(self, username, password=None):
password = password or username
- base64string = base64.encodestring(
+ base64string = utils.base64_encode(
('%s:%s' % (username, password)).encode('utf-8')).decode('utf-8').replace('\n', '')
return {"Authorization": "Basic %s" % base64string}
diff --git a/budget/utils.py b/budget/utils.py
index f518049..0e6251b 100644
--- a/budget/utils.py
+++ b/budget/utils.py
@@ -1,3 +1,4 @@
+import base64
import re
import inspect
@@ -120,3 +121,6 @@ def list_of_dicts2csv(dict_to_convert):
if six.PY3:
csv_file = BytesIO(csv_file.getvalue().encode('utf-8'))
return csv_file
+
+# base64 encoding that works with both py2 and py3 and yield no warning
+base64_encode = base64.encodestring if six.PY2 else base64.encodebytes