Skip to content

Commit

Permalink
templating: Document detail
Browse files Browse the repository at this point in the history
NEW Format and show information on document detail page.
BETTER Add black support for code formatting

Signed-off-by: Sébastien Délèze <sebastien.deleze@rero.ch>
  • Loading branch information
Sébastien Délèze committed Jun 21, 2019
1 parent 72b69ac commit 10c0625
Show file tree
Hide file tree
Showing 31 changed files with 874 additions and 614 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ htmlcov/
nosetests.xml
coverage.xml
*,cover
.pytest_cache

# end-to-end testing
.e2e_screenshots
Expand Down
5 changes: 3 additions & 2 deletions Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@ name = "pypi"
[packages]
Babel = ">=2.4.0"
Flask-BabelEx = ">=0.9.3"
invenio = { version = "==3.1.0", extras = ["base", "metadata", "postgresql", "auth", "elasticsearch6" ]}
invenio = {version = "==3.1.0",extras = ["base", "metadata", "postgresql", "auth", "elasticsearch6" ]}
# TODO: remove this contraint once it is solved in invenio
raven = { version=">=6.0", extras=["flask"] }
raven = {version = ">=6.0",extras = ["flask"]}
uwsgi = ">=2.0"
uwsgitop = ">=0.11"
uwsgi-tools = ">=1.1.1"
lxml = ">=3.5.0,<4.2.6"
pycountry = "*"

[dev-packages]
Flask-Debugtoolbar = ">=0.10.1"
Expand Down
229 changes: 117 additions & 112 deletions Pipfile.lock

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion pytest.ini
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
# more details.

[pytest]
pep8ignore = docs/conf.py ALL
pep8ignore =
*.py W503
docs/conf.py ALL
addopts = --pep8 --doctest-glob="*.rst" --doctest-modules --cov=sonar --cov-report=term-missing --ignore=setup.py
testpaths = docs tests sonar
2 changes: 1 addition & 1 deletion run-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# released.
pipenv check --ignore 36759 --ignore 36810 && \
pipenv run pydocstyle sonar tests docs && \
pipenv run isort -rc -c -df && \
pipenv run isort -rc -c -df --multi-line=3 --trailing-comma --force-grid-wrap=0 --use-parentheses --line-width=79 && \
pipenv run check-manifest --ignore ".travis-*,docs/_build*" && \
pipenv run sphinx-build -qnNW docs docs/_build/html && \
pipenv run test
10 changes: 5 additions & 5 deletions sonar/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -269,15 +269,15 @@ def _(x):
'documents': dict(
aggs=dict(
institution=dict(terms=dict(field='institution.pid')),
language=dict(terms=dict(field='languages.language')),
language=dict(terms=dict(field='languages')),
author=dict(terms=dict(field='facet_authors')),
subject=dict(terms=dict(field='facet_subjects'))
),
filters={
_('institution'): terms_filter('institution.pid'),
_('language'): terms_filter('languages.language'),
_('author'): terms_filter('facet_authors'),
_('subject'): terms_filter('facet_subjects'),
'institution': terms_filter('institution.pid'),
'language': terms_filter('languages'),
'author': terms_filter('facet_authors'),
'subject': terms_filter('facet_subjects'),
}
)
}
Expand Down
2 changes: 1 addition & 1 deletion sonar/modules/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@

"""SONAR configuration."""

SONAR_APP_API_URL = 'https://localhost:5000/api/'
SONAR_APP_API_URL = "https://localhost:5000/api/"
61 changes: 34 additions & 27 deletions sonar/modules/documents/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@

"""Documents CLI commands."""

import json
from functools import partial

import click
import requests
from click.exceptions import ClickException
Expand All @@ -19,7 +16,6 @@
from flask.cli import with_appcontext
from invenio_db import db
from invenio_indexer.api import RecordIndexer
from invenio_records import Record

from sonar.modules.documents.dojson.contrib.marc21tojson import marc21tojson
from sonar.modules.institutions.api import InstitutionRecord
Expand All @@ -32,63 +28,74 @@ def documents():
"""Documents CLI commands."""


@documents.command('import')
@click.argument('institution')
@click.option('--pages', '-p', required=True, type=int, default=10)
@documents.command("import")
@click.argument("institution")
@click.option("--pages", "-p", required=True, type=int, default=10)
@with_appcontext
def import_documents(institution, pages):
"""Import documents from RERO doc.
institution: String institution filter for retreiving documents
pages: Number of pages to import
"""
url = current_app.config.get('SONAR_DOCUMENTS_RERO_DOC_URL')
url = current_app.config.get("SONAR_DOCUMENTS_RERO_DOC_URL")

click.secho(
'Importing {pages} pages of records for "{institution}" '
'from {url}'.format(pages=pages, institution=institution, url=url))
"from {url}".format(pages=pages, institution=institution, url=url)
)

# Get institution record from database
institution_record = InstitutionRecord.get_record_by_pid(institution)

if not institution_record:
raise ClickException('Institution record not found in database')
raise ClickException("Institution record not found in database")

institution_ref_link = InstitutionRecord.get_ref_link(
'institutions', institution_record['pid'])
"institutions", institution_record["pid"]
)

# mapping between institution key and RERO doc filter
institution_map = current_app.config.get(
'SONAR_DOCUMENTS_INSTITUTIONS_MAP')
"SONAR_DOCUMENTS_INSTITUTIONS_MAP"
)

if not institution_map:
raise ClickException('Institution map not found in configuration')
raise ClickException("Institution map not found in configuration")

if institution not in institution_map:
raise ClickException(
'Institution map for "{institution}" not found in configuration, '
'keys available {keys}'.format(
institution=institution,
keys=institution_map.keys()))
"keys available {keys}".format(
institution=institution, keys=institution_map.keys()
)
)

key = institution_map[institution]
current_page = 1

indexer = RecordIndexer()

while(current_page <= pages):
click.echo('Importing records {start} to {end}... '.format(
start=(current_page*10-9), end=(current_page*10)), nl=False)
while current_page <= pages:
click.echo(
"Importing records {start} to {end}... ".format(
start=(current_page * 10 - 9), end=(current_page * 10)
),
nl=False,
)

# Read Marc21 data for current page
response = requests.get(
'{url}?of=xm&jrec={first_record}&c=NAVSITE.{institution}'
.format(url=url,
first_record=(current_page*10-9),
institution=key.upper()), stream=True)
"{url}?of=xm&jrec={first_record}&c=NAVSITE.{institution}".format(
url=url,
first_record=(current_page * 10 - 9),
institution=key.upper(),
),
stream=True,
)
response.raw.decode_content = True

if(response.status_code != 200):
if response.status_code != 200:
raise ClickException('Request to "{url}" failed'.format(url=url))

ids = []
Expand All @@ -101,7 +108,7 @@ def import_documents(institution, pages):
record = marc21tojson.do(record)

# Add institution
record['institution'] = {'$ref': institution_ref_link}
record["institution"] = {"$ref": institution_ref_link}

# Register record to DB
db_record = DocumentRecord.create(record)
Expand All @@ -116,6 +123,6 @@ def import_documents(institution, pages):

current_page += 1

click.secho('Done', fg='green', nl=True)
click.secho("Done", fg="green", nl=True)

click.secho('Finished', fg='green')
click.secho("Finished", fg="green")
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@

from .model import marc21tojson

__all__ = ('marc21tojson')
__all__ = "marc21tojson"
Loading

0 comments on commit 10c0625

Please sign in to comment.