def test_template_context(self): default_breadcrumb_root(self.foo, "breadcrumbs") with self.app.test_client() as c: response = c.get("/level3B") self.assertEqual(response.data.decode("utf8"), "Test,/test;Level 2,/level2;Level 3B,/level3B;") with self.app.test_client() as c: response = c.get("/foo/baz") self.assertEqual(response.data.decode("utf8"), "Test,/test;Baz,/foo/baz;")
def test_set_default_breadcrumb_root_as_dot(self): default_breadcrumb_root(self.foo, '.') with self.app.test_client() as c: c.get('/foo/') self.assertEqual(current_path, 'breadcrumbs.bar') self.assertEqual(current_breadcrumbs[-1].url, '/foo/') with self.app.test_client() as c: c.get('/foo/baz') self.assertEqual(current_path, 'breadcrumbs.baz') self.assertEqual(current_breadcrumbs[-1].url, '/foo/baz')
def test_template_context(self): default_breadcrumb_root(self.foo, 'breadcrumbs') with self.app.test_client() as c: response = c.get('/level3B') self.assertEqual(response.data.decode('utf8'), 'Test,/test;Level 2,/level2;Level 3B,/level3B;') with self.app.test_client() as c: response = c.get('/foo/baz') self.assertEqual(response.data.decode('utf8'), 'Test,/test;Baz,/foo/baz;')
def test_set_default_breadcrumb_root_different_from_blueprint_name(self): default_breadcrumb_root(self.foo, '.fooo') with self.app.test_client() as c: c.get('/foo/') self.assertEqual(current_path, 'breadcrumbs.fooo.bar') self.assertEqual(current_breadcrumbs[-1].url, '/foo/') with self.app.test_client() as c: c.get('/foo/baz') self.assertEqual(current_path, 'breadcrumbs.fooo.baz') self.assertEqual(current_breadcrumbs[-1].url, '/foo/baz')
def test_set_default_breadcrumb_root_as_dot(self): default_breadcrumb_root(self.foo, ".") with self.app.test_client() as c: c.get("/foo/") self.assertEqual(current_path, "breadcrumbs.bar") self.assertEqual(current_breadcrumbs[-1].url, "/foo/") with self.app.test_client() as c: c.get("/foo/baz") self.assertEqual(current_path, "breadcrumbs.baz") self.assertEqual(current_breadcrumbs[-1].url, "/foo/baz")
def test_set_default_breadcrumb_root_different_from_blueprint_name(self): default_breadcrumb_root(self.foo, ".fooo") with self.app.test_client() as c: c.get("/foo/") self.assertEqual(current_path, "breadcrumbs.fooo.bar") self.assertEqual(current_breadcrumbs[-1].url, "/foo/") with self.app.test_client() as c: c.get("/foo/baz") self.assertEqual(current_path, "breadcrumbs.fooo.baz") self.assertEqual(current_breadcrumbs[-1].url, "/foo/baz")
from invenio.base.i18n import _ from flask.ext.breadcrumbs import (default_breadcrumb_root, register_breadcrumb, current_breadcrumbs) from flask.ext.menu import register_menu from flask import Blueprint from invenio.ext.template.context_processor import \ register_template_context_processor from invenio.modules.formatter import format_record from invenio.base.decorators import wash_arguments, templated blueprint = Blueprint('es_search', __name__, url_prefix='/es', template_folder='templates', static_folder='static') default_breadcrumb_root(blueprint, '.es_search') @blueprint.route('/') @register_menu(blueprint, 'main.es_search', _('New Search'), order=99) @register_breadcrumb(blueprint, '.', _('ES_search')) @wash_arguments({'p': (unicode, ''), 'of': (unicode, 'hb'), 'so': (unicode, None), 'rm': (unicode, None)}) def search(p, of, so, rm): query = request.args.get("p", "*") if not query: query = "*" facet_filters = [] for ff in request.args.getlist("facet_filter"): facet_filters.append((ff.split(":")))
# -*- coding: utf-8 -*- # # This file is part of Invenio. # Copyright (C) 2015 CERN. # # Invenio is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # # Invenio is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Invenio; if not, write to the Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. """Knowledge Flask Blueprint.""" from flask import Blueprint from flask.ext.breadcrumbs import default_breadcrumb_root blueprint = Blueprint('knowledge', __name__, url_prefix="/kb", template_folder='templates', static_folder='static') default_breadcrumb_root(blueprint, '.settings.knowledge')
from invenio.base.decorators import templated, wash_arguments from invenio.base.i18n import _ from invenio.utils.date import pretty_date from ..models import BibWorkflowObject, Workflow, ObjectVersion from ..registry import actions from ..utils import (get_workflow_definition, sort_bwolist) from ..api import continue_oid_delayed, start blueprint = Blueprint('holdingpen', __name__, url_prefix="/admin/holdingpen", template_folder='../templates', static_folder='../static') default_breadcrumb_root(blueprint, '.holdingpen') REG_TD = re.compile("<td title=\"(.+?)\">(.+?)</td>", re.DOTALL) @blueprint.route('/', methods=['GET', 'POST']) @blueprint.route('/index', methods=['GET', 'POST']) @login_required @register_menu(blueprint, 'personalize.holdingpen', _('Your Pending Actions')) @register_breadcrumb(blueprint, '.', _('Holdingpen')) @templated('workflows/hp_index.html') def index(): """ Displays main interface of Holdingpen. Acts as a hub for catalogers (may be removed) """
from flask import (Blueprint, render_template, request, jsonify, flash, url_for, redirect, abort) from flask.ext.login import current_user, login_required from flask.ext.menu import register_menu from invenio.base.decorators import wash_arguments from invenio.base.i18n import _ from flask.ext.breadcrumbs import default_breadcrumb_root, register_breadcrumb from invenio.ext.sqlalchemy import db from invenio.modules.accounts.models import User, Usergroup, UserUsergroup from .forms import JoinUsergroupForm, UsergroupForm blueprint = Blueprint('webgroup', __name__, url_prefix="/yourgroups", template_folder='templates', static_folder='static') default_breadcrumb_root(blueprint, '.settings.groups') @blueprint.route('/') @blueprint.route('/index') @register_menu( blueprint, 'settings.groups', _('%(icon)s Groups', icon='<i class="fa fa-group fa-fw"></i>'), order=0, active_when=lambda: request.endpoint.startswith("webgroup.") ) @register_breadcrumb(blueprint, '.', _('Groups')) @login_required def index(): """List all user groups.""" uid = current_user.get_id()
"""B2SHARE Flask Blueprint""" from flask import request, Blueprint from flask.ext.login import login_required from flask.ext.breadcrumbs import default_breadcrumb_root, register_breadcrumb from invenio.base.i18n import _ import invenio.b2share.modules.b2deposit.edit as edt import invenio.b2share.modules.b2deposit.b2share_upload_handler as uph import invenio.b2share.modules.b2deposit.b2share_deposit_handler as dep blueprint = Blueprint('b2deposit', __name__, url_prefix="/b2deposit", template_folder='templates', static_folder='static') default_breadcrumb_root(blueprint, 'breadcrumbs.b2deposit') @blueprint.route('/', methods=['GET']) @register_breadcrumb(blueprint, '.', _('Deposit')) @login_required def deposit(): return dep.deposit(request) @blueprint.route('/addmeta/<sub_id>', methods=['POST']) @login_required def addmeta(sub_id): return dep.addmeta(request, sub_id)
def __str__(self): uid = current_user.get_id() dbquery.update_user_inbox_for_reminders(uid) unread = db.session.query(db.func.count(UserMsgMESSAGE.id_msgMESSAGE)).\ filter(db.and_( UserMsgMESSAGE.id_user_to == uid, UserMsgMESSAGE.status == cfg['CFG_WEBMESSAGE_STATUS_CODE']['NEW'] )).scalar() return render_template_to_string("messages/menu_item.html", unread=unread) not_guest = lambda: not current_user.is_guest blueprint = Blueprint('webmessage', __name__, url_prefix="/yourmessages", template_folder='templates', static_folder='static') default_breadcrumb_root(blueprint, '.webaccount.messages') @blueprint.route('/menu', methods=['GET']) #FIXME if request is_xhr then do not return 401 #@login_required #@permission_required('usemessages') #@templated('messages/menu.html') def menu(): uid = current_user.get_id() dbquery.update_user_inbox_for_reminders(uid) # join: msgMESSAGE -> user_msgMESSAGE, msgMESSAGE -> users # filter: all messages from user AND filter form # order: sorted by one of the table column messages = db.session.query(MsgMESSAGE, UserMsgMESSAGE).\
""" Authentication blueprint """ from flask import Blueprint from flask.ext import breadcrumbs auth = Blueprint('auth', __name__) breadcrumbs.default_breadcrumb_root(auth, '.') from . import views
from invenio.base.decorators import wash_arguments, templated from flask.ext.breadcrumbs import default_breadcrumb_root, register_breadcrumb from ..api import start_delayed from ..utils import (get_workflow_definition, get_redis_keys as utils_get_redis_keys, filter_holdingpen_results) from ..models import Workflow, BibWorkflowObject, BibWorkflowEngineLog from ..registry import workflows blueprint = Blueprint('workflows', __name__, url_prefix="/admin/workflows", template_folder='../templates', static_folder='../static') default_breadcrumb_root(blueprint, '.workflows') @blueprint.route('/', methods=['GET', 'POST']) @blueprint.route('/index', methods=['GET', 'POST']) @login_required @register_breadcrumb(blueprint, '.', _('Workflows')) @templated('workflows/index.html') def index(): """ Dispalys main interface of BibWorkflow. """ w = Workflow.query.all() filter_keys = utils_get_redis_keys() return dict(workflows=w, filter_keys=filter_keys)
from invenio.config import CFG_SITE_RECORD from invenio.ext.template.context_processor import \ register_template_context_processor from invenio.modules.search.models import Collection from invenio.modules.search.signals import record_viewed from invenio.utils import apache from .api import get_record from .models import Record as Bibrec from .utils import references_nb_counts, citations_nb_counts, \ visible_collection_tabs blueprint = Blueprint('record', __name__, url_prefix="/" + CFG_SITE_RECORD, static_url_path='/record', template_folder='templates', static_folder='static') default_breadcrumb_root(blueprint, 'breadcrumbs.record') def request_record(f): """Perform standard operation to check record availability for user.""" @wraps(f) def decorated(recid, *args, **kwargs): from invenio.modules.access.mailcookie import \ mail_cookie_create_authorize_action from invenio.modules.access.local_config import VIEWRESTRCOLL from invenio.legacy.search_engine import \ guess_primary_collection_of_a_record, \ check_user_can_view_record from invenio.b2share.modules.main.utils import check_fresh_record # ensure recid to be integer recid = int(recid)
from ..models import Deposition, DepositionType, \ DepositionFile, InvalidDepositionType, DepositionDoesNotExists, \ DraftDoesNotExists, FormDoesNotExists, DepositionNotDeletable, \ DepositionDraftCacheManager, FilenameAlreadyExists, ForbiddenAction from ..storage import ChunkedDepositionStorage, \ DepositionStorage, ExternalFile, UploadError blueprint = Blueprint( 'webdeposit', __name__, url_prefix='/deposit', template_folder='../templates', static_folder='../static' ) default_breadcrumb_root(blueprint, '.webdeposit') def deposition_error_handler(endpoint='.index'): """ Decorator to handle deposition exceptions """ def decorator(f): @wraps(f) def inner(*args, **kwargs): try: return f(*args, **kwargs) except InvalidDepositionType: if request.is_xhr: abort(400) flash(_("Invalid deposition type."), 'danger')
## along with B2SHARE; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. """B2SHARE Flask Blueprint""" from flask import request, Blueprint from flask.ext.login import login_required from flask.ext.breadcrumbs import default_breadcrumb_root, register_breadcrumb from invenio.base.i18n import _ import invenio.b2share.modules.b2deposit.edit as edt import invenio.b2share.modules.b2deposit.b2share_upload_handler as uph import invenio.b2share.modules.b2deposit.b2share_deposit_handler as dep blueprint = Blueprint('b2deposit', __name__, url_prefix="/b2deposit", template_folder='templates', static_folder='static') default_breadcrumb_root(blueprint, 'breadcrumbs.b2deposit') @blueprint.route('/', methods=['GET']) @register_breadcrumb(blueprint, '.', _('Deposit')) @login_required def deposit(): return dep.deposit(request) @blueprint.route('/addmeta/<sub_id>', methods=['POST']) @login_required def addmeta(sub_id): return dep.addmeta(request, sub_id) @blueprint.route('/upload/<sub_id>', methods=['POST'])
""" Main blueprint """ from flask import Blueprint from flask.ext import breadcrumbs main = Blueprint('main', __name__) breadcrumbs.default_breadcrumb_root(main, '.') from . import views, errors
from werkzeug.utils import secure_filename from flask.ext.breadcrumbs import default_breadcrumb_root, register_breadcrumb from flask.ext.menu import register_menu from invenio.base.i18n import _ # from ..signals import template_context_created blueprint = Blueprint( 'about', __name__, url_prefix='/about', template_folder='../templates', static_folder='../static' ) default_breadcrumb_root(blueprint, '.about') @blueprint.route('/') @register_menu(blueprint, 'main.about', _('About'), order=2) @register_breadcrumb(blueprint, '.', _('About')) def index(): """Render the about page.""" # draft_cache = aboutionDraftCacheManager.from_request() # draft_cache.save() # Send signal to allow modifications to the template context # template_context_created.send( # '%s.%s' % (blueprint.name, index.__name__) # , # #context=ctx # )
from invenio.base.decorators import wash_arguments from invenio.modules.search.signals import record_viewed from invenio.modules.search.models import Collection from invenio.modules.records.api import get_record from invenio.modules.records.views import request_record from flask.ext.breadcrumbs import \ register_breadcrumb, current_breadcrumbs, default_breadcrumb_root from flask.ext.menu import register_menu blueprint = Blueprint('invenio_opendata', __name__, url_prefix='/', template_folder='templates', static_folder='static') default_breadcrumb_root(blueprint, '.') def get_collections(): experiments = Collection.query.filter(Collection.id == '1').first_or_404() exp_colls = [] exp_names = [] for exp in experiments.collection_children_v: exp_names.append(exp.name) exp_colls.append( Collection.query.filter(Collection.name == exp.name).first()) return exp_colls, exp_names def get_collection_names(without=[]):
AttachTagForm, \ DetachTagForm, \ EditTagForm, \ TagAnnotationForm, \ validate_tag_exists, \ validate_user_owns_tag, \ validators # Uset settings user_settings = LocalProxy(lambda: current_user['settings'].get('webtag', cfg['CFG_WEBTAG_DEFAULT_USER_SETTINGS'])) blueprint = Blueprint('webtag', __name__, url_prefix='/yourtags', template_folder='templates', static_folder='static') default_breadcrumb_root(blueprint, '.webaccount.tags') @blueprint.route('/', methods=['GET', 'POST']) @blueprint.route('/display', methods=['GET', 'POST']) @blueprint.route('/display/cloud', methods=['GET', 'POST']) @login_required @templated('tags/display_cloud.html') @register_menu(blueprint, 'personalize.tags', _('Your Tags')) @register_breadcrumb(blueprint, '.', _('Your Tags')) def display_cloud(): """ List of user's private/group/public tags """ user = User.query.get(current_user.get_id()) tags = user.tags_query.order_by(WtgTAG.name).all() # Calculate document count for each tag
"""Return static file.""" try: return super(self.__class__, self).send_static_file(filename) except: cache_timeout = self.get_send_file_max_age(filename) return send_from_directory( os.path.join(current_app.instance_path, "docs", "static"), filename, cache_timeout=cache_timeout) blueprint = DocsBlueprint('documentation', __name__, url_prefix="/documentation", template_folder='templates', static_folder='static') default_breadcrumb_root(blueprint, '.documentation') @blueprint.route('/', strict_slashes=True) @blueprint.route('/<path:docname>') @register_menu(blueprint, 'main.documentation', _('Help'), order=99) @register_breadcrumb(blueprint, '.', _('Help')) def index(docname=None): """Render documentation page.""" try: document = blueprint.support.get_document( docname or cfg["DOCUMENTATION_INDEX"]) except DocumentNotFoundError: abort(404) additional_breadcrumbs = [{'text': document['title'], 'url': url_for('.index', docname=docname)}]