Giter VIP home page Giter VIP logo

invenio-circulation's Introduction

Invenio-Circulation

Invenio module for the circulation of bibliographic items.

This is an experimental developer preview release.

TODO: Please provide feature overview of module

Further documentation is available on https://invenio-circulation.readthedocs.io/

invenio-circulation's People

Contributors

blankoworld avatar equadon avatar floriancassayre avatar garfield-fr avatar inveniobot avatar jma avatar konstantinastoikou avatar kpsherva avatar nrodriguezcuellar avatar ntarocco avatar rerowep avatar topless avatar vlad-bm avatar zzacharo 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

invenio-circulation's Issues

[US] Check-in a requested item

As a librarian, I check-in an item which is requested by another patron, so that it is ready for the next patron (transit or at desk).

Tasks:

  • ...

[US] Validated loans should expire

When a loan is validated, it could be "stuck" in ITEM_AT_DESK (after transit or not) because the patron never picked up the item.

Create a recurrent task to check for this case and take actions on it (delete? Warn user?)

[US] Request an unavailable item

As a patron, I request an unavailable item (already in a circulation process - request, loan, ...), so that I can then borrow it.

[US] Check-out

As a librarian, I check-out an item for a patron, so that he can take it home.

Tasks:

  • Fix the tests
  • #25 Create REST endpoint for checkout
  • #26 Checkout: implement access restriction to the REST endpoints
  • #48 Checkout: Check item availability on checkout

[US] Simple check-in

As a librarian, I check-in an item for a patron, so that he can return it.

  • add a test for this action

blocked by #1

[US] Extend a loan

As a patron, I extend the duration of a loan, so that I have more time.

Tasks:

  • Create transition ItemToLoanToItemToLoan #49

[US] Request on the document level

As a patron, I request a document, so that I can take one of its items home (the system attributes automatically the request to an available item).

Tasks:

  • ...

[US] Having a default circulation policy

As a librarian, I have one default circulation policy applying equally to every loan (the application of this policy can be customized: for example depending on one given patron attribute, item circulation type and item location).

Tasks:

  • generate diagram from the Loan class
  • extend conditions to all actions #28

[US] Check-in with transit

As a librarian, I check-in an item belonging to another library for a patron, so that it will be sent back to its owning library.

  • Implement the check-in action taking into account the item location and any other pending loans on the item.

[US] Display the item availability

As a user, I want to know the circulation availability of an item, so that I can borrow it.

  • Definition of available:
    • missing/on-binding...
    • loanable/consultation...
    • on loan (computed)

Tasks:

  • #29 Create ES mapping and JSON-Schema for loan #37
  • #39 Implement the validate checkout method

Circulation assesment

The purpose of this issue is to avoid exchanging emails and provide our thoughts and ideas for our solution so far and further development.

After spending some time with the existing implementation and requirements, in my opinion we are on a good phase. The solution is flexible enough to handle the cases we thought in advance, but with minor modifications can be adjusted to accommodate any further cases.

There are several user stories that can be expressed as the same query with different parameters, such as requesting available and unavailable items, or handling the same request for a patron or a librarian.

I did a pretty intensive review in the policies pull request, and after going through the pre-work, I see now what we are trying to do with the functions that try to extend policies in the utils.py. I believe we should come up with a pattern or something to provide that extendability or completely isolated under a policies.py file. Either way I believe further discussion is needed on the particular case.

All in all, it would be very nice if anybody had any ideas or thoughts that would like to put under discussion and all together take it to the next level.

Good job everybody!

[US] Cancel a request

As a patron, I can cancel a request I made.

  • handle the case when the item is lost.

Tasks:

  • ...

Cannot `checkout` because of `CIRCULATION_STATES_ITEM_AVAILABLE`

When loan is in state ITEM_AT_DESK and we perform the action checkout, the transition is checking is_item_available.
This function will check if the there is loan on this item, and it will return false because there is actually a loan with state ITEM_AT_DESK.

This function must be changed to exclude the ITEM_AT_DESK loan for the current patron.

Solution

The config variable CIRCULATION_STATES_ITEM_AVAILABLE = ['ITEM_RETURNED', 'CANCELLED'] was supposed to define the list of states for which an item is considered available for loan, but it is not enough and it is very hard to compute the opposite, the list of states for which the item is not available for loan, or to know the last Loan state of an item.

The proposed solution is to replace this config with the opposite, something like:
CIRCULATION_STATES_ITEM_ON_LOAN = ['ITEM_AT_DESK', 'ITEM_IN_TRANSIT_FOR_PICKUP', 'ITEM_ON_LOAN', 'ITEM_IN_TRANSIT_TO_HOUSE']
which defines the list of states for which an item is considered currently on loan. This will ensure that it is easy to compute if given an item_pid there is an existing loan on it.
This change will require to change the methods and factories around item availability.

[US] Validate a request

As a librarian, I validate a request on an available item, so that it is ready for the patron.

Tasks:

  • ...

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.