All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- SUSHI management page now shows statistics about the day of month when the data typically becomes available
- the platform selector widget was improved to allow for searching by both short and long names
- links to individual titles added to annotated CSV files are newly split to individual columns to allow the links to render correctly in Excel
- an option to only allow consortial managers to manage users was added
- make it possible to create a custom platform from the dropdown when uploading data manually
- more information was added to the list of stored reports in reporting (author, etc.)
- tag class was added to the detailed information for title lists used tagging by tag names from the uploaded file
- warning is newly shown when the same credentials are used for multiple platforms, or by multiple organizations (in consortial installations)
- support for storing items and related usage was added - it is considered beta and is not yet exposed in the UI
- overlap analysis was reworked to only use types of interest which imply title availability on a platform - not denials.
- the 'Add platform' button was removed from the platform list page (it confused people into thinking it added platform to the displayed list)
- links to knowledgebase on non-COUNTER list page were redesigned to be more visible
- server-side pagination is used when listing manual data uploads to speed up the page load
- SUSHI yearly overview dialog was reworked to show 2 years by default and allow up to 5 years to be displayed on a single page
- in reporting, the maximum number of displayed parts was limited to 1000 to prevent performance issues
- the SUSHI management page was reworked for new users to include an introductory video
- the 'SUSHI status' dashboard panel was reworked to show a hungry CELUS logo when no SUSHI is set up yet
- data harvest planning was reworked to use statistics of past harvests to better predict when the data will be available
- when a SUSHI URL of a platform is updated automatically from the knowledgebase, the last two months are automatically harvested if the data is missing
- platform selector on the SUSHI month overview page did not work correctly
- date range selector is hidden when displaying the cost tab on the platform page
- use lowercase report names in debug SUSHI URLs in the SUSHI credentials dialog
- the number of queries run by the
update_for_month
harvest planning function was reduced significantly - fix false warning about 'Dropping inconsistent order by "_total"'
- more resilient parsing of /etc/os-releases was implemented
- use django's standard smtp email backend for error handling when mailgun is not used
- error was fixed when tagging titles from a file containing explicit tag names and using a tag class owned by an organization
- 'too many open files' error was fixed in reporting when exporting report with many parts into Excel format
- platform short-name uniqueness is newly enforced even when updating existing platforms
- in reporting, it is now possible to order the rows by the row totals
- in reporting, when "merge rows by tag" is active, it is now possible to order the results by the tag name
- when "merge rows by tag" is active, tags from classes which have been marked as hidden by the user are no longer shown in the report - unless the class was explicitly selected by the user
- after email verification, the user is automatically redirected to the dashboard without needing to click on a button
- the "Introductory tour" feature was removed (it was buggy anyway)
- when removing users from the UI, the account is actually deleted when removed from the last organization
- clashing import batches (usually in situations where the same data is requested while a download is in progress) are not shown by default in the list of downloads
- a one-second delay was added between downloads from the same SUSHI URL to ease the load on fast SUSHI servers (thanks to ScholarlyIQ for reporting this issue)
- an error in reporting causing unresponsive "Run report" button when report type was changed under specific conditions was fixed
- a bug causing Celus not to respect the 1020 (too many requests) SUSHI exception was fixed (thanks to ScholarlyIQ for reporting this issue)
- a CLI script was added to export and import fetch attempts to aid with accidental data deletion recovery
- support for user invitations when external SSO is enabled was added
- various dash types (n-dash, m-dash, minus) are now normalized to a single character during ISSN and eISSN normalization
- deleting data from Clickhouse was optimized to delete more than one import batch at once
- export to COUNTER format was made visible to non-admin users
- endless loop in websocket reauthentication when the user session expires was fixed
- bug causing errors when saved report with platforms in rows was modified to merge rows by tags was fixed (result ordering is invalidated when row merging is toggled)
- a typo in the documentation leading to incorrect API endpoint URL was fixed
- COUNTER registry domain name was updated to the new one (fixes CORS issues)
- loading of Excel files with credentials which do not include row number information (as produced by Google Sheets) was fixed
- extra safety features were added to the necronomicon app for deleting data (remove unfinished batches after one day, re-check stats before delete, etc.)
- make it possible to apply filters from standard reports to full reports in reporting with one click
- warn users against possible metric summation in reporting
- make it possible to use proprietary IDs for matching titles in title tagging and title overlap
- statistics of events was added to the exported prometheus metrics
- make it possible for a superadmin to disable second factor authentication for a user
- improve Django admin for events
- API endpoint for getting output of a stored report was added
- send notifications about regular reprocessing of internal title lists to superusers
- change display of report type selection in charts, etc.
- show full reports first
- call full reports "full reports" (not customizable reports)
- only add real standard views to the standard views section
- prefer full reports when showing charts for individual import batches or manual data uploads
- better error message was added when uploading an incompatible XLS file
- metadata from SUSHI responses are extracted during download rather than during import
- cleanup in SUSHI harvesting code was performed and some unused code was removed
- use skip-magic-trailing-comma for ruff format
- the
django-prometheus
library was removed from the project
- on title page, make sure the title is loaded before trying to show proprietary IDs
- missing values in chart tooltips under specific conditions were fixed
- fix pagination of the events list with a large number of events
- second factor authentication display was fixed for superusers without verified email
- deterministic selection of titles during data import when several candidates with equal score are present was introduced
- do not use ContentFile when storing C4 reports
- do not create events about title list reprocessing if the list is not owned by a user (e.g. for internal title lists)
- make sure that a valid email OTP device exists for each user after login
- get around a race-condition in locking the next tagging batch to reprocess
- unused OTP plugins were removed reducing the number of queries to the database per request
- system of "events" for in-app notifications was introduced
- possibility to export data in COUNTER format was added to the platform page (under Data management)
- it is now possible to mark unsuccessful harvests as empty data under "SUSHI management"/"Overview"
- fiscal year based data ranges were added to the data range selector with the possibility to select the start month of a fiscal year
- data coverage information was added to exports from the reporting module
- email-based two-factor authentication was added to all accounts
- more details about SUSHI exceptions is now shown for individual harvests
- when uploading reports for multiple organizations, information about organizations with clashing data is now shown
- list of proprietary IDs was added to the title detail page
- tags can be now created directly from the title list creation dialog
- CLI script was added for creating internal tagging batches from a CSV file
- a welcome event is created when a user account is created
- an introductory event for existing users was added
- unless manually changed, the SUSHI server URL will be taken from the platform metadata and automatically updated when the platform is updated
- search was enabled in the platform filter selector on the SUSHI status page
- import of "Celus format" was removed from the import format options (unless turned on in the settings)
- clickhouse integration has been modified in several ways
- plain MergeTree engine with lightweight deletes is used in favor of CollapsingMergeTree
- synchronization between the main database and Clickhouse was optimized and fixed for cases where titles were merged together
- dictionaries were added to make mapping of integer IDs to strings possible
- it is now possible to get the knowledgebase API key from settings instead of storing it in the database
- add extra info into the request logs about use of API key authentication and content of error responses
- more SUSHI exceptions are newly considered as partial data
- username and organization name were added to the subjects of emails about new registrations
- some obsolete settings were removed
- specialized code to add Scopus title list tags was removed - standard tagging may be used instead
- a bug in reporting leading to incorrect number of possible values being shown after a text search was used was fixed
- do not show the user edit dialog unless ALLOW_USER_MANAGEMENT=True - edit attempts would cause errors otherwise
- the date selector widget is properly hidden on pages where it is not needed
- translations for the account management page were fixed
- display of data from one harvest/manual upload no longer displays the whole selected date range, but rather the range of the data itself
- debug links to the SUSHI server are now shown only for COUNTER 5 (and higher) credentials
- bug preventing change of tag class visibility under certain conditions was fixed
- coverage display on platform page with non-COUNTER data no longer causes errors
- extra check for existing data is done before a planned attempt to harvest data is made - fixes creation of clashing import batches for newly verified credentials
- normalize emails before checking them using the Octopus protocol
- fix email verification for installations where both password and shibboleth authentication are enabled
- only consider user's main email address when checking email verification status
- support for the 2023 version of the ACRL IPEDS report was added to the list of specialized reports
- a built-in OA (Open Access) tag class was added with two tags (DOAJ and DOAB) marking titles as listed in the respective directories
- algorithm for detection of the last covered year was fixed to match previous year in February (not March)
- when uploading a source file in an unsupported format, a more helpful error message is now shown
- error display in the ReportViewSelector was fixed
- reporting module export was fixed to only include tags visible to the user
- Clickhouse version used in Gitlab CI was fixed to get around a bug in the latest version
- the frontend code was updated to compile using node 18; support for version 16 was dropped
- the overlap computation was optimized to use less memory and be faster
- a more effective method is used to list all tags visible to a user resulting in slight performance improvement
- the API for external access was extended to allow COUNTER registry IDs for platform identification
- a more compact method of passing list of object IDs is used to request list of tags associated with them. This fixes a problem with some URL strings being too long for the server on large Celus installations
- error when too large a file is uploaded to the title list page is now handled more gracefully
- error when uploading table data in a file with an unrecognized encoding is now handled more gracefully
- the coverage widget was fixed not to offer harvesting of missing data to read-only users
- when manually uploading data for a platform which is private to one organization, the organization is now automatically selected and cannot be changed
- alignment of icons in the application top bar was fixed
- problem with the platform overlap computation over-reporting the number of titles under specific conditions when viewed for the whole consortium was fixed
- the language preference API endpoint was fixed after Django upgrade
- access of read-only users to harvesting data and harvest processing was reviewed and fixed where necessary
- several minor inconsistencies in the platform-title support table were fixed
- inconsistencies between the main database and clickhouse caused by title merging were fixed
- potential race condition in creating organization-platform links was fixed
- interface for managing organization users was added to organization admins
- reharvesting of data is now possible directly from the harvest dialog
- report selection was added to the harvest dialog to allow for limiting the harvest to a subset of reports
- values of filters are now shown on the report and export list pages - no need to open the report detail
- filtering of reports by row dimension and visibility was added to the report list page
- when running a report directly from the report list, the current report is newly highlighted
- two new states were added to the montly SUSHI status overview to indicate broken and past last harvestable month credentials
- NTFY integration was added for admin notifications
- menu entry
non-COUNTER platforms
was renamed tonon-SUSHI platforms
to better reflect the nature of the platforms listed there - autocomplete is now used for selecting platforms when uploading data manually
- during an ongoing harvest, progress checks with the backend are done progressively less often to reduce the load on the server
- default logo was changed from "Celus Plus" to "Celus"
- logic for displaying platforms in the list of non-COUNTER platforms was changed to use info about presence of support web article
- Excel files incorrectly detected as 'application/CDFV2' are now accepted as XLSX files
- the
pycounter
library was replaced by our internal fork (celus-pycounter
) - all internal git based dependencies were replaced by pip based dependencies
- ratelimitting was added to admin emails
- a separate list of customer care admins was added for specific notifications (e.g. user registration)
- handling of errors connecting to the CDN in presence of security proxies was fixed
- more graceful handling of situations where uploaded file contains more than one report was added
- error importing COUNTER 5 reports with missing
Performance
key was fixed - error importing some COUNTER 5 reports when Python 3.8 was used was fixed
- filtering by tag class (not only by individual tags) was added to reporting
- "last harvestable month" was introduced for SUSHI credentials - Celus will not try to harvest data for months after this date. It is automatically extracted from failed reports and may be set/overridden by the user.
- tagging titles from a title list newly supports getting tag names from the uploaded file, rather than being selected manually
- tagging titles from a title list newly supports automatic periodic re-tagging of new titles
- report type selection is no longer necessary when uploading COUNTER data - Celus will detect it automatically
- confirmation step was added to the manual data upload process to let user know what report type was detected
- page title was added to all pages - makes history, bookmarks and browser tabs more useful
- link to knowledgebase articles was added to several pages
- file size information was added to the list of harvest attempts
- support for importing data from XLS (older Excel format) files was added
- tag management was improved to allow for easier creation of new tags
- users newly see not only the title lists they uploaded, but also those related to tags and tag classes they can assign
- tags are newly applied to titles immediately after they are selected - no confirmation is needed
- the templates for SUSHI credentials batch upload were polished for more consistent formatting
- more user-friendly error messages were added to the manual data upload process
- code cleanup + typo fixing was performed in the backend code
- lazy imports were added to the nibbler library to speed up startup of Celus
- API key based authentication was sped up by using a newer version of the corresponding library
- CSV processing throughout Celus was unified to use the same library
- tags for platforms occasionally not loading was fixed
- when tag roll up is switched off, computation of remainder is automatically switched off as well
- creation of organization-platform link records was fixed to work more reliably
- processing of title lists containing the BOM character was fixed
- expanding a row in the list of stored reports no longer messes up the formatting of the table
- displaying of errors on the platform list page was fixed
- an occasional database deadlock when deleting SUSHI credentials together with all the data was fixed
- the command line script
export_analytical
no longer crashes when output file is not explicitly specified
- in tag management, it is now possible to hide some tag classes from being listed together with the tagged items (e.g. in reporting output, "All titles", etc.)
- in reporting, it is now possible to expand the resulting table to whole screen for easier reading
- the coverage widget in reporting newly contains a tooltip and links to the coverage overview page
- consortium admins now can see debug links to the configured SUSHI server in SUSHI credentials dialog
- user django admin now contains number of associated organizations and limits data sources in filter to the used ones
- cli script for computing statistics about saved reports was added
- title lists without any matched titles are now displayed differently to make them more obvious
- when an open-ended time range is selected, default date range for reporting will end at the last "covered" month (the one before the last finished month)
- colors of some of the buttons and other elements was reviewed after the recent UI changes
- the nibbler library was updated to version 9.0.1 fixing some bugs and adding support for multi-organization TR reports and per-organization stats in preflight
- export of reports with titles in rows was optimized to use much less memory and be much faster for smaller reports
- a database constraint permitting only one import batch for one organization-platform-report-month combination was added
- per api-key throttling was added to the external API to prevent spikes in usage
- title list parsing was significantly sped up by adding a database index (about 40x speedup for large databases and title lists)
- interest and materialized reports are calculated during the data import step to prevent temporary inconsistencies in the user interface
- tags which are not "assignable" by the user are no longer offered when title list is being processed
- locales were fixed in several places
- CSV files with BOM are now properly parsed when uploading title lists
- fix reporting coverage error when date range has open end and no data are available
- "trend mode" allowing comparison of usage data between two periods was added to the reporting interface
- data coverage widget was added to the reporting interface
- interface for superusers to run CLI commands from the UI was added
- row and column totals were added to CSV exports from reporting
- import of SUSHI credentials from a XLSX file was implemented as a CLI script
- a CLI script for exporting all usage data into a CSV file for ingestion into an analytical database was added
- the UI was slightly reworked - some unused elements were removed, menu icons were made smaller, the color scheme was changed and many small improvements were made
- when a COUNTER report is uploaded using the non-COUNTER upload interface, the proper report is auto-detected and the method switched to COUNTER
- the setting for including totals into reporting output newly influences the exports, not only the UI
- on small screens a pointer is shown to navigate user to the details on the coverage overview page
- do not allow the user to do anything in the UI until he has verified his email address
- it is now possible to change the organization during a preflight of manually importing data
- naming of stored reports was moved into a dialog to make it more obvious
- handling of the 3040 SUSHI exception was changed - data get ingested immediately and re-harvest is scheduled for the future (previously Celus made several retries before accepting the data)
- SUSHI exception 3060 no longer causes the whole credentials to be marked as broken - only the problematic report is disabled
- Clickhouse support was added to the external API
PlatformReportView
endpoint - performance of the
clean_obsolete_platform_title_links
celery task was improved
- error causing charts of manually uploaded data for the TR report being empty was fixed
- validation of SUSHI URL in the credentials magement dialog was relaxed to allow
/report/
in the path as long as it is not the last part of the URL
- error in the external API endpoint
api_platform_report_data
when attempt had no intention object associated was fixed - a crash in Django admin for
SushiFetchAttempts
when credentials link was missing was fixed - a fix for deadlock occurring during deleting of data in Celery was introduced
- several random failures in the test suite were fixed
- a crash was fixed in the preflight process of importing multi-organization non-COUNTER reports
- cachalot caching was disabled during exports from reporting to prevent large memory consumption
- memory consumption of reporting exports was reduced
- a hint that titles are filtered by tags was added to the reporting page
- the login dialog newly accepts the email address passed as a query parameter
- a CLI script was added to export credentials for which the SUSHI URL does not match the knowledgebase URL
- simple API for secure testing of user account existence was added
- the
source
field was removed from the Dimension model - organization and platform names are now sanitized before being used as part of file names
- parsing of COUNTER 4 reports with incomplete headers was fixed
- the missing
Unique_Item_Requests
metric was added to the COUNTER 5 TR_J1 report - reporting sometimes incorrectly used materialized report which was missing the queried dimension when generating list of possible dimension values
- the
Titles on multiple platforms
page newly adds span of YOP from the TR report to each platform for a title.
- a command line script for looking up a title in all related JSON report files was added
- when viewing a list of titles, the page newly resets to the first page when the user changes the filters - this prevents the user from being stuck on a page with no results
- dedicated page for overview of data coverage throughout the whole system was added + it allows automatic harvesting of missing data
- a dashboard widget with overall data coverage was added
- download of a template for importing of SUSHI credentials was added to the SUSHI management page
- row and column totals were added to Excel exports from reporting + row totals are now displayed in the frontend
- in reporting it is now possible to export data in Excel format without charts
- interface for adding alternative names (alt-names) to organizations was added
- platform filter was added to the SUSHI management page
- the
Title overlap
feature newly adds information about the first and last month of available data for each title - when deleting SUSHI credentials, it is now possible to delete the related usage data as well
- prometheus metrics were extended to include database object counts for common models
- export of SUSHI credentials was improved and now uses .xlsx format
- 'Include rows with zero usage' option is newly only enabled for some types of rows. It is disabled where Celus does not have a correct source of list of possible values (e.g. for all titles available on a platform)
- explicit information was added to the harvest dialog that it is safe to close it without interrupting the harvest
- unicode errors are now handled more gracefully when parsing uploaded title lists
- manual harvests resulting in no data with the 3030 exception are now marked as finished instead of failed
- automatic harvesting scheduled for the future will overwrite empty data if the harvest is successful (previously the harvesting would be canceled as duplicated)
- performance of the
sync_materialized_reports_task
celery task was improved significantly thus reducing the delay before data is harvested and visible in the frontend
- error preventing change of access level for stored reports from 'consortium' to 'organization' was fixed
- fix issue with creating tag classes with visibility set to 'organization'
- it is not possible to create an organization alt-name with the same value as the organization short name or full name anymore
- display of Y-axis values with a high number of digits in charts was fixed by dynamically calculating the space required for the values
- fix error which prevented stored reports using tags for organization filtering from being edited
- fix error preventing title details from being displayed when the title has no usage data
- prevent frontend from (under specific conditions) re-requesting data for harvests which are already finished
- organization admins are now able to see details of automatic harvests related to their organization
- missing last month in the coverage chart was fixed
- file format validation for XLSX files was fixed for cases where the mime-type was detected as application/octet-stream
- metrics synced from the knowledgebase no longer create duplicate entries when their equivalent already exists in the database
- several random false test failures were fixed in the test suite
- email verification for installations where user registration is not permitted no longer returns a 404 response
- database constraint was added to prevent creation of duplicate connections between user and organization
- production deployment no longer uses the browseable API view
- support for the ACRL IPEDS report was added to the
Specialized reports
section - interest type
Multimedia
was added - it is now possible to import empty table reports (reports with no data) into Celus and thus create correct coverage records for the platform and dates at hand (only when nibbler library is used for parsing)
- when deleting platform data, it is now possible to delete the related SUSHI credentials as well
- when manually uploading non-COUNTER data, a link to the knowledgebase may be now shown to get users to more information about the format
- the title overlap function newly adds info about first and last month of available data for each title
- logging of celery tasks into an external database was added
- only one set of SUSHI credentials is now allowed per organization, platform and COUNTER version
- existing conflicting SUSHI credentials can no longer be edited unless the conflict is resolved
- the
Specialized reports
section was reworked to allow for more reports to be added in the future and to improve the export functionality - link to the tags documentation was changed to point to the knowledgebase
- comparison of imported data with past data during manual data upload was optimized for better performance
- the recache module was optimized to skip caching of fast queries and to remove unused cache entries earlier
- CLI scripts for interest recomputation and materialized report recalculations were improved to support report type filters
- CLI script for loading SUSHI credentials from a file was improved to include the title column and use case-insensitive matching of platform names
- scheduling of new harvests was improved to reduce the number of database queries and run faster
- when checking a newly created custom platform name against existing platform names, other custom platforms were not taken into account
- when creating tag class with permissions depending on the organization, the organization was not properly sent to the backend resulting in a permission error
- comparison of imported data with past data during manual data upload was fixed to work correctly when working with multi-organization imports
- synchronization of ParserDefinitions with report types was fixed to work correctly when several interest groups are present
- the
nibbler
library was updated to be more lenient toward common misspellings when parsing COUNTER 5 reports - reporting export into Excel format no longer creates a
tags
series for the chart - data files of manual data uploads are explicitly closed to prevent errors related to too many open files
- don't crash in admin when short_name of a new organization already exists
- deleting of all platform data is now allowed independent of the
ALLOW_USER_CREATED_PLATFORMS
setting - the
clean_obsolete_platform_title_links
task was optimized for speed and prints progress information to prevent the task from seeming to hang - incorrect sheet reference format in formulas in Excel exports of specialized export was fixed
- error in specialized reports caused by multiple metrics with the same name was fixed (fixes problems with the Rebiun report on run.celus.one)
- a new function was added to overlap analysis section -
Title list overlap
. It allows users to compare titles present in Celus against an uploaded title list. - the reporting section was expanded with
Specialized reports
page. It contains synthetic reports for specific use cases which go beyond the normal reporting capabilities. At present, it contains theRebiun report
used in Spain and theARL report
used in the USA. - it is now possible to delete a user-created platform together with all its data
- release dates were added to the changelog and releases pages
- pages not requiring an organization to be selected are now visible even when no organization is selected
- the old version of the
Rebiun report
was removed from platforms list page
- when the
nibbler
library is used to parse COUNTER data, Celus now does more check on the report header to prevent user errors in selecting the correct report
- infinite loading of content of an empty harvest was fixed
- error in reporting causing occasional errors when reloading data after report change was fixed
- error which prevented some users from leaving impersonification mode was fixed
- Celus can autofill the appropriate value when a platform requires the
platform
SUSHI parameter
- COUNTER 4 table reports may now optionally be parsed by the
nibbler
package rather than thepycounter
library (can be influenced byENABLE_NIBBLER_FOR_COUNTER_FORMAT
)
- new section about external access to Celus was added
- optimization: periodic retreival of progress of a harvest newly only transports info about the changes, thus saving a lot of bandwidth and computation resources for large harvests
- SUSHI exceptions are properly extracted from SUSHI responses even if they arrive with an HTTP status code >= 500
- optimization: saving SUSHI credentials was sped up significantly
- optimization: the SUSHI monthly overview was sped up significantly
- optimization: accesslog list API for manual data uploads and import batches now uses pagination and has optimized performance
- the way Clickhouse tables are created was changed to use a separate CLI script
- unused
primary_dimension
attribute was removed from theReportDataView
model
- error when trying to edit a custom platform was fixed
- periodic synchronization with the knowledgebase was fixed to include all synchronized models
- allow
null
ininterest_group
when downloading report types from knowledgebase API - deleting of past celery task results was blocked by a foreign_key which was removed
- release dates were added to the changelog
- platform interest definition is now configured from the knowledgebase for platforms with support for raw non-COUNTER data import
- a simple CLI command was added to assign COUNTER registry IDs to platforms from a CSV file
- optional logging of diagnostic information from web API requests to a clickhouse database was added
- sorting of titles by tags was disabled - it was not useful and caused performance issues
- optimization: the number of database queries used when creating a harvest with many months was significantly reduced
- the speed of the harvest API endpoint was improved dramatically for cases where platform filter was used
- scheduler crashes when processing canceled fetch intentions were fixed
- missing
counter_registry_id
field was added to the platforms API endpoint - synchronization with the knowledge base was made more robust
- the COUNTER registry was integrated into the SUSHI credentials edit dialog giving extra information about the credentials for platforms in the registry
- a basic "Troubleshooting" page for SUSHI was added containing the IP addresses of the Celus server to be used when IP authentication is required
- a list of non-COUNTER platform for which raw data import is supported was added as a separate page
- remember the page size of the SUSHI credentials table between visits
- a periodic task was added to sync report types and parser definitions with the knowledgebase
- the so-called "Spanish report" was renamed to Rebiun report and added to the list of available views on platform list page
- only store the parser definitions for raw non-COUNTER data which are compatible with the
current version of the
nibbler
library - use a nicer format for displaying the
nibbler
parser definitions in admin - ensure that all related report types are visible in charts - regardless if they have an explicit report view associated or not.
- display of coverage when the 'All available' date range was selected was fixed
- the number of queries in the
month-overview
API endpoint was reduced
- SUSHI credentials edit dialog only showed one platform if more of them shared the same name
- warn users when the date range is not limited for the "Spanish report"
- optimization: make sure the platform list only loads tags once
- optimize the loading time of platform page by using smarter approach to stored reports
- optimization: reduce the memory footprint of the CLI script for removing unused titles
- optimization: reduce the number of queries in PlatformViewSet to improve performance
- optimization: optimize speed of the annotations endpoint
- fix bug in the
delete_batches_targets
celery task
- all charts now show the whole selected date range even if there is no data for some months (if the end of the range is open, the chart will end with the last calendar month)
- the data coverage tab on title page was extended to split the coverage by platform
- more information about the report (rows, split-by) was added to the exports list
- a check for the file type of the uploaded file was added to the title list page
- several pages listing items (titles, organization, platforms, harvests) now store their settings (sorting column, sorting order, page size) in the URL, making it possible to share the link and get the same view and to use the browser's back button to return to the previous view
- a test version of an overview page for Spanish libraries was added under the
/spanish-report
URL
- parsing of the internal Celus format for non-COUNTER data has been reimplemented in the nibbler
library. It is now possible to activate this new parser by setting the
ENABLE_NIBBLER_FOR_CELUS_FORMAT
environment variable totrue
. - added
is_admin
andis_consortial_admin
filters to User model in django admin - it is now possible to enable import of raw non-COUNTER reports on a per-organization basis
export
action was added to theUser
model in django admin- Clickhouse support was added to the
possible-values
endpoint in the reporting API - support for asynchronous deleting of platforms and organizations was added to the django admin
- the backend now sends email notification to admins when a new organization is created by a user
- When a new report is created in the reporting module, it inherits the filters for currently selected organization and date range
- All organizations are now selected by default in the first session of consortium admin (instead of the first organization in the list)
- sorting of titles, harvests and fetch-intentions in corresponding tables was fixed for cases where the sorting column values were not unique. This caused issues when switching between pages - some rows may have been missing or duplicated.
- action icons on the sushi fetch attempt list were optimized to take less space
- data coverage display on title level without a platform selected was fixed to include only the relevant platforms
- the SUSHI credentials edit dialog was refactored to remove the possibility of previously entered data passing into the next instance of the dialog
- when SUSHI harvesting returns 3031 (data not available for the requested date range) even after 1.5 months, the download is now marked as failed instead of being closed as "empty data".
- when SUSHI credentials are edited, the corresponding chains of retries (for 3031, 3030, etc.) are no longer broken leading to incorrect counting of previous attempts
- header data are extracted from COUNTER reports even for failed downloads (e.g. 3031, 3030, etc.)
- sorting is now working for organizations in the django admin
- automatically created organization-specific sources were fixed to contain a unique name (fixes a bug where it was not possible to create new custom platforms for some organizations)
- when creating custom platforms, the source is properly set to the organization-specific source, not the source used for the organization itself.
- empty
platform
attribute is no longer stored when SUSHI credentials are saved - display of the list of harvests was fixed for cases where sorting was switched off
- changelog for the oldest versions was fixed and the changelog API endpoint was fixed for platforms where UTF-8 is not the default encoding
- deleting from Clickhouse was fixed to avoid slow performance for some queries
- tags were introduced (this feature needs to be explicitly enabled in settings to activate it)
- the ability to tag titles, platforms and organizations was added
- the possibility to tag titles loaded from a CSV file was added
- full support for tag based filtering and summarization was added to reporting
- it is now possible to upload data for multiple organizations from one CSV file
- a simple page listing all organizations was added to consortial installations
- filtering by whole years was added to reporting
- simple chart output was added to reporting
- reporting - show the number of accessible organizations to make it obvious that a filter may be necessary
- show accessible stored reports from reporting on the platform list page
- "data coverage" chart series was added to all reports except interest (this feature needs to be explicitly enabled in settings to activate it)
- data coverage tab was added to the platform detail page (this feature needs to be explicitly enabled in settings to activate it)
- show a link to the source file in the list of manually uploaded data
- help widget (sidebar) was added to the dashboard and tag list pages
- reporting - users can now manually delete exports
- reporting - exports are now automatically deleted after 7 days
- charts which do not have a metric on one of the axes now display a metric selector to choose which metric will be used (previously all interest defining metrics were used)
- changelog view was added to the UI (linked from the version number in the footer)
- a list of releases with their main changes was added together with alerts for new releases
- the manual upload of data was reworked to
- separate import of COUNTER and non-COUNTER reports
- new experimental feature to import data non-COUNTER data from a raw format obtained from the publisher was added
- the ability to import non-COUNTER data for multiple organizations from one CSV file was added
- it is now possible to create system-wide platforms using the UI (for consortial managers only)
- 'Select all' button was added to the SUSHI credentials overview dialog to allow selecting of all available slots at once
- documentation was updated with parts about tags and tagging
- a script was added for finding and removing import batches without data and for resolving conflicting import batches
- CLI script for tagging titles using the (publicly available) Scopus title list was added
- information about supported report types was added to the platform information from the knowledgebase
- automatic resolving of differences between database and clickhouse was added to the CLI script
- celery task for periodic checking of sync between database and clickhouse was added
- the "Extra attributes" section in SUSHI credentials dialog was reworked to better handle specifics of individual COUNTER versions
- most forms were modified to support submitting with the Enter key
- reporting - when no data were found, display an explicit message instead of an empty table
- reporting - the default report type was changed to COUNTER 5 TR instead of interest
- "Ad hoc report" menu entry was renamed to "Create report"
- tooltips are disabled in the platform overlap widget when the table is too large to avoid performance issues
- images used in the
FirstSushiHelpWidget
were updated to match the current UI - in reporting the default visibility was fixed not to include values not available for the current user
- possible crash in reporting XLSX export was fixed when a report was empty
- COUNTER 5 report processing was made stricter to avoid errors on publisher side
- the
nigiri
library was moved to a separate repository - if no report view is defined for a report type, a proxy view is returned to allow for some data display
- charts can be marked as
default
. Such charts will be shown for proxy report views (see above) - a field listing duplicates of a platform record was added to enable storage of this information
- a much faster algorithm for computing platform overlap was introduced
- the CLI script for importing of SUSHI credentials was extended to allow for using SUSHI URL from the knowledgebase rather than from the file itself
- missing leading zeros are automatically added to ISSNs given as plain number
- performance of the
raw-data
API endpoint was optimized - allow syncing of report type dimensions with the knowledgebase if the report type is not yet used in any usage data
- unique_together database constraints were added to the
ReportInterestMetric
model
- handle
unknown
state in the data presence information in harvesting dialog - prevent the "Basic tour" to be activated on pages where the necessary elements are not present
- it is no longer possible to have no organization selected in the top menu bar
- null values are remapped to "- empty -" in charts to prevent them from being omited
- the header of the introductory "wizard" (shown where no data are yet present for the current user) was prevented from overflowing to the text on small screens
- sorting was disabled for columns which do not have natural sorting order (actions, etc.) in several tables (annotation, manual data uploads, interest overview, etc.)
- incorrect display of "success" icon instead of "empty data" icon for some downloads was fixed
- SUSHI credentials verification is checked immediately after the test dialog is closed to avoid the need to reload the page
- double loading of data for the Dashboard top-titles widgets was fixed
- a corner case where stale data could be displayed in reporting when ordering of data was changed during data loading was fixed
- the title 'Harvesting credentials' was changed to 'Harvesting data' in the harvesting dialog
- the number of queries in the impersonation API was optimized
- detection of CSV encoding and dialect (used delimiter, etc.) was improved
- automatic resync with clickhouse after a previous sync failed was fixed
- detection of differences between the database and clickhouse was fixed to cover all cases
- celery task for periodic checking of database-clickhouse synchronization was added
- automatic resolving of differences between database and clickhouse was added into the CLI command
- 'unknown' state in data presence view in harvesting dialog was fixed
- incorrect state when doing resync in clickhouse after error was fixed
- some missed cases where detection of database-clickhouse difference did not work correctly were fixed
- add missing reader for IR_M1 reports in table form
- update CLI script
check_report_type_dimensions
to also create missing COUNTER reports
- allow deleting of user accounts from Django admin by allowing deleting of impersonation logs
- use constant memory mode when creating Excel exports in reporting
- do not try to translate '-- blank --' id into title name
- show import errors in dashboard SUSHI overview widget
- fix sorting by title attributes (such as ISSN, ISBN, etc.) in reporting
- fix locking of SUSHI credentials by adding the missing
can_lock
attribute to the API endpoint - fix situation where it was not possible to leave impersonation of a user without an assigned organization
- fix regression in sorting by explicit dimensions in reporting
- reset pagination when report is changed in reporting
- fix celery task name for cleaning obsolete platform-title links
- fix incorrect behavior of harvest planing after credentials are verified
- fix computation of data-presence by using ImportBatch presence rather than FetchAttempt status
- properly store owner attributes when saving a new report
- skip custom platforms from other organizations when importing SUSHI credentials using CLI
- fix regression which caused automatic harvesting of new SUSHI credentials to be off by default
- fix styling inconsistencies of platform and title detail pages if user got there directly without visiting a different page before
- fix planning of new intentions for last month not respecting already harvested data
- when reporting SUSHI status from the API, prefer fetch intentions with import_batch over newer ones without it.
- the code for merging titles was sped up to avoid "timeouts" in celery jobs
- visiting a page of a title with ISBN caused the user to be logged out due to an error when fetching cover image data from Google. The cover image functionality was removed to fix the issue.
- SUSHI credentials are newly marked as verified on first successful use. Automatic harvesting is only enabled for verified credentials.
- user role "consortial user" was added - it has the same access level as normal user but can see data for all consortium members without them being explicitly assigned
- possibility to delete all platform usage data from the platform detail page was added
- a new tab 'Data management' was added to the platform detail page
- more options were added to the data range selection widget
- support was added for retrieving report type information from knowledgebase
- a CLI script was added to move credentials with all the associated data into a new custom platform
- raw data export functionality was moved to the 'Data management' tab
- SUSHI credentials export now respects the selected organization and platform
- the SUSHI related dashboard widgets are no longer shown to non-admin user
- the default displayed data period was changed from 'all' to 'current + last two whole years'
- retries of failed SUSHI harvesting were modified:
- only automatically created harvest are retried
- retries are done only for credentials which were verified (successfully used for harvesting)
- retries are done for all non-breaking fetch attempt states
- partial data downloads are marked as containing no data until imported at the end of the retry period
- validity of invitations and password reset tokens was extended from 3 to 10 days
- the user detail API endpoint was extended to include the
is_staff
attribute - automatically created harvests are planned a few days before month start, not whole month
- the platform detail page of a platform not connected to the current organization no longer displays error messages and contains more information about the platform
- fix missing metric (and potentially other objects) names in exports from the reporting module
- all import batches are shown in the delete confirmation dialog, not just the first 10
- user preferred language is always explicitly selected on the backend to ensure correct data localization
- marking SUSHI credentials as broken no longer lead to duplication of stored extra parameters
- access rights to the SUSHI credentials API endpoint was fixed to only include admin users
- the django admin list interface for import batches now shows
date
instead ofuser
- possibility to impersonate another user was added to the consortium administrator users
- periodic housekeeping jobs were added to remove obsolete platform-title links, merge matching titles and synchronize platforms with knowledgebase.
- the v-charts library was replaced by vue-echarts (the former was not maintained anymore)
- information about interest definition was moved to the
Content
section of the menu - when displaying raw harvested data, additional records (such as interest or materialized data) are not shown anymore
- empty data in SUSHI response without a corresponding exception are treated as having exception 3030
- Celus newly tries to re-harvest data from failed attempts (regardless of the error) if the credentials were successfully used to harvest some data lately
- reporting speed was optimized in case when non-zero rows are not requested, most significantly those with titles in rows
- cli commands for reimport and subsequent analysis were extended and improved
- an error in title merging caused by incorrect order of update and delete was fixed
- lowercase 'x' as last character of ISSN is replaced by upper case 'X'
hcube
was update to speed up deleting of data from Clickhouse in newer versions
- synchronization with knowledgebase unassignes
counter_registry_id
from platforms which no longer use it
- Celus newly stores checksums of files from SUSHI or manually uploaded and checks them on import to prevent against potential data corruption or attacks
- merging of titles was fixed not to merge titles with the same name but without any common ID
- a cli script for merging title out-of-band was added
- reporting - export of reports split by year and month was fixed
- users logging in by EduID are no longer warned about missing email validation
- data import was sped up by factor of about 5 with about 2x memory reduction
- the SUSHI credentials edit dialog autofills the URL based on existing credentials for other organizations
- cli command for assigning reports to platforms was added
- cli command for comparison of the current database with an older version was added to help in finding differences after data reimport
- more detailed fields in SUSHI credentials edit dialog are disabled until the platform is selected
- cleaner method for recaching aggregate queries in AccessLog table was implemented
- detection of last interest change was optimized by remembering the last change time
- django admin was extended to support reimport of manual data uploads
- email about preflight errors is sent to admins asynchronously
- the
reimport_data
cli command was improved
- placeholder text for data upload was made more generic to reflect really supported formats
- when showing status of harvest, full data are preferred over partial data
- all fetch intentions are now shown when the mode is set to 'All', not just latest ones
- when validating the SUSHI URL, check
/reports/
not/report/
- Gitlab CI config for coverage was fixed
- pagination was added to the platform page to show the number of platforms present
- ISSN without hyphen (just digits) support added
- filtering of titles by eISSN was fixed
- regression of pycounter not being properly updated in 4.4.0 was fixed
- superfluous import batches created for attempts with 3030 error code when migrating from very old Celus versions were removed
- progressbar was added to the manual data upload page
- top menubar now hides organization and date range selectors on pages where it is not used
- SUSHI exceptions 3050, 3060, 3061 and 3062 do not cause import error if data is also present in the response
- import of multi-month files was sped up considerably
- reimport script was improved with more verbose output and other changes
- obsolete code related to
Dimension.type
was removed - several unused fields were removed from
ReportTypeSerializer
- API for manual data uploads was optimized for speed and data size
- API for finding existing data for new harvests was sped up
- SUSHI APIKey maximum size was increased to 400 to support some strange platforms
- filtering of titles by eISSN was fixed
- several small fixes and optimizations in Django admin
- pycounter was updated to fix error in date handling in specific situations (when the date range in header differs from the actual data)
- export function was added to the SUSHI management page
- merging of titles between incoming data and database was fixed for cases where only name and proprietary IDs are available. Lowercasing of İ was tweaked.
- preflight data were extended to include:
- information if a metric was previously used for the selected report type
- comparison of imported data with average of previous year and the same month in previous year
- Django admin for Report Types was extended to include the list of interest defining metrics as an inline
- reporting improvements:
- make visibility level tooltip part of the selector
- when starting new report, select something by default to make it 'runnable' immediately
- add list of organizations to metadata if organization is not in rows, columns, split_by or filtered
- Celus ignores the
Severity
attribute in C5 SUSHI (marked as obsolete in CoP 5.0.2)
- SUSHI status dashboard and monthly overview were fixed to correctly display waiting harvests (COUNTER exception 3031)
- regression in formatting of log data in expander of list of attempts was fixed
- error in harvesting when dealing with in-memory files was fixed
- ignoring
Severity
(see above) fixes errors when importing data with exception 1011 which had incorrect severity
- new view of Interest definition was added (available under Administration/Interests)
- progress bar was added to reporting when list of individual parts is loaded
- manual data uploading was improved
- it is now possible to return to data upload from the 'preflight' step
- error reporting was improved to handle some specific cases better
- progress indicator was improved
- report types are now alphabetically sorted in reporting and use the autocomplete widget
- SUSHI harvesting dashboard widget and SUSHI status page were fixed not to include incorrect
Waiting
entries for reports successfully harvested
- when downloading large files, make sure they are really flushed to the disk before trying to parse them
- race condition in locking of manual uploads was fixed - fixes manual data sometimes not being
imported and getting stuck as
importing
.
- reporting was extended to include
- splitting reports by a specified attribute into several files/sheets
- export to Excel format
- metadata about the export in a separate file/sheet
- export now has name taken from the report which created it
- show data extracted from SUSHI header (organization name and 'Created-By') together with each download
- harvest list UI was improved with a platform filter, info about currently processed downloads, etc.
- when uploading data manually more heuristics about used metrics are presented
- processing of manually uploaded files was optimized for speed
- titles newly store proprietary IDs and URIs extracted from COUNTER data
- the Platform dimension is newly extracted from COUNTER reports and stored in the database
- extract data from SUSHI header and store them with harvested data (data reimport is required to fully take advantage)
- Celus version was added to the prometheus exporter
- cli script was to check if report type dimensions match reader classes
- manual uploads are by default sorted by date
- processing of manually uploaded data was moved to the backend process. This fixes timeout issues when processing large files
- it is now possible to disable automatic creation of metrics on a per-installation basis
- it is now possible to limit the set of metrics allowed for a report
- the way how incoming titles are compared with the database has been changed to merge titles which only differ in some identifiers being empty (data reimport is required to fully take advantage)
- normalization is newly applied to ISBNs
- normalization and cleanup was added for ISSNs and ISBNs which ensures length restrictions
- the django-error-report module was removed
- deleting of data for one month for specific credentials deletes all related downloads - not only the last successful one.
- synchronization with knowledgebase was fixed to prevent creation of duplicated records
- flush file to disk after it was downloaded - may fix situation when a large file is downloaded by the sushi celery worker and it appears as incomplete in the import worker
- The annotations list table now shows the dates and text of the annotations in an expansion panel
- Manual data uploads are sorted by the upload date by default (not randomly ordered)
- It is now possible to reharvest data for months where the data was empty
- Very slow parsing of some manual data uploads caused by slow date parser was fixed
- a new page for management of annotations was added
- it is now possible to delete manually uploaded data from the "SUSHI overview" view
- deleting of data was improved to show more details about deleted data
- when manually uploading data, conflicting existing data are detected and presented to the user with the option of deleting them
- encoding of manually uploaded files is automatically detected
- new model
FetchIntentionQueue
was introduced to bind together follow-upFetchIntentions
created after SUSHI error 3031 or 3030
- the SUSHI management page now uses the whole page even on large screens
- the "Save" button in SUSHI editing dialog is disabled when save is in progress to prevent double-clicking related issues
- the SUSHI overview dialog always shows one more year than there are existing data for
- intervals of re-checking not-yet-available recent data by SUSHI (exception 3031) were changed from 1,2,4,8,16,32 days to 1,2,4,8,8,8,8 days (for 3030 the intervals remain at 1,2,4,8,16,32 days)
- automatic harvesting ending in SUSHI error 3040 (partial data) newly leads to retries similar to 3031
- several required Python packages were updated - most notably Celery
- feature: added brin index to ImportBatch.date
- performance of the API endpoint for retrieving report-views was improved
- a
timestamp
field was added to the FetchIntention model - a
date
field was added to the ImportBatch model - unused
system_created
field from ImportBatch was removed - detection of "broken credentials" was extended to cover more SUSHI statuses
- the
create_organization_api_keys
CLI management command was improved - an empty ImportBatch object is now created after the last attempt in a queue of attempts with the 3030 or 3040 SUSHI errors
- manual uploads model was modify to use several ImportBatches - one for each month of data
- when the connected knowledgebase source no longer exports a platform, its knowledgebase related data are cleared up
- SUSHI exceptions of type
Info
are now correctly processed and stored
- no longer relevant ongoing requests to the backend are cancelled on the Harvest and SUSHI overview pages
- duplicated FetchIntentions are now properly handled on the SUSHI overview page (no more cases where successful attempts are also marked as scheduled for future harvesting)
- the "Top 10" widgets on the dashboard now properly react to change of the displayed time range
- menu is automatically expanded when the user navigates to a child page without using the menu (for example to the SUSHI management page from the dashboard widget)
- Overlap of text and widget in the test harvesting dialog was fixed
- data migration fixing several problematic ImportBatch states was added
- code to determine when interest should be recalculated when interest definition changes was optimized
- skip index for
import_batch_id
was added to Clickhouse to improve deletion speed - fix cases where celery did not properly close open sushi-attempt related files
- gracefully handle situations when
Item_ID
is null in SUSHI C5 reports
- IP addresses of Celus harvesters are no longer hardcoded in the code, but rather configured in Django settings.
- a slower but more memory efficient method of synchronization between Django database and Clickhouse was added
- more information (username, etc.) was added to the error message sent to admins when an error occurs during manual data upload
- activation and deactivation of shown interest types on platform page was fixed (regression introduced in 4.0.0)
- active reports are properly synchronized when credentials are edited after being selected for harvesting
- fixed - manual upload of incorrect data always ended up displaying message about UTF-8 encoding (regression introduced in 4.0.0)
- when harvesting data using SUSHI, overview of existing data is shown and months with existing data are automatically skipped
- it is now possible to delete SUSHI data from the "Overview" dialog in SUSHI management
- months with already planned harvesting are marked with a badge in the "Overview" dialog
- rows with zero usage are removed from advanced reporting output by default, it is possible to configure reports to add them
- upload of another file is offered in the last step of manual upload
- outstanding HTTP requests to the backend are cancelled when user switches pages, thus improving frontend responsiveness (especially when quickly leaving dashboard page after initial load)
- support for synchronization of log data into Clickhouse was added
- management command was added to remove titles without any associated usage data
- management command was added to remove orphaned files from sushi harvesting
- management command was added for comparing the main database content with Clickhouse
- menu sections for reporting and overlap analysis were renamed based on user feedback
- selection of organization and platforms when adding new SUSHI credentials was optimized for space
- downloads resulting in SUSHI exception 3030 (no usage) are now shown with the "empty data" icon rather than the "error" icon
- when switching between tabs on the platform detail page, the chart data get automatically reloaded to make sure they are up to date
- more informative error messages are shown when incorrect encoding it used for manually uploaded CSV files
- javascript libraries were updated
- older data harvested using SUSHI for a period longer than one month were split to individual months for easier management (deleting and re-harvesting)
- CSV "sniffing" size was increased to improve accuracy of format dialect detection
- python libraries were updated
- when adding new platform, warning of potential clash with existing platforms now works correctly
- remove background request for unused chart data on the dashboard page
- manual upload of data is no longer permitted if all organizations are selected
- rare database constraint error when creating new title records during data import was fixed
- properly handle exceptions coming from the pycounter library when importing C4 data
- check for correct site.domain configuration were added when sending user invitations
- disabling of cachalot in test settings was fixed
- ensure than only enabled languages are available for user selection in Django admin
- export of empty data no longer crashes with "KeyError"
- different method of filtering fetch-intentions for particular credentials was introduced. It fixes cases where more than one set of credentials was used for the same organization and platform which resulted in records being mixed together
- a regression in dashboard SUSHI chart was fixed to include waiting harvests (broken in 3.2.4)
- a regression was fixed in API providing fetch-intention data - it had a slow response and data were incomplete (broken in 3.2.4)
- support for using HTTP proxy for SUSHI requests was added to nigiri for C5
- test for
/report/
as part of SUSHI URL was fixed to prevent false positives likehttps::/report.foo.bar/
- platform
short_name
is used ifname
is blank to prevent showing platforms with blank name - tooltip for icons in SUSHI status was fixed
- the API to get status of "fetch attempts" was removed in favor of "fetch intentions" (is related to the above fix of tooltips)
- server log messages about user identity were changed from
error
todebug
importance
- invitation links were fixed after switch to dj-rest-auth broke their functionality
- fix scheduling of FetchIntentions added by migration for older FetchAttempts - fixes overload of celery by endless stream of tasks without effect
- expiration was added to all celery tasks planned by celerybeat to avoid accumulation of tasks in queue if celery does not handle them quickly enough
- harvest API endpoint was optimized for speed
- clicking on individual downloads on the monthly overview page displayed details for incorrect download
- API keys are now automatically exported to knowledgebase server
- Django was upgraded from the 3.1 to the 3.2 branch
- all COUNTER reports are offered for manual upload - regardless if they define interest or not
- it is now possible to export SUSHI credentials from the Django admin
- API key based authentication for specific API endpoints was implemented
- API endpoint for access to "raw" data for individual reports was added with API key access
- speed up loading of list of manual uploads by identifying import batches with their IDs only
- the API and related code for SUSHI harvesting was cleaned up by removing unused/obsolete code
- internal working of fetch attempt state was changed from several booleans into a progression of specific states
- replace django-rest-auth with dj-reset-auth
- manual data upload model was added into Django admin
- do not cache queries with empty result - removes delay between first data is harvested and displayed for new users
- list of platforms for an organization was made accessible using API key authentication
- deployment of requirements using requirements files for pip was dropped in favor of poetry
- the registration link did not properly work on first load
- the celery task for updating approximate number of records for a report type was not correctly scheduled
- do not respond by server error when user creates a platform with
short_name
that is already used - parsing of exceptions from COUNTER 5 table format was made more robust
- code to derive SUSHI exception severity from a response was made more robust
- some less important columns are hidded from the SUSHI management page on smaller screens
- year selection for harvesting of SUSHI data was limited to years after 2010
- slow loading of SUSHI fetch attempt data was fixed by using server-side pagination
- users with organization admin privileges are no longer denied access when manually importing data
- automatic deduction of title type using ISBN and ISSN was fixed to work in more cases, most notably for manually uploaded data
- performance of several API endpoints was fixed by optimizing the number of database queries
- data for SUSHI overview are correctly serialized even if harvested year is lower than 2000
- state of SUSHI fetch attempts marked as crashed because they were already imported was fixed (it no longer shows as crashed)
- buttons for immediate harvesting and cancellation of harvests planned for later were added
- partial-data status was added to
FetchAttempt
information - Celus frontend now checks the version of the backend and forces refresh if the versions do not match
- support for IR_M1 report was added
- ability to trigger postponed re-imports via celery was added to Django admin
- harvest list view was extended and improved
- the 'Harvest selected' button on 'SUSH management page' was changed for better visibility
- all views were updated to stretch to the whole available space where the UI benefits from it
- empty harvests were hidden from harvest views
- obsolete
Attempt overview
view was removed from the UI - the name of the organization created by the user after registration is limited to 100 characters
- user-created platforms and report types are marked with a special badge for easy recognition
- if a status filter is active on the sushi monthly overview page, it is automatically disabled when month is changed if there are no records with this status for the newly selected month
- Celery task locking was switched from Redis-based locks to database locks where appropriate
- extra whitespace is stripped from string values imported from C5 tabular format
- obsolete backend code related to the
Attempt overview
view was removed - database unique constrains for
short_name
andsource
were reworked - a Django setting was added to selectively allow manual upload of COUNTER data only
- speed and number of queries for listing harvest intentions was optimized
- when changing selected organization, the list of available platforms on the
manual upload
page is automatically refreshed - date related filters were not copied when a report was copied
- 'untried' fetch-intention status was fixed to actually work
- sushi monthly overview no longer prematurely hides the loading progress bar which was confusing
- harvests planning for the current month was fixed
- fixed regression in SUSHI credentials edit dialog which caused selected report types to sometimes appear empty when viewing the first set of credentials
- Interest is not longer missing from the list of report types in the Reporting module
- position of 'Add annotation' and 'Add platform' buttons on the platform list page was adjusted for full visibility
- SUSHI harvesting progress dialog newly shows activity even between individual harvests
- integer overflow error was fixed in code determining how long to wait for new data when showing harvest progress
- use organization and platform
short_name
if full name is not available in the harvest list view
- memory consumption of importing data from a very large JSON files was optimized by processing files in chunks
- translation admin is properly used for all models using database translations
- uniform report type ordering is used in the SUSHI data view
- speed of resolving possible dimension values in report editor was dramatically improved in some cases - most notably when creating reports with titles in rows
- new materialized reports will not be immediately used until they are populated with data. This prevents intermittent loss of data in charts when new materialized reports are introduced
- removal of whole harvests in Django admin was implemented
- numerical dimensions (only YOP in TR for COUNTER) were migrated to text in order to simplify code and database schema
- ordering reports by primary dimension was fixed
- loading of date filter in report editor was fixed
- filtering by YOP is now possible in reporting due to the above mentioned change of dimension type
- adding filter for organization did not work properly when specific organization was selected globally
- advanced reporting module - allows creation of custom reports by selecting desired output rows and columns with possible filtering.
- per credentials overview of harvested data was added. It shows harvests by years and allows quick reharvesting of missing data.
- it is now possible to create and edit platforms in the UI
- support for reading COUNTER 5 reports in table format was added
- management command for detection of conflicting import batches was added
- management command for removal of empty fetch attempts was added
- management command for removal of obsolete platform-title links
- the left sidebar was reworked using collapsible entries to save space
- harvest overview was extended with more information
- it is now possible to only download data for one month using the "Save and test" button in the SUSHI credentials edit dialog
- when using the "Harvest selected" button for manual harvesting, the harvest is split into separate downloads for individual months
- crashed data imports are now marked as a distinct state with its own icon
- harvest scheduling was switched to the new system by default. This means that future harvests are planned automatically in advance and past data have to be explicitly harvested by the user.
- HTTP authentication information was removed from COUNTER 5 SUSHI credentials as it is not used there
- better handling of SUSHI exceptions 1030, 2010 and 3060 was added. Errors 1030 and 2010 causes credentials to be marked as broken
- scheduler admin was improved
- fix reporting of used metrics for interest related charts when materialized reports are used in the background
- harvest view was optimized for speed
- error when clearing search text on SUSHI management page using the "x" icon was fixed
- error which caused reports types sometimes not appearing when editing SUSHI credentials was fixed
- update Cachalot to a newer version containing our fix for temporary disabling of Cachalot
- fixes memory problems when exporting large amounts of raw data
- fix for error causing users to be disconnected from their organizations upon login of other user when live ERMS sync was used was ported from 1.0.x
- database constraints enforcing uniqueness in combination with
source
were fixed to properly handlesource
being null. - scheduling of harvests for new months was fixed to wait until month end before attempting to harvest data for that month
- reevaluation of queries by recache was fixed - it did not occur because of wrong celery config
- ordering of platforms in several menus was fixed
- SUSHI status dashboard widget size when loading data was fixed (it was too high and thus caused "jumping" of the content during data loading)
- empty dates in harvest overview table no longer cause the table to get stuck
- manual data CSV files containing BOM (Byte Order Mark) are properly parsed
- computation of interest in presence of materialized reports has been fixed (it resulted in erroneous 3x increase in interest in some cases)
- harvest detail view stopped refreshing when some download was rescheduled for later
- count of finished downloads in a harvest was inconsistent between the harvest table and the detail view.
- more transparent form validation was added to the SUSHI edit dialog
- new view for individual harvest progress was added and used for SUSHI testing dialog and harvest detail view
- SUSHI server URL is filled in automatically when data is available from knowledge-base
- highlight supported report types when corresponding data is available from knowledge-base
- icons in statistics row on monthly overview page are clickable and allow filtering of table rows
- the SUSHI edit dialog was overhauled for clarity and simplicity
- detection of currently running harvests was optimized for speed (by using explicit attributes rather then transaction state)
- Celery was updated to new major version 5.0 (5.0.2)
- it is now possible to add annotations from platform list and platform detail pages even when no existing annotations are present
- favicon was replaced with new logo
- 'Portfolio optimization' tab on 'Platform overlap analysis' page tells user to select at least one publication type if none was selected
- List of platforms was reduced to only those with usage data or SUSHI credentials even when all organizations are selected to make it consistent with single-organization view
- Django updated to the 3.1 branch (3.1.3)
- text on 'Portfolio optimization' tab on 'Platform overlap analysis' page was replaced by the correct one
- fetch intentions with broken credentials are not properly identified and described in harvest detail dialog
- add more robust detection of Exception codes from COUNTER 5 SUSHI data - ignores even more common mistakes providers make.
- broken credentials are properly skipped when processing scheduled harvests
- add more robust detection of Exception codes from COUNTER 4 SUSHI data (ignore namespaces which many providers mess up, etc.)
- fix detection of broken credentials based on error codes extracted from SUSHI headers
- two new views for platform overlap analysis were added
- "portfolio optimization" which finds the platforms most important for covering user interest
- "cancellation simulation" which allows interactive simulation of the impact of removing a platform or platforms
- new dashboard card with SUSHI overview was added showing the number of credentials and their status
- password change dialog was added to the user page
- new mechanism for planning SUSHI harvesting introduced in 2.6.0 was improved and is used for manual data harvesting. Automatic harvesting will switch to the new code in release 2.8.0
- support for COUNTER 5 IR and COUNTER 4 MR1 reports was added
- changing organization in the toolbar does not lead to reload and redirect to dashboard. The current page updates automatically instead.
- references to CzechELib on the user page were replaced by more generic wording
- broken credentials are now shown separately in the SUSHI status dashboard chart
- new Celus logo was introduced
- reading of PR reports was fixed to use fields specific to the PR report
- fix wrong sorting of platforms in some browsers on platform overlap page
- view for platform overlap with all other platforms was added including interest overlap
- new mechanism for planning SUSHI harvesting was added. It will replace the currently used code in release 2.7.0
- manual harvesting uses the new code for SUSHI harvesting
- platform-platform overlap view was polished and improved
- API urls for user registration were completely disabled for installations without user registration
- deleting DataSource no longer deletes objects created from that source
- logarithmic scale for platform interest chart was fixed
- recache re-evaluation is done periodically by a celerybeat task rather than each object planning its renewal separately. This should get rid of multiplication of celery tasks as observed in some installations.
- error causing data sometimes not being downloaded from platforms with rate limiting was fixed
- error introduced in 2.5.0 leading to charts not respecting selected date range was fixed
- scheduling of recache renewals was changed to get around multiplication of renewal tasks observed in production
- "broken" credentials are reported to the user using a warning icon in the side menu
- support for identifying and handling "broken" credentials on the SUSHI management page was added
- subtitle was added to charts with date on X-axis to distinguish between normal and year-to-year view
- Platform overlap table was added as an overall view of how many titles are shared amongst platforms
- specific errors during SUSHI harvesting result in credentials being marked as "broken". Such credentials are not automatically harvested and have to be fixed by the user.
- legend icons in charts were changed to make it obvious they can be selected and unselected
- manual harvesting dialog title and text was fixed (it referred to testing)
- SUSHI credentials edit dialog checks for credentials on the same platform with the same name even when editing existing credentials
- display of the SUSHI management page on large screens was fixed
- harvesting of COUNTER 4 JR1GOA reports was fixed
- year-to-year comparison chart was reworked to reduce the number of colors and make it more readable
- title names are shortened in cards on dashboard page
- new dashboard panel with SUSHI status chart for last two month replaces the "Interest histogram" panel
- new menu section "Analytics" was added with the "Overlap analysis" page showing titles available from more than one platform
- it is possible to mark report types as default for interest calculation. Such reports are automatically added as interest reports to newly created platforms
- platform selector in SUSHI credentials dialog is now filterable
- SUSHI intro wizard displayed when no SUSHI credentials are defined correctly disappears when credentials are added outside of the wizard
- processing of COUNTER 4 BR3, JR1a and JR1GOA reports was fixed
- preliminary support for centralized source of data for Celus (Celus brain) was added
- it was not possible to save credentials with title after running the test without changing the title
- properly report attempts to fetch SUSHI data that span more than one month in the monthly overview (SUSHI status)
- show Celus version number in the side-panel
- add a toggle to show status of credentials that are not automatically harvested in the SUSHI status view
- attempts to fetch SUSHI resulting in error 3030 are not longer shown as unsuccessful
- confirmation dialog is shown when deleting SUSHI credentials
- unfinished months are no longer available when selecting months for manual SUSHI harvesting
- SUSHI responses with non-200 no longer automatically lead to a "non-sushi" error code - valid SUSHI error codes are extracted even from these replies.
- error was fixed that caused changes in selected report types not being reflected in an immediately started test
- the wizard about SUSHI was updated to reflect the new wording introduced in 2.2.0 in the SUSHI credentials edit dialog
- language not active for specific Celus installation cannot become users default language
- when synchronizing users with ERMS, properly disconnect organizations when user is no longer associated with them
- recache did not properly check for Django version when looking for cached data
- Error in SUSHI download retrial was fixed
- new month based view of SUSHI fetching success was introduced to help in debugging
- the SUSHI management page was extended with a "Harvest selected" button to allow testing and harvesting of data for more than one set of credentials
- the SUSHI downloads page now has a "Cleanup" button that allows deleting old unsuccessful attempts
- a caching mechanism with automatic renewal called
recache
was implemented for selected long running database queries - a specialized view for top 10 titles was implemented using
recache
- charts used on dashboard page use
recache
- the way yes-no style icons are presented in the UI was changed to avoid colors where the color conveyed incorrect connotations
- available languages are loaded from the backend and selector is only displayed if more than one is available
- SUSHI credentials edit dialog was cleaned up and tooltips were added
- Retried attempts to fetch data using SUSHI are only displayed as one record when viewing attempts
- SUSHI downloads page is visible only to superusers. Organization admins can use the new 'SUSHI status' page as more convenient replacement
- View of existing SUSHI fetch attempts was simplified and cleaned up
- SUSHI reports with error 3030 are treated as 3031 (retried later) only in case they are for current months. For later dates, they are considered simply empty.
- empty reports with code 3030 are no longer considered an error, but a successful import instead
- fix error when assigning second chart to report type in the charts tab on maintenance page
- fix error displaying wrong platform name in sushi edit dialog when editing existing credentials
- case is now ignored when checking if email address is verified which makes it consistent with the rest of the login/password reset system
- StopIteration error occurring for empty Counter 4 files was fixed
- error ingesting JR1 GOA report was fixed
- fix metric display in charts - remapping should not be shown the same way as in the admin
- fix storing of TSV files instead of raw XML for successful C4 attempts
- fix mismatch of version hash between credentials and attempts causing incorrect display of attempt status on SUSHI downloads page
- it is now possible to manage report-view to chart mappings in the frontend
- UI tour for first time users was added
- add password reset function to the login screen + use it for invitations as well
- when UI is 'booting up', unsuccessful attempts to connect to the backend are repeated until success
- Sentry was added to the frontend
- add django admin command to send invitations to new users
- make it possible to specify used languages/locales in .env file
- add management command to create users from a CSV table
- add management command to load organizations from a CSV file
- organization can now have unlimited number of alternative names
- alternative sushi namespace was added to fix problems with some messed up C4 reports
- C4 and C5 responses are always stored in file first and then processed
- update js dependencies and some vue-cli related packages
- ReportDataViews are ordered by name in Django admin
- if a Metric has different short_name and name (and thus remaps between imported and displayed value), show both of them in Django admin
- always convert dimension name to string in charts to prevent errors for 'null'