1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
from flask import g, Blueprint, render_template, flash, redirect, url_for
from flask.ext.babel import gettext
from flask.ext.login import login_required
from pyaggr3g470r.forms import AddCategoryForm
from pyaggr3g470r.lib.view_utils import etag_match
from pyaggr3g470r.controllers.category import CategoryController
categories_bp = Blueprint('categories', __name__, url_prefix='/categories')
category_bp = Blueprint('category', __name__, url_prefix='/category')
@category_bp.route('/create', methods=['GET'])
@category_bp.route('/edit/<int:category_id>', methods=['GET'])
@login_required
@etag_match
def form(category_id=None):
action = gettext("Add a category")
head_titles = [action]
if category_id is None:
return render_template('edit_category.html', action=action,
head_titles=head_titles, form=AddCategoryForm())
category = CategoryController(g.user.id).get(id=category_id)
action = gettext('Edit category')
head_titles = [action]
if category.name:
head_titles.append(category.name)
return render_template('edit_category.html', action=action,
head_titles=head_titles, category=category,
form=AddCategoryForm(obj=category))
@category_bp.route('/create', methods=['POST'])
@category_bp.route('/edit/<int:cat_id>', methods=['POST'])
@login_required
def process_form(category_id=None):
form = AddCategoryForm()
cat_contr = CategoryController(g.user.id)
if not form.validate():
return render_template('edit_category.html', form=form)
existing_cats = list(cat_contr.read(name=form.name.data))
if existing_cats and category_id is None:
flash(gettext("Couldn't add category: already exists."), "warning")
return redirect(url_for('category.form',
category_id=existing_cats[0].id))
# Edit an existing category
category_attr = {'name': form.name.data}
if category_id is not None:
cat_contr.update({'id': category_id}, category_attr)
flash(gettext('Category %(cat_name)r successfully updated.',
cat_name=category_attr['name']), 'success')
return redirect(url_for('category.form', category_id=category_id))
# Create a new category
new_category = cat_contr.create(**category_attr)
flash(gettext('Category %(category_name)r successfully created.',
category_name=new_category.name), 'success')
return redirect(url_for('category.form', category_id=new_category.id))
|