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

Manage users creation

This commit is contained in:
Alexis Metaireau 2011-07-23 20:36:13 +02:00
parent f09d86a06c
commit a3b49a231f
5 changed files with 66 additions and 37 deletions

View file

@ -1,5 +1,5 @@
from flaskext.wtf import *
from models import Project
from models import Project, Person
# define forms
class CreationForm(Form):
@ -33,3 +33,16 @@ class BillForm(Form):
validators=[Required()])
submit = SubmitField("Add the bill")
class MemberForm(Form):
def __init__(self, project, *args, **kwargs):
super(MemberForm, self).__init__(*args, **kwargs)
self.project = project
name = TextField("Name", validators=[Required()])
submit = SubmitField("Add a member")
def validate_name(form, field):
if Person.query.filter(
Person.name == field.data and Person.project == self.project).all():
raise ValidationError("This project already have this member")

View file

@ -22,7 +22,7 @@ class Person(db.Model):
bills = db.relationship("Bill", backref="payer")
name = db.Column(db.UnicodeText)
status = db.Column(db.Boolean)
# activated = db.Column(db.Boolean, default=True)
def __repr__(self):
return "<Person %s for project %s>" % (self.name, self.project.name)

View file

@ -16,16 +16,11 @@
</div>
</div>
<hr>
<div id="content" class="span-24">
{% for message in get_flashed_messages() %}
<div class=info>{{ message }}</div>
{% endfor %}
{% block content %}
{% endblock %}
</div>
<div id="footer"></div>
</div>
</body>

View file

@ -1,5 +1,15 @@
{% extends "layout.html" %}
{% block content %}
<div id="leftmenu" class="span-6">
<ul>
{% for member in project.members %}
<li>{{ member.name }}</li>
{% endfor %}
</ul>
{% set form=member_form %}
{% include "member_form.html" %}
</div>
<div id="content" class="span-18 last">
{% if bills.count() > 0 %}
<table>
<thead><tr><th>When ?</th><th>Who paid?</th><th>for what ?</th><th>Owers</th><th>How much ?</th><th>Actions</th></tr></thead>
@ -23,4 +33,5 @@
{% else %}
<p>Nothing to list yet. You probably want to <a href="{{ url_for("add_bill", project_id=project.id) }}">add a bill</a> ?</p>
{% endif %}
</div>
{% endblock %}

View file

@ -2,7 +2,7 @@ from flask import Flask, session, request, redirect, url_for, render_template
# local modules
from models import db, Project, Person, Bill
from forms import CreationForm, AuthenticationForm, BillForm
from forms import CreationForm, AuthenticationForm, BillForm, MemberForm
from utils import get_billform_for, requires_auth
# create the application, initialize stuff
@ -26,7 +26,6 @@ def authenticate(project_id, redirect_url=None):
else:
session[project_id] = form.password.data
session.update()
from ipdb import set_trace; set_trace()
return redirect(redirect_url)
return render_template("authenticate.html", form=form, project=project)
@ -38,7 +37,6 @@ def home():
@app.route("/create", methods=["GET", "POST"])
def create_project():
from ipdb import set_trace; set_trace()
form = CreationForm()
if request.method == "GET" and 'project_id' in request.values:
form.name.data = request.values['project_id']
@ -71,7 +69,19 @@ def list_bills(project):
# FIXME filter to only get the bills for this particular project
bills = Bill.query.order_by(Bill.id.asc())
return render_template("list_bills.html",
bills=bills, project=project)
bills=bills, project=project, member_form=MemberForm(project))
@app.route("/<string:project_id>/members/add", methods=["GET", "POST"])
@requires_auth
def add_member(project):
# FIXME manage form errors on the list_bills page
form = MemberForm(project)
if request.method == "POST":
if form.validate():
db.session.add(Person(name=form.name.data, project=project))
db.session.commit()
return redirect(url_for("list_bills", project_id=project.id))
return render_template("add_member.html", form=form, project=project)
@app.route("/<string:project_id>/add", methods=["GET", "POST"])
@requires_auth