aboutsummaryrefslogtreecommitdiff
path: root/pyaggr3g470r/views
diff options
context:
space:
mode:
authorFrançois Schmidts <francois.schmidts@gmail.com>2015-10-10 12:59:32 +0200
committerFrançois Schmidts <francois.schmidts@gmail.com>2016-01-26 23:46:30 +0100
commit1095a049a63e4286da620b914c23411ea7a02e64 (patch)
tree6afebddd12fe4fd67f2a789ab16803c356974d7f /pyaggr3g470r/views
parentbase modification in model for category support (diff)
downloadnewspipe-1095a049a63e4286da620b914c23411ea7a02e64.tar.gz
newspipe-1095a049a63e4286da620b914c23411ea7a02e64.tar.bz2
newspipe-1095a049a63e4286da620b914c23411ea7a02e64.zip
base category creation/edition
Diffstat (limited to 'pyaggr3g470r/views')
-rw-r--r--pyaggr3g470r/views/category.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/pyaggr3g470r/views/category.py b/pyaggr3g470r/views/category.py
new file mode 100644
index 00000000..c5defb7f
--- /dev/null
+++ b/pyaggr3g470r/views/category.py
@@ -0,0 +1,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))
bgstack15