diff options
| -rw-r--r-- | budget/forms.py | 5 | ||||
| -rw-r--r-- | budget/models.py | 17 | ||||
| -rw-r--r-- | budget/templates/add_bill.html | 3 | ||||
| -rw-r--r-- | budget/templates/create_archive.html | 7 | ||||
| -rw-r--r-- | budget/templates/forms.html | 16 | ||||
| -rw-r--r-- | budget/templates/list_bills.html | 2 | ||||
| -rw-r--r-- | budget/web.py | 22 |
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(): |
