def app_index(page, lookup, category, fallback, use_count): """Show apps of app_type""" per_page = 5 apps, count = lookup(category, page, per_page) data = [] for app in apps: data.append( dict(app=app, n_tasks=cached_apps.n_tasks(app['id']), overall_progress=cached_apps.overall_progress(app['id']), last_activity=app['last_activity'], last_activity_raw=app['last_activity_raw'])) if fallback and not apps: # pragma: no cover return redirect(url_for('.index')) pagination = Pagination(page, per_page, count) categories = cached_cat.get_all() # Check for pre-defined categories featured and draft featured_cat = model.Category(name='Featured', short_name='featured', description='Featured applications') if category == 'featured': active_cat = featured_cat elif category == 'draft': active_cat = model.Category(name='Draft', short_name='draft', description='Draft applications') else: active_cat = db.session.query(model.Category)\ .filter_by(short_name=category).first() # Check if we have to add the section Featured to local nav if cached_apps.n_featured() > 0: categories.insert(0, featured_cat) template_args = { "apps": data, "title": gettext("Applications"), "pagination": pagination, "active_cat": active_cat, "categories": categories } if use_count: template_args.update({"count": count}) return render_template('/applications/index.html', **template_args)
def categories(): """List Categories""" try: if request.method == 'GET': require.category.read() form = CategoryForm() if request.method == 'POST': require.category.create() form = CategoryForm(request.form) if form.validate(): slug = form.name.data.lower().replace(" ", "") category = model.Category(name=form.name.data, short_name=slug, description=form.description.data) db.session.add(category) db.session.commit() cached_cat.reset() msg = gettext("Category added") flash(msg, 'success') else: flash(gettext('Please correct the errors'), 'error') categories = cached_cat.get_all() n_apps_per_category = dict() for c in categories: n_apps_per_category[c.short_name] = cached_apps.n_count( c.short_name) return render_template('admin/categories.html', title=gettext('Categories'), categories=categories, n_apps_per_category=n_apps_per_category, form=form) except Exception as e: # pragma: no cover current_app.logger.error(e) return abort(500)
def create_categories(cls): names = [cls.cat_1, cls.cat_2] db.session.add_all([ model.Category(name=c_name, short_name=c_name.lower().replace(" ", ""), description=c_name) for c_name in names ]) db.session.commit()
def app_index(page, lookup, category, fallback, use_count): """Show apps of app_type""" if not require.app.read(): abort(403) per_page = 5 apps, count = lookup(category, page, per_page) if fallback and not apps: return redirect(url_for('.published')) pagination = Pagination(page, per_page, count) categories = cached_cat.get_all() # Check for pre-defined categories featured and draft featured_cat = model.Category(name='Featured', short_name='featured', description='Featured applications') if category == 'featured': active_cat = featured_cat elif category == 'draft': active_cat = model.Category(name='Draft', short_name='draft', description='Draft applications') else: active_cat = db.session.query(model.Category)\ .filter_by(short_name=category).first() # Check if we have to add the section Featured to local nav if cached_apps.n_featured() > 0: categories.insert(0, featured_cat) template_args = { "apps": apps, "title": lazy_gettext("Applications"), "pagination": pagination, "active_cat": active_cat, "categories": categories } if use_count: template_args.update({"count": count}) return render_template('/applications/index.html', **template_args)
def update_category(id): """Updates a category""" try: category = db.session.query(model.Category).get(id) if category: require.category.update(category) form = CategoryForm(obj=category) form.populate_obj(category) if request.method == 'GET': return render_template('admin/update_category.html', title=gettext('Update Category'), category=category, form=form) if request.method == 'POST': form = CategoryForm(request.form) if form.validate(): slug = form.name.data.lower().replace(" ", "") new_category = model.Category(id=form.id.data, name=form.name.data, short_name=slug) # print new_category.id db.session.merge(new_category) db.session.commit() cached_cat.reset() msg = gettext("Category updated") flash(msg, 'success') return redirect(url_for(".categories")) else: msg = gettext("Please correct the errors") flash(msg, 'success') return render_template('admin/update_category.html', title=gettext('Update Category'), category=category, form=form) else: abort(404) except HTTPException: raise except Exception as e: # pragma: no cover current_app.logger.error(e) return abort(500)