aboutsummaryrefslogtreecommitdiff
path: root/budget
diff options
context:
space:
mode:
Diffstat (limited to 'budget')
-rw-r--r--budget/forms.py5
-rw-r--r--budget/models.py17
-rw-r--r--budget/templates/add_bill.html3
-rw-r--r--budget/templates/create_archive.html7
-rw-r--r--budget/templates/forms.html16
-rw-r--r--budget/templates/list_bills.html2
-rw-r--r--budget/web.py22
7 files changed, 55 insertions, 17 deletions
diff --git a/budget/forms.py b/budget/forms.py
index 6272b7f..7ac48cc 100644
--- a/budget/forms.py
+++ b/budget/forms.py
@@ -100,3 +100,8 @@ class InviteForm(Form):
if not validator.regex.match(email):
raise ValidationError("The email %s is not valid" % email)
+
+class CreateArchiveForm(Form):
+ start_date = DateField("Start date", validators=[Required(),])
+ end_date = DateField("End date", validators=[Required(),])
+ name = TextField("Name for this archive (optional)")
diff --git a/budget/models.py b/budget/models.py
index ab93548..08e46ae 100644
--- a/budget/models.py
+++ b/budget/models.py
@@ -78,6 +78,8 @@ class Bill(db.Model):
date = db.Column(db.Date, default=datetime.now)
what = db.Column(db.UnicodeText)
+ archive = db.Column(db.Integer, db.ForeignKey("archive.id"))
+
def pay_each(self):
"""Compute what each person has to pay"""
return round(self.amount / len(self.owers), 2)
@@ -87,3 +89,18 @@ class Bill(db.Model):
self.payer, ", ".join([o.name for o in self.owers]))
+class Archive(db.Model):
+ id = db.Column(db.Integer, primary_key=True)
+ project_id = db.Column(db.Integer, db.ForeignKey("project.id"))
+ name = db.Column(db.UnicodeText)
+
+ @property
+ def start_date(self):
+ pass
+
+ @property
+ def end_date(self):
+ pass
+
+ def __repr__(self):
+ return "<Archive>"
diff --git a/budget/templates/add_bill.html b/budget/templates/add_bill.html
index ec60f43..0b575d7 100644
--- a/budget/templates/add_bill.html
+++ b/budget/templates/add_bill.html
@@ -5,9 +5,8 @@
{% endblock %}
{% block content %}
-<h2>{% if edit %}Edit a{% else %}Add a new{% endif %} bill</h2>
<form method="post">
- {{ forms.add_bill(form) }}
+ {{ forms.add_bill(form, edit) }}
</form>
{% endblock %}
diff --git a/budget/templates/create_archive.html b/budget/templates/create_archive.html
new file mode 100644
index 0000000..ae96a30
--- /dev/null
+++ b/budget/templates/create_archive.html
@@ -0,0 +1,7 @@
+{% extends "layout.html" %}
+
+{% block content %}
+<form method="post" accept-charset="utf-8">
+{{ forms.create_archive(form) }}
+</form>
+{% endblock %}
diff --git a/budget/templates/forms.html b/budget/templates/forms.html
index 8ac458f..7b512ff 100644
--- a/budget/templates/forms.html
+++ b/budget/templates/forms.html
@@ -52,10 +52,10 @@
{% endmacro %}
-{% macro add_bill(form) %}
+{% macro add_bill(form, edit=False) %}
<fieldset>
- <legend>Add a bill</legend>
+ <legend>{% if edit %}Edit this {% else %}Add a {% endif %}bill</legend>
{% include "display_errors.html" %}
{{ form.hidden_tag() }}
{{ input(form.date) }}
@@ -83,3 +83,15 @@
<a href="{{ url_for("list_bills") }}">No, thanks</a>
</div>
{% endmacro %}
+
+{% macro create_archive(form) %}
+ <fieldset>
+ <legend>Create an archive</legend>
+ {{ form.hidden_tag() }}
+ {{ input(form.start_date) }}
+ {{ input(form.end_date) }}
+ </fieldset>
+ <div class="actions">
+ <button class="btn">Create the archive</button>
+ </div>
+{% endmacro %}
diff --git a/budget/templates/list_bills.html b/budget/templates/list_bills.html
index e9699dd..b485f81 100644
--- a/budget/templates/list_bills.html
+++ b/budget/templates/list_bills.html
@@ -78,7 +78,7 @@
<td>{% for ower in bill.owers %}{{ ower.name }} {% endfor %}</td>
<td>{{ bill.amount }} ({{ bill.pay_each() }} each)</td>
<td><a href="{{ url_for("edit_bill", bill_id=bill.id) }}">edit</a>
- <a href="{{ url_for("delete_bill", bill_id=bill.id) }}">delete</a></td>
+ <a class="delete" href="{{ url_for("delete_bill", bill_id=bill.id) }}">delete</a></td>
</tr>
{% endfor %}
</tbody>
diff --git a/budget/web.py b/budget/web.py
index be5b1e9..d59d6d9 100644
--- a/budget/web.py
+++ b/budget/web.py
@@ -5,7 +5,8 @@ from flaskext.mail import Mail, Message
# local modules
from models import db, Project, Person, Bill
-from forms import ProjectForm, AuthenticationForm, BillForm, MemberForm, InviteForm
+from forms import (ProjectForm, AuthenticationForm, BillForm, MemberForm,
+ InviteForm, CreateArchiveForm)
from utils import get_billform_for, Redirect303
# create the application, initialize stuff
@@ -256,18 +257,15 @@ def compute_bills():
"""Compute the sum each one have to pay to each other and display it"""
return render_template("compute_bills.html")
+@app.route("/<project_id>/archives/create")
+def create_archive():
+ form = CreateArchiveForm()
+ if request.method == "POST":
+ if form.validate():
+ pass
+ flash("The data from XX to XX has been archived")
-@app.route("/<project_id>/reset")
-def reset_bills():
- """Reset the list of bills"""
- # FIXME replace with the archive feature
- # get all the bills which are not processed
- bills = Bill.query.filter(Bill.processed == False)
- for bill in bills:
- bill.processed = True
- db.session.commit()
-
- return redirect(url_for('list_bills'))
+ return render_template("create_archive.html", form=form)
def main():