Ejemplo n.º 1
0
def test_circ_policy_create(
        circ_policy_martigny_data_tmp, org_martigny, lib_martigny, lib_saxon,
        patron_type_children_martigny, item_type_standard_martigny,
        patron_type_adults_martigny, item_type_specific_martigny,
        item_type_regular_sion, patron_type_youngsters_sion):
    """Test circulation policy creation."""
    cipo = CircPolicy.create(circ_policy_martigny_data_tmp, delete_pid=True)
    assert cipo == circ_policy_martigny_data_tmp
    assert cipo.get('pid') == '1'

    cipo = CircPolicy.get_record_by_pid('1')
    assert cipo == circ_policy_martigny_data_tmp

    fetched_pid = circ_policy_id_fetcher(cipo.id, cipo)
    assert fetched_pid.pid_value == '1'
    assert fetched_pid.pid_type == 'cipo'

    circ_policy = deepcopy(circ_policy_martigny_data_tmp)
    del circ_policy['$schema']
    cipo = CircPolicy.create(circ_policy, delete_pid=True)
    assert cipo.get('$schema')
    assert cipo.get('pid') == '2'

    cipo_data = {
        '$schema':
        'https://ils.rero.ch/schemas/'
        'circ_policies/circ_policy-v0.0.1.json',
        'pid':
        'cipo_test',
        'name':
        'test',
        'organisation': {
            '$ref': 'https://ils.rero.ch/api/organisations/org1'
        },
        'is_default':
        False,
        'allow_requests':
        True,
        'policy_library_level':
        False,
        'settings': [{
            'patron_type': {
                '$ref': 'https://ils.rero.ch/api/patron_types/ptty3'
            },
            'item_type': {
                '$ref': 'https://ils.rero.ch/api/item_types/itty1'
            }
        }, {
            'patron_type': {
                '$ref': 'https://ils.rero.ch/api/patron_types/ptty2'
            },
            'item_type': {
                '$ref': 'https://ils.rero.ch/api/item_types/itty4'
            }
        }]
    }
    with pytest.raises(RecordValidationError):
        cipo = CircPolicy.create(cipo_data, delete_pid=False)
Ejemplo n.º 2
0
def downgrade():
    """Reset circulation policy records."""
    query = CircPoliciesSearch() \
        .filter('exists', field='pickup_hold_duration') \
        .source(['pid']).scan()
    for hit in query:
        cipo = CircPolicy.get_record_by_pid(hit.pid)
        del cipo['pickup_hold_duration']
        cipo.update(cipo, dbcommit=True, reindex=True)
        LOGGER.info(f'  * Updated cipo#{cipo.pid}')
    CircPoliciesSearch.flush_and_refresh()
    LOGGER.info(f'downgrade to revision {down_revision}')
Ejemplo n.º 3
0
def upgrade():
    """Update circulation policy records."""
    query = CircPoliciesSearch() \
        .filter('term', allow_requests=True) \
        .source(['pid']).scan()
    for hit in query:
        cipo = CircPolicy.get_record_by_pid(hit.pid)
        cipo['pickup_hold_duration'] = 10  # default value is 10 days
        cipo.update(cipo, dbcommit=True, reindex=True)
        LOGGER.info(f'  * Updated cipo#{cipo.pid}')
    CircPoliciesSearch.flush_and_refresh()
    LOGGER.info(f'upgrade to {revision}')
Ejemplo n.º 4
0
def test_circ_policy_create(db, circ_policy_martigny_data_tmp):
    """Test circulation policy creation."""
    cipo = CircPolicy.create(circ_policy_martigny_data_tmp, delete_pid=True)
    assert cipo == circ_policy_martigny_data_tmp
    assert cipo.get('pid') == '1'

    cipo = CircPolicy.get_record_by_pid('1')
    assert cipo == circ_policy_martigny_data_tmp

    fetched_pid = circ_policy_id_fetcher(cipo.id, cipo)
    assert fetched_pid.pid_value == '1'
    assert fetched_pid.pid_type == 'cipo'

    circ_policy = deepcopy(circ_policy_martigny_data_tmp)
    del circ_policy['$schema']
    cipo = CircPolicy.create(circ_policy, delete_pid=True)
    assert cipo.get('$schema')
    assert cipo.get('pid') == '2'
Ejemplo n.º 5
0
def test_circ_policy_create(
        circ_policy_martigny_data_tmp, circ_policy_short_martigny_data,
        org_martigny, lib_martigny, lib_saxon, patron_type_children_martigny,
        item_type_standard_martigny, patron_type_adults_martigny,
        item_type_specific_martigny, item_type_regular_sion,
        patron_type_youngsters_sion):
    """Test circulation policy creation."""
    cipo = CircPolicy.create(circ_policy_martigny_data_tmp, delete_pid=True)
    assert cipo == circ_policy_martigny_data_tmp
    assert cipo.get('pid') == '1'

    cipo = CircPolicy.get_record_by_pid('1')
    assert cipo == circ_policy_martigny_data_tmp

    fetched_pid = circ_policy_id_fetcher(cipo.id, cipo)
    assert fetched_pid.pid_value == '1'
    assert fetched_pid.pid_type == 'cipo'

    circ_policy_data = deepcopy(circ_policy_short_martigny_data)
    del circ_policy_data['$schema']
    cipo = CircPolicy.create(circ_policy_data, delete_pid=True)
    assert cipo.get('$schema')
    assert cipo.get('pid') == '2'

    cipo_data = {
        '$schema':
        'https://bib.rero.ch/schemas/'
        'circ_policies/circ_policy-v0.0.1.json',
        'pid':
        'cipo_test',
        'name':
        'test',
        'organisation': {
            '$ref': 'https://bib.rero.ch/api/organisations/org1'
        },
        'is_default':
        False,
        'allow_requests':
        True,
        'policy_library_level':
        False,
        'settings': [{
            'patron_type': {
                '$ref': 'https://bib.rero.ch/api/patron_types/ptty3'
            },
            'item_type': {
                '$ref': 'https://bib.rero.ch/api/item_types/itty1'
            }
        }, {
            'patron_type': {
                '$ref': 'https://bib.rero.ch/api/patron_types/ptty2'
            },
            'item_type': {
                '$ref': 'https://bib.rero.ch/api/item_types/itty4'
            }
        }]
    }
    with pytest.raises(ValidationError):
        cipo = CircPolicy.create(cipo_data, delete_pid=False)

    # TEST #2 : create a second defaut policy
    #   The first created policy (pid=1) is the default policy.
    #   Creation of a second default policy should raise a ValidationError
    default_cipo = CircPolicy.get_record_by_pid('1')
    assert default_cipo.get('is_default')
    with pytest.raises(ValidationError) as excinfo:
        CircPolicy.create(circ_policy_martigny_data_tmp, delete_pid=True)
    assert 'CircPolicy: already a default policy for this org' \
           in str(excinfo.value)