231 Commits

Author SHA1 Message Date
Adrian Moennich
5b0b37e938 Release 3.1 2022-01-11 12:54:30 +01:00
Indico Team
7276ea793e Happy new year 2022 🎆 2022-01-05 11:41:25 +01:00
Adrian Moennich
a7857b2559 Revert "Fix DeprecationWarning breaking tests"
This reverts commit 742d5acd262ef94ea559dc3b0421e26f02922b9a.

Shouldn't be needed anymore due to indico/indico#5173
2021-11-23 13:23:29 +01:00
Adrian Moennich
f7b433a6a1 Merge branch '3.0.x' 2021-11-16 12:56:24 +01:00
Adrian Moennich
742d5acd26 Fix DeprecationWarning breaking tests
Celery is using an invalid legacy version specifier (celery/celery#7074)
2021-11-16 12:51:17 +01:00
Adrian Moennich
7a42996594 Adapt to WTForms 3 2021-11-10 17:43:49 +01:00
Adrian Moennich
bb2b25a23f Fix coverage warning 2021-10-27 14:35:39 +02:00
Javier Ferrer
cf8cd5eb41
LiveSync: Correctly handle unlisted events (#156) 2021-09-24 13:44:54 +00:00
Adrian Moennich
dfe8f2c60b LiveSync: Add enqueue cli 2021-07-28 11:22:36 +02:00
Adrian Moennich
1ceca9a86b LiveSync: Fix incorrect CLI docstrings 2021-07-28 11:22:36 +02:00
Adrian Moennich
cb4a119939 Release 3.0 2021-07-16 12:07:36 +02:00
Adrian Moennich
3b9652ba9a Update core signals imports
see indico/indico#5007
2021-07-13 14:02:44 +02:00
Adrian Moennich
6397e2ea39 Release 3.0rc2 2021-07-09 13:16:54 +02:00
Indico Team
8f0a5f2bd4 Update translations 🎏 2021-07-09 13:16:37 +02:00
Adrian Moennich
ab77c69b5f Exclude Python 3.10 in python_requires 2021-07-09 12:01:12 +02:00
Adrian Moennich
075250fb40 Add README files to all plugins 2021-06-28 17:33:08 +02:00
Indico Team
0387f00deb Update French translation 🇫🇷 🥖 2021-06-28 10:06:30 +02:00
Adrian Moennich
79481aed27 Release 3.0rc1 2021-06-25 23:17:21 +02:00
Adrian Moennich
baf7252b9d LiveSync: Correctly register timetable entry changes
Triggering a change for the event is useless, but in case of scheduling
or unscheduling contributions (in conferences) we need to record this
change in order to update their time.
2021-06-25 18:11:33 +02:00
Adrian Moennich
21d0b76cba LiveSync: Do not create changes for parent objects
Those are not necessary, since any time a creation touches a parent
object (e.g. new timetable entry extending the event duration) we
already trigger an explicit change for that anyway; and in any other
case the parent change is not needed.
2021-06-25 18:11:33 +02:00
Adrian Moennich
e37eff0f93 LiveSync: Apply excluded categories to subcategories 2021-06-25 11:29:50 +02:00
Adrian Moennich
b063e00955 Move search export schems back to the indico core 2021-06-18 14:08:32 +02:00
Adrian Moennich
13225a548a LiveSync: Correctly handling cat blacklist during moves
Delete events from search when moving to a blacklisted category, and
create then when moving out of such a category.
2021-06-08 19:02:49 +02:00
Adrian Moennich
260454a04b LiveSync: Do not cascade to events in blacklisted cats 2021-06-03 14:32:16 +02:00
Adrian Moennich
6d1303c761 LiveSync: Allow overriding disabled cat runs on the CLI 2021-06-03 14:32:07 +02:00
Adrian Moennich
5fac9e5d94 LiveSync: Add setting to disable category runs 2021-06-03 13:31:01 +02:00
Adrian Moennich
5a9f9b7661 LiveSync: Track undeletions/restores 2021-06-03 11:28:57 +02:00
Adrian Moennich
940cd5a1f9 LiveSync: Allow manual queue runs even if queue runs disabled
The setting actually mentions scheduled queue runs, any being able to
run the queue manually is pretty convenient.
2021-06-02 20:00:13 +02:00
Adrian Moennich
12b63167d2 LiveSync: Add missing db fixture 2021-06-02 17:42:46 +02:00
Adrian Moennich
981368fc57 LiveSync: Make livesync_queue_entries rels more consistent
Most were lazy='dynamic' except for these two
2021-06-02 17:28:48 +02:00
Adrian Moennich
7e31fda28b LiveSync: Move export schema tests inside tests/ 2021-06-02 17:22:29 +02:00
Adrian Moennich
a5595615a4 LiveSync: Use efficient queries in queue runs
While simplify is still very spammy in case of large queues, at least
the actual data dumping for the export itself no longer spams queries.
This is especially crucial in the Citadel plugin where we have massive
parallelism which can easily exhaust the DB connection pool if we get
queries there.

For the same reason, the citadel ID mapping is now queried eagerly
so we don't need to try creating and then delete+update if we realize
there's already an existing citadel mapping, as we can simply check
before even sending something and then convert the creation to an
update.
2021-05-28 11:28:54 +02:00
Adrian Moennich
22d5dc00a7 LiveSync: Show progress when running queue from CLI 2021-05-27 19:39:02 +02:00
Adrian Moennich
25af285d6e LiveSync: Remove chunking 2021-05-27 19:30:18 +02:00
Adrian Moennich
fd5510eb02 LiveSync: Add missing deleted check when cascading 2021-05-27 18:26:47 +02:00
Indico Team
af13760a01 Update *.pot files 2021-05-26 18:07:38 +02:00
Adrian Moennich
3061b2f95d LiveSync: Fix category attachment deletion 2021-05-25 11:19:01 +02:00
Adrian Moennich
920ce3f47c LiveSync: Don't cascade categ prot changes to deleted events 2021-05-24 22:58:54 +02:00
Adrian Moennich
f0078ee06f Revert "LiveSync: Fix error when changing attachment protection"
This reverts commit eae133e9021252868b105f8124b2a66558442f46.

Made obsolete by indico/indico@7a4248ab8c
2021-05-24 14:27:48 +02:00
Adrian Moennich
eae133e902 LiveSync: Fix error when changing attachment protection 2021-05-24 14:09:02 +02:00
Adrian Moennich
6b409df375 LiveSync: Add missing deleted checks
This resulted in cascades to affect deleted attachments linked to an
event and thus failing runs e.g. after a protection change if it
cascaded to an already-deleted attachment.

Also added a check I forgot in #135
2021-05-24 14:06:38 +02:00
Adrian Moennich
aa0389567b LiveSync: Fix cascading of deletions after cloning
See the docstring on the corresponding test for a detailed description
of the issue this fixes.
2021-05-24 13:30:03 +02:00
Adrian Moennich
3b94438204 LiveSync: Add retry option to initial export 2021-05-21 18:07:00 +02:00
Adrian Moennich
ca2e860415 Citadel: Make thread counts configurable 2021-05-20 11:18:35 +02:00
Adrian
ec3d167175
Add new search infrastructure (#125)
* Enable CI on search branch

* LiveSync: Clean titles in verbose iterator

* LiveSync: Refactor initial export batching

And make the batch size configurable via commandline option

* LiveSync/Citadel: Support Citadel as the sync backend

Co-authored-by: penelope <penelope@fnal.gov>

* LiveSync/Citadel: Upgrade to python3

* LiveSync/Citadel: Update backend and refactor schemas

* LiveSync/Citadel: Add placeholders and filters/aggregations

* LiveSync/Citadel: Add range filters

* LiveSync/Citadel: Update the schemas and initial indexing

* LiveSync/Citadel: Refactor tests

* LiveSync/Citadel: Add status force list to upload retries

* LiveSync/Citadel: Update clean_old_entries filter

* LiveSync/Citadel: Update file headers

* LiveSync/Citadel: Add allowed methods in citadel retry

Commit more often in batches

* Citadel: Rename livesync_citadel to citadel

It's no longer just livesync

* Citadel: Move metadata to setup.cfg

* Citadel: Remove tika import

* Citadel: Mock things using the pytest way

* Citadel: Run pyupgrade

* Citadel: Run tests in CI

* Citadel: Use 'search' plugin category

* Citadel: Improve settings form

* Citadel: Fix model and alembic revision

* Citadel: Make livesync backend unique

* Citadel: Fix is_group error

* Citadel: Include schema attribute in the record context

* Citadel: Exclude content from Attachment schema

* Citadel: Use cached category path from context

* Citadel: Fix passing category tree cache to schemas

* Citadel: Remove unused imports

* Citadel: Be more strict with category cache

If the cache exists, we can expect ALL categories to be in there

* Citadel: Fix duplicate _get_identifiers call

* Citadel: Simplify record uploading

* ci: Allow `search` as valid upstream branch

* Add support for attachment file uploading

* Update file id mapping

* Update cli to a unique backend

* Merge file column migration with previous revision

* Refactor citadel and remove obsolete parts

* Citadel: Cache search_owner_role setting

* Citadel: Dump before parallelization

* Citadel: Do not retry on 500, use lower delays

* Remove change_type from upload_record

* Define a maximum number of pages

ES limits results up to 10,000 hits

* Add missing linebreak

* Citadel: Include category_id in search data

* Convert the aggregations to an object

* Raise request exceptions

* Move query formatting methods to util

* Remove search owner role setting

* Move the object type to filters

* Fix optional string based matches

Update tests

* Citadel: Include start/end dt for subcontribs

* Citadel: Add tests for schemas

* LiveSync: Pass force flag to backends

* Citadel: Skip already-exported entries unless forced

Like this resuming a failed initial export is as easy as just
running the command again.

* LiveSync: eager-load subcontrib timetable entry

* Citadel: Remove obsolete context

* Citadel: Do not upload empty files

* LiveSync: Fix changing root category protection mode

* Citadel: Fix access logic for empty ACLs

Also add unit tests for this

* Citadel: Add contrib/subcontrib duration to schemas

* LiveSync: Add verbose mode

* Remove record dumping if it's being deleted

* Simplify run_initial_export

* Citadel: Print change type in verbose mode

* Citadel: Ignore create-and-delete changes

* LiveSync: Fix tests

* LiveSync: Move citadel-specific code to citadel plugin

* Citadel: Make id mapping entries unique

* Citadel: Refactor http logic

* Citadel: Use 1:1 relationship for id mapping

* Citadel: Use more sensible argument order in id mapping

* LiveSync: Correctly handle (sub) contribution changes

- track contribution time changes
- cascade contribution changes to subcontributions

* Simplify livesync uploader entries

* LiveSync: Improve naming

* LiveSync: Fix attachment handling

Also fix cascading of contribution changes during simplification step

* Citadel: Fix enum display in error message

* LiveSync: Cascade creation to children

This is necessary e.g. when cloning events because in that case we only
have the event creation record but nothing for the elements inside that
event.

To avoid sending the same thing twice (e.g. a contribution) chunking now
only happens on the simplified change level, not on the record level, to
ensure all recorded changes are taken into account when simplifying them
to creation/updates/deletions.

* LiveSync: Allow deferring initial export done flag

In case of Citadel we want to require a file export as well before
starting to process the queue to avoid cases where we are still doing
an initial file upload but queue runs start happening and we would
end up sending old files as well.

* Citadel: Upload files after a queue run

* Refactor checks whether queue runs are possible

Also add an `indico citadel reset` command to throw away all local
citadel data

* Citadel: Re-upload attachments whose file changed

* LiveSync: Fix title in initial export progress

* Citadel: Make max file size configurable

* Check if a livesync plugins is properly configured

And use it to check whether citadel has url and token set

* LiveSync/Debug: Fix errors and use schemas

* Citadel: Refactor verbose printing

* LiveSync: Remove unnecessary default value

* Update the search API to support multiple types

* Move reset cli from citadel to livesync core

* Citadel: Rename model/table

* Citadel: Remove unnecessary timestamp column

* Citadel: Remove some overly verbose comments

* Citadel: Commit explicitly outside create()

* Citadel: Do not send None inside _data

* LiveSync: Fix handling notes

* Citadel: Integrate placeholders with Indico (#117)

* LiveSync: Fix query spam in user.is_system check

* Citadel: Use new result schemas

* Update search schemas

* Citadel: Various improvements/fixes

* Citadel: Integrate filters with Indico & update placeholders (#119)

* Move dump schemas from core to livesync

* Use type_format only in citadel code

* Citadel: Strip HTML from descriptions/notes

* Citadel: Show message if some fails failed to upload

* Add category id filter

* Citadel: Add some debug logging during file uploads

* Citadel: Allow filtering by category name

* Update title and type placeholders

* Citadel: Add -f as --force shortcut

* Fix quote dividers in a multi placeholder query

* Use all worker threads all the time

* Close responses from uploads

Hopefully this fixes running out of fds after ~240k uploads

* Add some more debug logging

* Fix incorrect output

* Rename type placeholder

* Supported quotes for exact matches

* LiveSync: Fix cascading issues

- do not cascade implicit changes to deleted attachments
- correctly cascade changes involving session-linked objects

* Improve error handling

* Citadel: Do not enable queue runs after max-size usage

* LiveSync: Add setting to disable queue runs

* LiveSync: Check category blacklist in initial export

* LiveSync: Add schema tests

* LiveSync: Handle and cascade location changes

* Move query formatting outside the f-string

* Refactor the search query parser

Ensures the keyword positioning isn't changed and correctly
sanitizes placeholder content.

* Escape whitelisted placeholders

Co-authored-by: Adrian <adrian@planetcoding.net>

* Strip the result query

* Remove placeholder operator

* Add default operator

* Update tests

* Add support for sort options (#123)

* Add support for sort options
* Rename SearchFilter to SearchOption
* Rename sort option keys

* Fix error with lazy strings in filter labels

* Revert "Enable CI on search branch"

This reverts commit 2ec3f650eed02cd6c72ea336fa92df6927b8da39.

Co-authored-by: Pedro Lourenço <pedro.lourenco@cern.ch>
Co-authored-by: Michal Kolodziejski <michal.kolodziejski@cern.ch>
Co-authored-by: Penelope Constanta <penelope@fnal.gov>
2021-05-07 14:47:59 +00:00
Adrian Moennich
7479c36b01 LiveSync: Remove legacy MARCXML code 2021-04-19 18:26:09 +02:00
Adrian Moennich
84381e8eea Run latest pyupgrade 2021-04-14 12:36:41 +02:00
Pedro Lourenço
3c37b3a9de
LiveSync: Include subcontribs in initial export (#110) 2021-04-12 19:13:00 +02:00
Adrian Moennich
0f0740308a LiveSync: Support unique backends 2021-04-07 17:26:38 +02:00
Pedro Lourenço
775e75f724
LiveSync: Eager-load data in initial exports (#108)
Co-authored-by: Adrian Moennich <adrian.moennich@cern.ch>
2021-04-07 17:25:47 +02:00