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;")
Esempio n. 2
0
    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')
Esempio n. 3
0
    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;')
Esempio n. 4
0
    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")
Esempio n. 7
0
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(":")))
Esempio n. 8
0
# -*- 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')
Esempio n. 9
0
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)
    """
Esempio n. 10
0
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()
Esempio n. 11
0
"""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)

Esempio n. 12
0
    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).\
Esempio n. 13
0
"""
Authentication blueprint
"""
from flask import Blueprint
from flask.ext import breadcrumbs

auth = Blueprint('auth', __name__)
breadcrumbs.default_breadcrumb_root(auth, '.')

from . import views
Esempio n. 14
0
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)
Esempio n. 15
0
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)
Esempio n. 16
0
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')
Esempio n. 17
0
## 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'])
Esempio n. 18
0
"""
Main blueprint
"""
from flask import Blueprint
from flask.ext import breadcrumbs

main = Blueprint('main', __name__)
breadcrumbs.default_breadcrumb_root(main, '.')

from . import views, errors
Esempio n. 19
0
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
    # )
Esempio n. 20
0
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=[]):
Esempio n. 21
0
    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
Esempio n. 22
0
        """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)}]