Exemplo n.º 1
0
def test_get_patron(patron_martigny_no_email):
    """Test patron retrieval."""
    patron = patron_martigny_no_email
    assert Patron.get_patron_by_email(patron.get('email')) == patron
    assert not Patron.get_patron_by_email('not exists')
    assert Patron.get_patron_by_barcode(patron.get('barcode')) == patron
    assert not Patron.get_patron_by_barcode('not exists')

    class user:
        email = patron.get('email')
    assert Patron.get_patron_by_user(user) == patron
Exemplo n.º 2
0
def test_get_patron(patron_martigny):
    """Test patron retrieval."""
    patron = patron_martigny
    assert Patron.get_patron_by_email(patron.dumps().get('email')) == patron
    assert not Patron.get_patron_by_email('not exists')
    assert Patron.get_patron_by_barcode(
        patron.patron.get('barcode')[0]) == patron
    assert not Patron.get_patron_by_barcode('not exists')
    assert Patron.get_patrons_by_user(patron.user)[0] == patron

    class user:
        pass

    assert not Patron.get_patrons_by_user(user)
Exemplo n.º 3
0
def test_patron(reindex, get_borrowed_documents_pids, get_uuid_pid_by_email,
                record_indexer, url_for1, url_for2, send_email, confirm_user,
                app, db, minimal_patron_record, minimal_document_record,
                minimal_item_record):
    """Test patron"""

    # Convenient references
    security = LocalProxy(lambda: app.extensions['security'])
    datastore = LocalProxy(lambda: security.datastore)
    # hack the return value
    get_uuid_pid_by_email.return_value = None, None

    next, pid = save_patron(minimal_patron_record, Patron.provider.pid_type,
                            Patron.fetcher, Patron.minter, record_indexer,
                            Patron, None)
    email = minimal_patron_record.get('email')

    # Verify that user exists in app's datastore
    user = datastore.get_user(email)
    assert user

    # hack the return value
    get_uuid_pid_by_email.return_value = pid.object_uuid, pid.id
    patron = Patron.get_patron_by_email(email)
    assert patron.get('email') == email

    patron = Patron.get_patron_by_user(user)
    assert patron.get('email') == email

    doc = DocumentsWithItems.create(minimal_document_record, dbcommit=True)

    # hack the return value
    get_borrowed_documents_pids.return_value = [doc.pid]
    docs = patron.get_borrowed_documents()
    assert docs[0] == doc
Exemplo n.º 4
0
def init_menu_profile():
    """Create the profile header menu."""
    item = current_menu.submenu('main.profile')
    account = _('My Account')
    user_initials = session.get('user_initials')
    if session.get('user_id'):
        if user_initials:
            account = user_initials
        else:
            patron = Patron.get_patron_by_email(current_user.email)
            if patron:
                account = patron.initial
                session['user_initials'] = account
    else:
        if user_initials:
            del session['user_initials']

    item.register(
        endpoint=None,
        text='{icon} <span class="{visible}">{account}</span>'.format(
            icon='<i class="fa fa-user"></i>',
            visible='visible-md-inline visible-lg-inline',
            account=account),
        order=1)

    item = current_menu.submenu('main.profile.login')
    item.register(
        endpoint='security.login',
        endpoint_arguments_constructor=lambda: dict(next=request.full_path),
        visible_when=lambda: not current_user.is_authenticated,
        text='{icon} {login}'.format(icon='<i class="fa fa-sign-in"></i>',
                                     login=_('Login')),
        order=1)

    item = current_menu.submenu('main.profile.logout')
    item.register(
        endpoint='security.logout',
        endpoint_arguments_constructor=lambda: dict(next='/{viewcode}'.format(
            viewcode=request.view_args.get(
                'viewcode',
                current_app.config.get('RERO_ILS_SEARCH_GLOBAL_VIEW_CODE')))),
        visible_when=lambda: current_user.is_authenticated,
        text='{icon} {logout}'.format(icon='<i class="fa fa-sign-out"></i>',
                                      logout=_('Logout')),
        order=1)

    item = current_menu.submenu('main.profile.signup')
    item.register(endpoint='security.register',
                  visible_when=lambda: not current_user.is_authenticated,
                  text='{icon} {signup}'.format(
                      icon='<i class="fa fa-user-plus"></i>',
                      signup=_('Sign Up')),
                  order=2)
Exemplo n.º 5
0
def init_menu():
    """Create the header menus."""
    item = current_menu.submenu('main.menu')
    item.register(
        endpoint=None,
        text='{icon} <span class="{visible}">{menu}'.format(
            icon='<i class="fa fa-bars"></i>',
            visible='visible-md-inline visible-lg-inline',
            menu=_('Menu')
        ),
        order=0
    )

    order = 10

    def return_language(lang):
        return dict(lang_code=lang)

    def hide_language(lang):
        return current_i18n.language != lang

    for language_item in current_i18n.get_locales():
        item = current_menu.submenu(
            'main.menu.lang_{language}'.format(
                language=language_item.language))
        ui_language = 'ui_language_{lang}'.format(lang=language_item.language)
        item.register(
            endpoint='invenio_i18n.set_lang',
            endpoint_arguments_constructor=partial(
                return_language, language_item.language),
            text='{icon} {language}'.format(
                icon='<i class="fa fa-language"></i>',
                language=_(ui_language)
            ),
            visible_when=partial(hide_language, language_item.language),
            order=order
        )
        order += 1

    item = current_menu.submenu('main.menu.help')
    item.register(
        endpoint='rero_ils.help',
        text='{icon} {help}'.format(
            icon='<i class="fa fa-info"></i>',
            help=_('Help')
        ),
        order=100
    )

    item = current_menu.submenu('main.profile')
    account = _('My Account')
    if current_user.is_authenticated:
        patron = Patron.get_patron_by_email(current_user.email)
        if patron:
            account = patron.initial
    item.register(
        endpoint=None,
        text='{icon} <span class="{visible}">{account}</span>'.format(
            icon='<i class="fa fa-user"></i>',
            visible='visible-md-inline visible-lg-inline',
            account=account
        ),
        order=1
    )

    item = current_menu.submenu('main.profile.login')
    item.register(
        endpoint='security.login',
        endpoint_arguments_constructor=lambda: dict(
            next=request.full_path
        ),
        visible_when=lambda: not current_user.is_authenticated,
        text='{icon} {login}'.format(
            icon='<i class="fa fa-sign-in"></i>',
            login=_('Login')
        ),
        order=1
    )

    item = current_menu.submenu('main.profile.logout')
    item.register(
        endpoint='security.logout',
        endpoint_arguments_constructor=lambda: dict(
            next='/{viewcode}'.format(viewcode=request.view_args.get(
                'viewcode', current_app.config.get(
                    'RERO_ILS_SEARCH_GLOBAL_VIEW_CODE'))
            )
        ),
        visible_when=lambda: current_user.is_authenticated,
        text='{icon} {logout}'.format(
            icon='<i class="fa fa-sign-out"></i>',
            logout=_('Logout')
        ),
        order=1
    )

    item = current_menu.submenu('main.profile.signup')
    item.register(
        endpoint='security.register',
        visible_when=lambda: not current_user.is_authenticated,
        text='{icon} {signup}'.format(
            icon='<i class="fa fa-user-plus"></i>',
            signup=_('Sign Up')
        ),
        order=2
    )
Exemplo n.º 6
0
def test_get_patron_blocked_field_absent(patron2_martigny):
    """Test patron blocked field retrieval."""
    patron = Patron.get_patron_by_email(patron2_martigny.dumps().get('email'))
    assert 'blocked' not in patron
Exemplo n.º 7
0
def test_get_patron_blocked_field(patron_martigny):
    """Test patron blocked field retrieval."""
    patron = Patron.get_patron_by_email(patron_martigny.dumps().get('email'))
    assert patron.patron.get('blocked') is False
Exemplo n.º 8
0
def test_get_patron_blocked_field(patron_martigny_no_email):
    """Test patron blocked field retrieval."""
    patron = Patron.get_patron_by_email(patron_martigny_no_email.get('email'))
    assert 'blocked' in patron
    assert patron.get('blocked', {}) is False