From 20ab40690d74befcd8fc75f24f301759840bf43a Mon Sep 17 00:00:00 2001 From: Alexis Metaireau Date: Wed, 14 Sep 2011 22:03:18 +0200 Subject: [PATCH] Provide a way to edit a project. Fix #17 --- budget/forms.py | 22 +++++++++++++--------- budget/templates/create_project.html | 9 +++------ budget/templates/forms.html | 11 +++++++++++ budget/templates/layout.html | 2 +- budget/tests.py | 28 ++++++++++++++++++++++++++-- budget/web.py | 20 +++++++++++++++++++- 6 files changed, 73 insertions(+), 19 deletions(-) diff --git a/budget/forms.py b/budget/forms.py index cfd5788..ceda0e7 100644 --- a/budget/forms.py +++ b/budget/forms.py @@ -18,16 +18,11 @@ def select_multi_checkbox(field, ul_class='', **kwargs): return u''.join(html) -class ProjectForm(Form): +class EditProjectForm(Form): name = TextField("Project name", validators=[Required()]) - id = TextField("Project identifier", validators=[Required()]) - password = PasswordField("Password", validators=[Required()]) + password = TextField("Password", validators=[Required()]) contact_email = TextField("Email", validators=[Required(), Email()]) - submit = SubmitField("Create the project") - - def validate_id(form, field): - if Project.query.get(field.data): - raise ValidationError("This project id is already used") + submit = SubmitField("Edit the project") def save(self): """Create a new project with the information given by this form. @@ -42,12 +37,21 @@ class ProjectForm(Form): def update(self, project): """Update the project with the information from the form""" project.name = self.name.data - project.id = self.id.data project.password = self.password.data project.contact_email = self.contact_email.data return project +class ProjectForm(EditProjectForm): + id = TextField("Project identifier", validators=[Required()]) + password = PasswordField("Password", validators=[Required()]) + submit = SubmitField("Create the project") + + def validate_id(form, field): + if Project.query.get(field.data): + raise ValidationError("This project id is already used") + + class AuthenticationForm(Form): id = TextField("Project identifier", validators=[Required()]) diff --git a/budget/templates/create_project.html b/budget/templates/create_project.html index 6593822..41b8fd0 100644 --- a/budget/templates/create_project.html +++ b/budget/templates/create_project.html @@ -2,10 +2,7 @@ {% block content %}

Create a new project

-
-
- {{ forms.create_project(form) }} -
-
+
+ {{ forms.create_project(form) }} +
{% endblock %} - diff --git a/budget/templates/forms.html b/budget/templates/forms.html index b027763..f32e9fd 100644 --- a/budget/templates/forms.html +++ b/budget/templates/forms.html @@ -52,6 +52,17 @@ {% endmacro %} +{% macro edit_project(form) %} + + {% include "display_errors.html" %} + {{ form.hidden_tag() }} + {{ input(form.name) }} + {{ input(form.password) }} + {{ input(form.contact_email) }} + {{ submit(form.submit) }} + +{% endmacro %} + {% macro add_bill(form, edit=False) %}
diff --git a/budget/templates/layout.html b/budget/templates/layout.html index d79c39f..8858150 100644 --- a/budget/templates/layout.html +++ b/budget/templates/layout.html @@ -52,7 +52,7 @@