libreqda 1.2.0.post1__tar.gz → 1.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/CHANGELOG.md +11 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/PKG-INFO +27 -14
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/README.md +26 -13
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/pyproject.toml +1 -1
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/__init__.py +1 -1
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/database/copy.py +4 -1
- libreqda-1.2.1/taguette/l10n/de_DE/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.1/taguette/l10n/de_DE/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.1/taguette/l10n/el_GR/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.1/taguette/l10n/el_GR/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.1/taguette/l10n/en_US/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.1/taguette/l10n/en_US/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.1/taguette/l10n/es_ES/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.1/taguette/l10n/es_ES/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.1/taguette/l10n/fr_FR/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.1/taguette/l10n/fr_FR/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.1/taguette/l10n/id_ID/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.1/taguette/l10n/id_ID/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.1/taguette/l10n/it_IT/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.1/taguette/l10n/it_IT/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.1/taguette/l10n/nl_NL/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.1/taguette/l10n/nl_NL/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.1/taguette/l10n/pt_PT/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.1/taguette/l10n/pt_PT/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.1/taguette/l10n/sv_SE/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.1/taguette/l10n/sv_SE/LC_MESSAGES/taguette_main.mo +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/base.html +1 -1
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/project_import.html +12 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/version_check.py +1 -4
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/web/api.py +16 -3
- libreqda-1.2.0.post1/taguette/l10n/de_DE/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/de_DE/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/el_GR/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/el_GR/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/en_US/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/en_US/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/es_ES/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/es_ES/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/fr_FR/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/fr_FR/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/id_ID/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/id_ID/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/it_IT/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/it_IT/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/nl_NL/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/nl_NL/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/pt_PT/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/pt_PT/LC_MESSAGES/taguette_main.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/sv_SE/LC_MESSAGES/taguette_javascript.mo +0 -0
- libreqda-1.2.0.post1/taguette/l10n/sv_SE/LC_MESSAGES/taguette_main.mo +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/LICENSE.txt +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/babelrc +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/dist/LICENSE.txt +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/dist/RELEASE.txt +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/dist/macos/libreqda.icns +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/dist/macos/macos.spec +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/dist/macos/plist.patch +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/dist/macos/taguette.icns +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/dist/macos/taguette_console_wrapper +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/dist/macos.sh +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/dist/pyinstaller_entrypoint.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/dist/windows/windows-installer.iss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/dist/windows/windows.spec +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/edugain/worker_update_edugain_idps.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/edugain/worker_update_edugain_idps.sh +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/make_password_reset_link.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/make_theme.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/new_db_revision.sh +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/register_user.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/update_pot.sh +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/update_translations.sh +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/validate.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/scripts/wipe_and_disable_user.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/access_control.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/convert.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/database/__init__.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/database/base.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/database/models.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/demodata.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/export.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/extract.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/import_codebook.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/l10n/el_EL/LC_MESSAGES/taguette_javascript.mo +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/loki_handler.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/main.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/env.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/script.py.mako +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/09c662cd9483_make_documents_filename_not_null.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/1b29e68900c1_add_user_roles.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/1b96a606551d_update_user_to_have_a_display_name.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/2467bab602b7_add_color_column_to_tags_table.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/382db36f20f4_add_user_disabled.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/43d6c240309d_remove_document_groups.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/447d636f72c5_cascades.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/491de2dc7cd7_add_indexes.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/4c55b3b3ff30_user_login_length.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/61a4abcc8769_user_with_parent_for_permissions.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/6489b5f9cfb5_increase_password_hash_size.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/679f625e6e6a_fix_unique_tags.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/77c4543a5b9b_add_parent_id_column_to_collection_table.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/7c94b7a31e69_add_is_archived_column_to_projets.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/7f56de97e3c8_change_edugain_displayname_length.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/807c0cc0ecf6_remove_invalid_hltags.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/80b1cc9d4c22_add_user_email.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/91ade71ccf4d_add_user_language.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/955db2e523d1_add_collections_tables_and_associations_.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/a1b2c3d4e5f6_add_user_hide_code_counts.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/b23f3b7a638e_add_user_password_change_date.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/b7c1e2d3f4a5_add_project_compact_layout.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/bc8e0e0677e9_rename_command_fields.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/bce44849c2f2_lowercase_logins.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/ca076140922f_update_user_for_external_logins.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/d86c45d7aa8a_add_document_direction.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/db5e31a0233d_remove_blank_highlights.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/dd37d9027a24_unique_tags.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/de678cef2a94_add_project_id_to_collections_and_.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/e459991d960e_add_table_edugainidps.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/e4cf92942271_add_index.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/e4e090a5b511_remove_commands_document_id_fk.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/e9a9f1c77971_add_favorite_column_to_document.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/ecb4065de575_don_t_use_server_default_now_timezone_.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/fbdc29566f62_edugain_fix_field_type.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/fdc6eb54b034_add_parent_id_column_to_tags_table.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/README.md +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/alt_templates/.gitkeep +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/assets/test/logos/monsters-university-logo.png +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/css/custom.css +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/css/fa-all.min.css +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/css/themed.css +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/css/themed.css.map +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/css/vendor/bootstrap-treeview.min.css +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/css/vendor/bootstrap.min.css +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/css/vendor/font/context-menu-icons.eot +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/css/vendor/font/context-menu-icons.ttf +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/css/vendor/font/context-menu-icons.woff +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/css/vendor/font/context-menu-icons.woff2 +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/css/vendor/hierarchy-select.min.css +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/css/vendor/introjs.min.css +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/css/vendor/jquery.contextMenu.min.css +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/favicon.ico +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/codebook-viz.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/collection/context-menu.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/collection/hierarchy-select.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/collection/manager.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/document/context-menu.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/document/custom-select.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/document/manager.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/document/treeview.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/highlight/README.md +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/highlight/crud.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/highlight/extracts.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/highlight/loader.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/highlight/renderer.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/login.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/permissions.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/polling-event.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/project/intro.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/project/manager.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/project/search.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/tag/context-menu.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/tag/explore-codes.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/tag/hierarchy-select.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/tag/manager.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/tag/treeview.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/taguette.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/utilities.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/vendor/bootstrap-treeview-custum.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/vendor/bootstrap-treeview-custum.min.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/vendor/bootstrap-treeview-default.min.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/vendor/bootstrap.bundle.min.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/vendor/bootstrap.bundle.min.js.map +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/vendor/hierarchy-select.min.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/vendor/introjs.min.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/vendor/jquery-3.7.1.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/js/vendor/jquery.contextMenu.min.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/libreqda.ico +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/logo-h.png +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/logo.png +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/logo_blanc.png +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/missing.png +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/robots.txt +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/components/_badge.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/components/_button.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/components/_checkbox.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/components/_context_menu.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/components/_custom_select.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/components/_dropdown.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/components/_form.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/components/_modal.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/components/_project_card.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/components/_tag.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/components/_treeview.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/custom.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/layout/_credits.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/layout/_footer.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/layout/_navigation.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/layout/_sidebar.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/themes/default/_variables.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/themes/default/theme.css +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/themes/default/theme.css.map +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/scss/themes/default/theme.scss +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/BadScript-OFL.txt +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/BadScript.ttf +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/Montserrat-Light.ttf +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/Montserrat-OFL.txt +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-brands-400.eot +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-brands-400.svg +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-brands-400.ttf +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-brands-400.woff +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-brands-400.woff2 +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-regular-400.eot +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-regular-400.svg +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-regular-400.ttf +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-regular-400.woff +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-regular-400.woff2 +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-solid-900.eot +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-solid-900.svg +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-solid-900.ttf +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-solid-900.woff +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/static/webfonts/fa-solid-900.woff2 +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/alt_templates/.gitkeep +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/archived_projects.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/auth/account.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/auth/cilogon.login.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/auth/email_reset_password.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/auth/external_account.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/auth/login.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/auth/reset_password.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/auth/token_needed.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/bug_report.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/cookies_prompt.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/downloads.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/email_bug_report.txt +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/email_reset_password.txt +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/error.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/export_codebook.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/export_document.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/export_highlights.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/index.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/maintenance.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/messages.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/modal/change_document.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/modal/create_collection.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/modal/create_document.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/modal/create_highlight.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/modal/create_tag.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/modal/explore_codes.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/modal/manage_collaborators.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/modal/merge_tag.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/new_password.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/partials/alert.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/partials/codebook_viz_modal.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/partials/confirm.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/partials/document_toolbar.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/partials/hlinfo.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/partials/project_card.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/partials/project_card_archived.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/partials/project_sidebar.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/partials/spinner.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/permissions.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/project.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/project_delete.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/project_import_codebook.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/project_import_codebook_confirm.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/project_new.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/tos.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/trans.js +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/templates/welcome.html +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/utils.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/validate.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/web/__init__.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/web/base.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/web/export.py +0 -0
- {libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/web/views.py +0 -0
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
LibreQDA Changelog
|
|
2
2
|
==================
|
|
3
3
|
|
|
4
|
+
1.2.1 (2026-09-24)
|
|
5
|
+
------------------
|
|
6
|
+
- New features:
|
|
7
|
+
- Rename a project on SQLite3 import
|
|
8
|
+
- Outdated-version banner shown on every install method
|
|
9
|
+
- Bugfixes:
|
|
10
|
+
- Extracts no longer bloat to full document via orphan highlights
|
|
11
|
+
- `TagDelete` now also removes highlights whose only tag was the one deleted
|
|
12
|
+
- Docs:
|
|
13
|
+
- README: clearer Docker and dev setup instructions
|
|
14
|
+
|
|
4
15
|
1.2.0 (2026-09-10)
|
|
5
16
|
------------------
|
|
6
17
|
- New features:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: libreqda
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: Free and open source qualitative research tool
|
|
5
5
|
Home-page: https://www.libreqda.org/
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -111,24 +111,37 @@ Docker
|
|
|
111
111
|
------
|
|
112
112
|
|
|
113
113
|
docker pull phunudes/libreqda
|
|
114
|
-
docker run -d -p 7465:7465 -v libreqda-data:/data phunudes/libreqda
|
|
114
|
+
docker run -d --name libreqda -p 7465:7465 -v libreqda-data:/data phunudes/libreqda
|
|
115
|
+
docker logs libreqda | grep -A1 "is now running"
|
|
115
116
|
|
|
116
|
-
|
|
117
|
+
The second command prints the token URL (single-user mode). Browse to it. Data persists in the `libreqda-data` volume.
|
|
118
|
+
|
|
119
|
+
Prefer to see the token URL live? Drop `-d` and let it run in the foreground — closing the terminal will stop the container, so you'd relaunch each session:
|
|
120
|
+
|
|
121
|
+
docker run --name libreqda -p 7465:7465 -v libreqda-data:/data phunudes/libreqda
|
|
117
122
|
|
|
118
123
|
Development Setup from the Repository
|
|
119
124
|
-------------------------------------
|
|
120
125
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
126
|
+
Requires **Python 3.11** (3.12+ fails because `frozenlist 1.3.3` in the lock file has no wheels for it) and [Poetry](https://python-poetry.org/docs/#installation).
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
git clone https://gitlab.com/bin-cirst/libreqda/libre-qda/
|
|
130
|
+
cd libre-qda
|
|
131
|
+
poetry env use python3.11
|
|
132
|
+
poetry install # add -E postgres or -E mysql for those drivers
|
|
133
|
+
poetry run bash scripts/update_translations.sh
|
|
134
|
+
poetry run libreqda --debug # single-user, local SQLite (~/.local/share/taguette/)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Open [localhost:7465](http://localhost:7465/). Tornado auto-restarts on file changes.
|
|
138
|
+
|
|
139
|
+
For multi-user mode, generate a config first and pass it to the `server` subcommand:
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
poetry run libreqda default-config > taguette.conf
|
|
143
|
+
poetry run libreqda --debug server taguette.conf
|
|
144
|
+
```
|
|
132
145
|
|
|
133
146
|
Create custom theme
|
|
134
147
|
-------------------
|
|
@@ -54,24 +54,37 @@ Docker
|
|
|
54
54
|
------
|
|
55
55
|
|
|
56
56
|
docker pull phunudes/libreqda
|
|
57
|
-
docker run -d -p 7465:7465 -v libreqda-data:/data phunudes/libreqda
|
|
57
|
+
docker run -d --name libreqda -p 7465:7465 -v libreqda-data:/data phunudes/libreqda
|
|
58
|
+
docker logs libreqda | grep -A1 "is now running"
|
|
58
59
|
|
|
59
|
-
|
|
60
|
+
The second command prints the token URL (single-user mode). Browse to it. Data persists in the `libreqda-data` volume.
|
|
61
|
+
|
|
62
|
+
Prefer to see the token URL live? Drop `-d` and let it run in the foreground — closing the terminal will stop the container, so you'd relaunch each session:
|
|
63
|
+
|
|
64
|
+
docker run --name libreqda -p 7465:7465 -v libreqda-data:/data phunudes/libreqda
|
|
60
65
|
|
|
61
66
|
Development Setup from the Repository
|
|
62
67
|
-------------------------------------
|
|
63
68
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
Requires **Python 3.11** (3.12+ fails because `frozenlist 1.3.3` in the lock file has no wheels for it) and [Poetry](https://python-poetry.org/docs/#installation).
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
git clone https://gitlab.com/bin-cirst/libreqda/libre-qda/
|
|
73
|
+
cd libre-qda
|
|
74
|
+
poetry env use python3.11
|
|
75
|
+
poetry install # add -E postgres or -E mysql for those drivers
|
|
76
|
+
poetry run bash scripts/update_translations.sh
|
|
77
|
+
poetry run libreqda --debug # single-user, local SQLite (~/.local/share/taguette/)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Open [localhost:7465](http://localhost:7465/). Tornado auto-restarts on file changes.
|
|
81
|
+
|
|
82
|
+
For multi-user mode, generate a config first and pass it to the `server` subcommand:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
poetry run libreqda default-config > taguette.conf
|
|
86
|
+
poetry run libreqda --debug server taguette.conf
|
|
87
|
+
```
|
|
75
88
|
|
|
76
89
|
Create custom theme
|
|
77
90
|
-------------------
|
|
@@ -17,6 +17,7 @@ tracer = opentelemetry.trace.get_tracer(__name__)
|
|
|
17
17
|
def copy_project(
|
|
18
18
|
src_db, dest_db,
|
|
19
19
|
project_id, user_login,
|
|
20
|
+
new_name=None,
|
|
20
21
|
):
|
|
21
22
|
def copy(
|
|
22
23
|
table, pkey, fkeys, size,
|
|
@@ -42,9 +43,11 @@ def copy_project(
|
|
|
42
43
|
).fetchone()
|
|
43
44
|
if project is None:
|
|
44
45
|
raise KeyError("project ID not found")
|
|
46
|
+
project = dict(project)
|
|
47
|
+
if new_name is not None:
|
|
48
|
+
project['name'] = new_name
|
|
45
49
|
validate.project_name(project['name'])
|
|
46
50
|
validate.description(project['description'])
|
|
47
|
-
project = dict(project)
|
|
48
51
|
project.pop('id')
|
|
49
52
|
project['is_archived'] = False
|
|
50
53
|
new_project_id, = insert(Project.__table__, project).inserted_primary_key
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
{% if outdated_version %}
|
|
24
24
|
<div id="version-outdated-banner" class="alert alert-warning alert-dismissible mb-0 rounded-0 border-0 text-center d-none" role="alert" style="position: fixed; top: 6.5em; left: 0; right: 0; z-index: 101;">
|
|
25
25
|
{% set downloads_url = reverse_url('downloads') %}
|
|
26
|
-
{% trans latest_version=outdated_version, current_version=version, url=downloads_url %}A newer version of LibreQDA ({{ latest_version }}) is available. You are running {{ current_version }}. <a href="{{ url }}">
|
|
26
|
+
{% trans latest_version=outdated_version, current_version=version, url=downloads_url %}A newer version of LibreQDA ({{ latest_version }}) is available. You are running {{ current_version }}. <a href="{{ url }}">Update now</a>.{% endtrans %}
|
|
27
27
|
<button type="button" class="btn-close" id="version-outdated-dismiss" aria-label="{% trans %}Close{% endtrans %}"></button>
|
|
28
28
|
</div>
|
|
29
29
|
<script>
|
|
@@ -21,6 +21,13 @@
|
|
|
21
21
|
</select>
|
|
22
22
|
</div>
|
|
23
23
|
</div>
|
|
24
|
+
<div class="form-group row">
|
|
25
|
+
<label for="new-name" class="col-sm-2 col-form-label">{% trans "form label for new project name" %}New name:{% endtrans %}</label>
|
|
26
|
+
<div class="col-sm-10">
|
|
27
|
+
<input type="text" class="form-control" name="new-name" id="new-name" maxlength="200"
|
|
28
|
+
placeholder="{% trans %}Optional — leave blank to keep the original name{% endtrans %}" disabled>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
24
31
|
<p>
|
|
25
32
|
<input type="submit" class="btn btn-primary" id="submit" value="{% trans "form submit button" %}Import project{% endtrans %}" disabled>
|
|
26
33
|
</p>
|
|
@@ -57,6 +64,7 @@ projectFile.addEventListener('change', function() {
|
|
|
57
64
|
elem.innerText = '' + project.id + ' - ' + project.name;
|
|
58
65
|
projectList.appendChild(elem);
|
|
59
66
|
}
|
|
67
|
+
document.getElementById('new-name').disabled = false;
|
|
60
68
|
document.getElementById('submit').disabled = false;
|
|
61
69
|
} else {
|
|
62
70
|
console.error("Project upload failed:", xhr.status);
|
|
@@ -85,6 +93,10 @@ function importProject() {
|
|
|
85
93
|
var file = projectFile.files[0];
|
|
86
94
|
var form_data = new FormData();
|
|
87
95
|
form_data.append('project_id', parseInt(document.getElementById('project').value, 10));
|
|
96
|
+
var newName = document.getElementById('new-name').value.trim();
|
|
97
|
+
if(newName) {
|
|
98
|
+
form_data.append('new_name', newName);
|
|
99
|
+
}
|
|
88
100
|
form_data.append('file', file);
|
|
89
101
|
var xsrf = document.cookie.match('\\b' + '_xsrf' + '=([^;]*)\\b');
|
|
90
102
|
if(xsrf) {
|
|
@@ -72,7 +72,7 @@ async def _fetch_latest():
|
|
|
72
72
|
_cache['in_flight'] = False
|
|
73
73
|
|
|
74
74
|
|
|
75
|
-
def
|
|
75
|
+
def is_standalone_bundle():
|
|
76
76
|
return getattr(sys, 'frozen', False)
|
|
77
77
|
|
|
78
78
|
|
|
@@ -81,9 +81,6 @@ def get_outdated_version():
|
|
|
81
81
|
if forced:
|
|
82
82
|
return forced
|
|
83
83
|
|
|
84
|
-
if not is_desktop_bundle():
|
|
85
|
-
return None
|
|
86
|
-
|
|
87
84
|
now = time.time()
|
|
88
85
|
if (
|
|
89
86
|
not _cache['in_flight']
|
|
@@ -580,6 +580,11 @@ class TagUpdate(BaseHandler):
|
|
|
580
580
|
tag = self.db.query(database.Tag).get(int(tag_id))
|
|
581
581
|
if tag is None or tag.project_id != project.id:
|
|
582
582
|
return self.send_error_json(404, self.gettext("No such tag"))
|
|
583
|
+
# Drop highlights that would become orphaned.
|
|
584
|
+
self.db.query(database.Highlight).filter(
|
|
585
|
+
database.Highlight.tags.any(database.Tag.id == tag.id),
|
|
586
|
+
~database.Highlight.tags.any(database.Tag.id != tag.id),
|
|
587
|
+
).delete(synchronize_session=False)
|
|
583
588
|
self.db.delete(tag)
|
|
584
589
|
cmd = database.Command.tag_delete(
|
|
585
590
|
self.current_user,
|
|
@@ -1045,7 +1050,8 @@ class Highlights(BaseHandler):
|
|
|
1045
1050
|
all_tag_ids = set(t.id for t in hl.tags if t.path not in excluded)
|
|
1046
1051
|
|
|
1047
1052
|
# Find related highlights: any overlap
|
|
1048
|
-
# (identical, contained, containing, or partial)
|
|
1053
|
+
# (identical, contained, containing, or partial).
|
|
1054
|
+
# Skip orphans (no tags) — they inflate the union range.
|
|
1049
1055
|
related_highlights = (
|
|
1050
1056
|
self.db.query(database.Highlight)
|
|
1051
1057
|
.options(joinedload(database.Highlight.tags))
|
|
@@ -1054,6 +1060,7 @@ class Highlights(BaseHandler):
|
|
|
1054
1060
|
database.Highlight.id != hl.id,
|
|
1055
1061
|
database.Highlight.start_offset < hl.end_offset,
|
|
1056
1062
|
database.Highlight.end_offset > hl.start_offset,
|
|
1063
|
+
database.Highlight.tags.any(),
|
|
1057
1064
|
)
|
|
1058
1065
|
.all()
|
|
1059
1066
|
)
|
|
@@ -1369,7 +1376,12 @@ class ProjectImport(BaseHandler):
|
|
|
1369
1376
|
return await self.send_json({
|
|
1370
1377
|
'error': "Invalid project ID",
|
|
1371
1378
|
})
|
|
1372
|
-
|
|
1379
|
+
new_name = (
|
|
1380
|
+
self.get_body_argument('new_name', '').strip() or None
|
|
1381
|
+
)
|
|
1382
|
+
return await self._import_project(
|
|
1383
|
+
filename, project_id, new_name=new_name,
|
|
1384
|
+
)
|
|
1373
1385
|
|
|
1374
1386
|
async def _list_projects(self, filename):
|
|
1375
1387
|
# Connect to the database
|
|
@@ -1415,7 +1427,7 @@ class ProjectImport(BaseHandler):
|
|
|
1415
1427
|
self.write('{"projects": [')
|
|
1416
1428
|
return await self.finish(']}')
|
|
1417
1429
|
|
|
1418
|
-
async def _import_project(self, filename, project_id):
|
|
1430
|
+
async def _import_project(self, filename, project_id, new_name=None):
|
|
1419
1431
|
# Connect to the database
|
|
1420
1432
|
try:
|
|
1421
1433
|
src_db = database.connect(
|
|
@@ -1431,6 +1443,7 @@ class ProjectImport(BaseHandler):
|
|
|
1431
1443
|
new_project_id = database.copy_project(
|
|
1432
1444
|
src_db, self.db,
|
|
1433
1445
|
project_id, self.current_user,
|
|
1446
|
+
new_name=new_name,
|
|
1434
1447
|
)
|
|
1435
1448
|
src_db.close()
|
|
1436
1449
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/l10n/el_EL/LC_MESSAGES/taguette_javascript.mo
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/1b29e68900c1_add_user_roles.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/447d636f72c5_cascades.py
RENAMED
|
File without changes
|
{libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/491de2dc7cd7_add_indexes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/679f625e6e6a_fix_unique_tags.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/80b1cc9d4c22_add_user_email.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/dd37d9027a24_unique_tags.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libreqda-1.2.0.post1 → libreqda-1.2.1}/taguette/migrations/versions/e4cf92942271_add_index.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|