1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/ihatemoney_ynh.git synced 2024-09-03 19:26:15 +02:00

Start working on archive management

This commit is contained in:
Alexis Metaireau 2011-09-09 19:14:19 +02:00
parent 295beeade4
commit 801802836a
7 changed files with 55 additions and 17 deletions

View file

@ -100,3 +100,8 @@ class InviteForm(Form):
if not validator.regex.match(email): if not validator.regex.match(email):
raise ValidationError("The email %s is not valid" % 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)")

View file

@ -78,6 +78,8 @@ class Bill(db.Model):
date = db.Column(db.Date, default=datetime.now) date = db.Column(db.Date, default=datetime.now)
what = db.Column(db.UnicodeText) what = db.Column(db.UnicodeText)
archive = db.Column(db.Integer, db.ForeignKey("archive.id"))
def pay_each(self): def pay_each(self):
"""Compute what each person has to pay""" """Compute what each person has to pay"""
return round(self.amount / len(self.owers), 2) 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])) 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>"

View file

@ -5,9 +5,8 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h2>{% if edit %}Edit a{% else %}Add a new{% endif %} bill</h2>
<form method="post"> <form method="post">
{{ forms.add_bill(form) }} {{ forms.add_bill(form, edit) }}
</form> </form>
{% endblock %} {% endblock %}

View file

@ -0,0 +1,7 @@
{% extends "layout.html" %}
{% block content %}
<form method="post" accept-charset="utf-8">
{{ forms.create_archive(form) }}
</form>
{% endblock %}

View file

@ -52,10 +52,10 @@
{% endmacro %} {% endmacro %}
{% macro add_bill(form) %} {% macro add_bill(form, edit=False) %}
<fieldset> <fieldset>
<legend>Add a bill</legend> <legend>{% if edit %}Edit this {% else %}Add a {% endif %}bill</legend>
{% include "display_errors.html" %} {% include "display_errors.html" %}
{{ form.hidden_tag() }} {{ form.hidden_tag() }}
{{ input(form.date) }} {{ input(form.date) }}
@ -83,3 +83,15 @@
<a href="{{ url_for("list_bills") }}">No, thanks</a> <a href="{{ url_for("list_bills") }}">No, thanks</a>
</div> </div>
{% endmacro %} {% 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 %}

View file

@ -78,7 +78,7 @@
<td>{% for ower in bill.owers %}{{ ower.name }} {% endfor %}</td> <td>{% for ower in bill.owers %}{{ ower.name }} {% endfor %}</td>
<td>{{ bill.amount }} ({{ bill.pay_each() }} each)</td> <td>{{ bill.amount }} ({{ bill.pay_each() }} each)</td>
<td><a href="{{ url_for("edit_bill", bill_id=bill.id) }}">edit</a> <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> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>

View file

@ -5,7 +5,8 @@ from flaskext.mail import Mail, Message
# local modules # local modules
from models import db, Project, Person, Bill 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 from utils import get_billform_for, Redirect303
# create the application, initialize stuff # 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""" """Compute the sum each one have to pay to each other and display it"""
return render_template("compute_bills.html") 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") return render_template("create_archive.html", form=form)
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'))
def main(): def main():