Giter VIP home page Giter VIP logo

invenio-app-ils's Introduction

invenio-app-ils's People

Contributors

anikachurilova avatar equadon avatar floriancassayre avatar jrcastro2 avatar konstantinastoikou avatar kpsherva avatar lnielsen avatar nrodriguezcuellar avatar ntarocco avatar pineirin avatar sakshamarora1 avatar topless avatar vlad-bm avatar zzacharo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

invenio-app-ils's Issues

Patron loans history

Retrieve patron loans history using a REST call. The patron can see only her(his) own loans.

Back-office ui: create user session on login

Create a user session with at least userPid and locationPid after login in the React app.
This is needed to perform any loan action.

Currently, they are hardcoded in the UserSession reducer initial state, and they need to be replaced with real values.

Back-office UI: Mockups

Starting from the requirements and the existing pages for circulation, create the initial mock-ups for the back-office UI using balsamiq. Some of the mockups have been done in the past (loan page, item page) so the rest can follow a similar approach.

User actions pages

  • As user, on document page I click on a button to see the document items
  • As user I request a loan (rest call to circulation)
  • As user I cancel my loan(rest call to circulation)

configure circulation

  • Define get_document_by_item_pid, etc.
  • Add a new endpoint to retrieve the loan status of an item

add roles to ils

  • Add Patron, Librarian, Admin roles
  • Add some demo data(items, location, documents)
  • Add permissions per transition

Email notifications: reminders

GOAL
Librarian to be able to send email reminders to the patrons who exceeded the loan end date without returning the book.
System to automatically send the reminder if the book is not returned on time. Configurable variable of how frequent the celery task should be triggered.
Celery task should run every day and send reminders for loans which expire today or X days ago, where X is configurable.

Implementation
Implement rest endpoint with loanid to send the reminder to the current patron of the exceeded loan.
Implement celerybeat task
Use the celery task for sending the manual ones.

Backlog

  • Cookiecutter new instance, setup basic information
  • Define the data model and create the new module repository for ILS
  • Integrate the data model module in this instance.
  • Setup files storage
  • Create user/librarian/admin roles
  • Create extensive documentation: how to use, how to customise

Front site:

  • Customize home page: (responsive)
    • Create "front page collection"
    • Create sub-collections
    • Create menu
  • Customize search: (responsive)
    • grid/list layout
    • row display
    • sorting
    • facets
    • pagination
  • Customize record details page: (responsive)
    • different UI per type: book, volume, series with volumes, articles
    • show attached files
    • similar result section
    • share section
  • Books suggestions: (responsive)
    • Define a customizable sequence of BookRequestSuggestion statuses
    • Create book request form to suggest a book and set it as PENDING
  • Create a user profile page with his requests and statuses
  • Help/FAQ pages

Back-office:

  • Setup tools for back-office forms
  • Form to create/edit/delete a simple book (responsive)
  • Form to create/edit/delete a Series+Volumes (responsive)
  • Files attachment
  • ACL for books
  • Create fixtures for demo data/user
  • Suggested books:
    • Reject a book suggestion
    • Accept and create a book from a suggestion

User privacy:

CERN CDS Overlay (to be moved):

  • Create instance depending to overlay this instance
  • Create the continuous integration DEV environment with local DB, ES, etc...
  • Style home page
  • Style search results
  • Style record details page
  • Style back-office forms
  • Modify/add help/FAQ
  • Test mobile visualization

global: $ref resolvers extras

During the implementation of resolvers several issues popped up.

  • Deprecate JSONSCHEMAS_HOST, it is a dummy domain and it is used from the resolvers to avoid url conflicts with rest api. $ref properties don't work with relative urls and currently we don't have access to request to get our current host.
  • There is an ongoing invenio-records-rest issue with the PID being part of the schema for create and update.
  • Since CDS will wrap ILS our resolvers have to be overridable.

Shared module

Currently we have some modules that are almost identical. Remove duplications and move shared logic and components under shared module.

Remove invenio UI modules

We should remove any invenio module that involves UI and we are not using, such as invenio-records-ui and invenio-search-ui.

Back-office UI: Librarian can see Loan information

Loan details page

  • Implement stateful router to show details page when GET /library/circulation/loans/<loan_pid>
  • render details page for loan (see item, patron, etc...)
  • be possible to perform actions on loan
  • change /backoffice view permissions to be librarian and not login_required only. Add test.
  • write tests for all the ui components

Schemas: mock schemas

  • Document schema
  • Item schema
  • Location schema
  • Document should have a list of item pids
  • Item should have a document pid, location pid, status(missing, on binding, loanable), circulation(ref -> current loan or empty)

Back-office UI: Librarian can see Loan history

Librarians should be able to see an audit log of a Loan. Proposed solutions:

  • expose Loan record revisions through REST API. Drawback: queries can be very expensive due to the size of the table
  • create/use an Invenio Audit feature/module to push audits to a specif ES index.

ui: merge main and backoffice UI in one app

Currently, main and backoffice UI are split in 2 different React apps, so authorization is handled by backend.

We can merge together the 2 apps to simplify the development and enable several features.

Fix loans search permission

This commit has been added to unblock a PR merge, but it should be reverted and fixed.

The issue is that every time an Item is indexed, it will resolve the $ref current circulation status and perform a search to find the corresponding loan. The search is done using IlsLoansSearch which is restricting the patron_pid and if you are not in a request context (like cli) you have g.identity that is None.

A solution has to be implemented to search with permissions but index correctly Items.

(related #25)

Filter the loans by permission (in circulation_state)

Circulation api endpoint for item state returns loan object, if loaned. This should be filtered by permissions, as not every user has permissions to see all the field of a loan (for example, the patron_pid and dates if the loan is on another user).

Tasks

  • Implement a custom serializer in invenio-circulation (or in invenio-app-ils?) for Loan to show/hide/filter loan fields depending on the current logged in user, or None/fail if anonymous
  • Implement a custom serializer in invenio-app-ils for Item to use the Loan serializer and show/hide/filter item/loan fields depending on the current logged in user, or None/fail if anonymous

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.