Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge The Palace Circulation v14.1.0 into E-kirjasto #11

Merged
merged 100 commits into from
Feb 12, 2024
Merged

Conversation

ttuovinen
Copy link
Contributor

@ttuovinen ttuovinen commented Feb 8, 2024

Description

This PR brings in the circulation changes in the upstream until v14.1.0 to E-kirjasto (full changelog: v12.0.0...v14.1.0)

Changes in our code

  • E-kirjasto tests moved from tests/finland to tests/api/finland.
  • Controller files refactored to follow Palace's refactor
  • Minor bugfixes

Checklist

  • I have updated the documentation accordingly.
  • All new and existing tests passed.

dependabot bot and others added 30 commits November 17, 2023 13:25
* Fix parameters for enki call.

* Fix test fixture.
…1494)

This PR changes the data model for our collections in a number of ways with the goal of removing all reliance on external integrations from our collections.

All the database columns and tables "removed" by this PR have just been renamed on the Python side, but left in place for now. Once this goes into a release #1498 can be merged to remove the now unused tables and columns.

The major changes:

    The external_integration_id column has been removed.
    Collections no longer have a name column.
        Previously both integrations and collections had names, this meant that they could get out of sync. Now collection names are driven by the name of their integration. A migration handles making sure that the existing integrations that have gotten out of sync are updated to have their collections name.
    The collections_libraries table has been removed.
        Collections used to be able to be related to libraries in two ways: through the collections_libraries table, and via their integration_library_configuration. This situation was confusing, and meant that these could get out of sync.
    The collection table no longer uses its external_account_id column. This was duplicated between the table and the settings before, it now lives only in the settings. As with the others the column is still present, but is renamed and unused and will be dropped once this is rolled out everywhere.
    The settings column get a gin index, to make it easier to query the jsonb column.
    Some of the properties on the collection class have been moved out to the specific license provider API that used them. These were on the collection model because previously some providers didn't have their own API classes.
        There are still some of these that could be moved into a more suitable location, but that can happen in a follow up PR.
    The collection controller and collection self test controller have been updated to use the integration settings controller base classes. This lets us keep all the logic for updating these settings isolated there. The biggest consequence of this change is that we now pass around the integration ID rather then the collection ID when referencing collections and collection self tests.
        This is transparent to the admin UI, since it just sends back the IDs given to it when it queries for the collection settings.
        This makes the collection controllers act like the other controllers that modify integrations, rather then using different IDs in the collection controller.
    The collection self test controller removes the special case that used to exist for OPDS importer collections, since they now have their own API class.
        This PR removes the self test functionality for the OPDS 1.x importer class, since we don't have any OPDS 1.x collections in our production CMs. Here is a ticket to add self tests for the collection classes missing them (OPDS 2, OPDS 2 + ODL), but this is the situation we've been in for awhile, so no impact from this PR. This PR will make it easier to add these self tests by just implementing the self test interface in the api classes.
        There is also a DB migration to apply these database changes and an associated migration test.
    All the major files touched by this PR are now fully type hinted, and added to the strict mypy group in pyproject.toml.
Bumps [certifi](https://github.com/certifi/python-certifi) from 2023.7.22 to 2023.11.17.
- [Commits](certifi/python-certifi@2023.07.22...2023.11.17)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [types-jsonschema](https://github.com/python/typeshed) from 4.19.0.4 to 4.20.0.0.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-jsonschema
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This will help debug issues occuring in the production environment
* Removed patron synchronization checks for annotations

Now the CM will record annotations regardless of patron settings
Clean up leftover columns from #1494, now that it has gone into a release.
* Active loans are already accounted for.

Because `License.checkouts_available` already accounts for active loans, we
were effectively reducing the number of concurrent loans available.
* Added the should_track_playtime attribute to licensepools

The migrations and migration tests have been added as well
Any 'OPDS for Distributor' audiobooks should be enabled by default

* Importing any Biblioboard feed will result in time tracked audiobooks

* Feed items should contain the playtime links only if the pools allow for it

* Added OPDS based palace:timeTracking parsing

* OPDS2 importer types have been customized

In order to import the custom timeTracking flag the
manifest parser had to be customized with a feed that recognises
the custom attribute in the metadata

The type:ignore stubs are because of the lack of typing information
from the ast.opds2 library

* Default value for should_track_playtime is now False during the migration

* Ignoring the time tracking flag for any non-audio medium

* Removed old migration tests that have been run on production
jonathangreen and others added 24 commits January 8, 2024 12:37
* Migration to clean up overdrive settings.

* Add name to logging, so its easier to see the changes.
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.14 to 2.8.19.20240106.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [pycryptodome](https://github.com/Legrandin/pycryptodome) from 3.19.1 to 3.20.0.
- [Release notes](https://github.com/Legrandin/pycryptodome/releases)
- [Changelog](https://github.com/Legrandin/pycryptodome/blob/master/Changelog.rst)
- [Commits](Legrandin/pycryptodome@v3.19.1...v3.20.0)

---
updated-dependencies:
- dependency-name: pycryptodome
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
- make necessary refactorings into some api controller files
@ttuovinen ttuovinen merged commit 1a58ee4 into main Feb 12, 2024
19 checks passed
@ttuovinen ttuovinen deleted the upstream_v14.1.0 branch February 12, 2024 07:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants