pyarchinit-mini 2.4.0__tar.gz → 2.4.2__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.
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/CHANGELOG.md +54 -0
- {pyarchinit_mini-2.4.0/pyarchinit_mini.egg-info → pyarchinit_mini-2.4.2}/PKG-INFO +1 -1
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/__init__.py +1 -1
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/harris_creator_routes.py +31 -11
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/paradata_ui_routes.py +22 -1
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/base.html +2 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/harris_creator/editor.html +70 -12
- pyarchinit_mini-2.4.2/pyarchinit_mini/web_interface/templates/paradata/index.html +53 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2/pyarchinit_mini.egg-info}/PKG-INFO +1 -1
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini.egg-info/SOURCES.txt +1 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyproject.toml +1 -1
- pyarchinit_mini-2.4.2/tests/integration/test_harris_swimlane_routes_session_missing.py +37 -0
- pyarchinit_mini-2.4.0/tests/integration/test_harris_swimlane_routes_session_missing.py +0 -23
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/MANIFEST.in +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/README.md +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/babel.cfg +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/data/media_viewer_demo.db +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/data/pyarchinit_mini 2.db +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/data/pyarchinit_mini.db +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/data/pyarchinit_mini_sample.db +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/data/pyarchinit_tutorial.db +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/data/pyarchinit_tutorial_backup_20251030_093228.db +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/data/pyarchinit_tutorial_clean.db +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/data/pyarchinit_tutorial_video.db +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/data/pyarchinit_v18_demo.db +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/logo/logo_pyarchinit-mini.png +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/api/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/api/auth.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/api/dependencies.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/api/graphml.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/api/inventario.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/api/schemas.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/api/site.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/api/sync.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/api/us.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli/export_import_cli.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli/extended_matrix_import.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli/graphml_cli.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli/harris_import.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli/harris_template.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli/migrate.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli/migrate_vocab.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli/pyarchinit_import_export_cli.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli/sync_cli.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli_interface/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli_interface/cli_app.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/config/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/config/connection_manager.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/config/em_node_config_manager.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/config/em_node_types.yaml +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/concurrency_manager.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/connection.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/database_creator.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/manager.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/migration_scripts/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/migration_scripts/add_file_path.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/migration_scripts/add_i18n_columns.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/migration_scripts/add_tipo_documento.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/migration_scripts/change_us_area_to_text.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/migration_scripts/change_us_area_to_text_simple.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/migrations/_2026_05_node_uuid_backfill.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/migrations/_2026_05_node_uuid_schema.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/migrations/_2026_05_vocab_alignment.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/migrations/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/migrations/backup.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/postgres_installer.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/schemas.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/utils.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/analytics_dialog.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/assets/logo.png +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/dialogs.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/excel_import_dialog.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/export_import_dialog.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/graphml_export_dialog.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/gui_app.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/harris_matrix_editor.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/i18n.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/icons.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/inventario_dialog_extended.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/main_window.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/media_manager_advanced.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/postgres_installer_dialog.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/pottery_dialog_extended.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/pottery_panel.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/pyarchinit_import_export_dialog.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/thesaurus_dialog.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/desktop_gui/us_dialog_extended.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/dto/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/dto/inventario_dto.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/dto/site_dto.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/dto/us_dto.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/exceptions.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_converter/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_converter/converter.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_converter/dot_parser.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_converter/em_palette.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_converter/graphml_builder.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_converter/graphml_exporter.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_converter/pure_networkx_exporter.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_converter/svg_resources.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_converter/templates/EM_palette.graphml +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_converter/x11_colors.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_converter/yed_template.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_io/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_io/reader.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_io/writer.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphml_io/yed_writer.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphproj/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphproj/auto_regen.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphproj/edge_registry.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphproj/exceptions.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphproj/filesystem.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphproj/ingest_plan.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphproj/ingestor.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphproj/paradata_store.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/graphproj/projector.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/harris_matrix/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/harris_matrix/enhanced_visualizer.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/harris_matrix/matrix_generator.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/harris_matrix/matrix_visualizer.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/harris_matrix/pyarchinit_visualizer.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/harris_swimlane/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/harris_swimlane/compound_layout.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/harris_swimlane/exceptions.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/harris_swimlane/period_sync_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/harris_swimlane/row_provider.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/harris_swimlane/swimlane_state.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/i18n/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/i18n/flask_babel_config.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/i18n/locale_manager.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/__main__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/blender_client.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/config.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/event_stream.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/graphml_parser.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/http_server.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/period_filter.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/prompts/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/prompts/base_prompt.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/prompts/period_visualization_prompt.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/prompts/stratigraphic_model_prompt.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/prompts/us_description_prompt.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/proxy_generator.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/resources/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/resources/base_resource.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/resources/graphml_resource.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/resources/periods_resource.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/resources/relationships_resource.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/resources/sites_resource.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/resources/us_resource.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/server.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/base_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/batch_insert_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/build_3d_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/chatgpt_fetch_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/chatgpt_search_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/configure_em_nodes_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/create_database_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/create_harris_matrix_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/data_import_parser_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/data_management_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/database_manager_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/delete_data_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/export_harris_matrix_graphml_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/export_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/filter_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/generate_report_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/get_schema_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/import_excel_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/insert_data_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/manage_services_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/material_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/media_management_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/position_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/pyarchinit_sync_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/resolve_conflicts_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/service_management_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/thesaurus_management_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/update_data_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/upload_file_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/validate_relationship_format_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/validate_relationship_integrity_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/validate_stratigraphic_relationships_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/mcp_server/tools/validate_stratigraphy_tool.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/media_manager/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/media_manager/media_handler.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/ai_chat.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/app_setting.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/base.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/datazione.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/extended_matrix.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/harris_matrix.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/inventario_materiali.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/media.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/pottery.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/site.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/thesaurus.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/tma.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/us.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/models/user.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/pdf_export/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/pdf_export/pdf_generator.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/pdf_export/pdf_generator_backup.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/pdf_export/pyarchinit_finds_template.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/pdf_export/pyarchinit_inventory_template.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/pdf_export/usm_implementation.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/s3d_integration/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/s3d_integration/model_manager.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/s3d_integration/s3d_converter.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/auto_translate.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/configure_claude_desktop.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/create_admin_user.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/create_correct_stratigraphy_sample.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/create_italian_sample_database.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/create_sample_for_webapp.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/create_sample_with_50_us.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/generate_test_3d_model.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/load_italian_as_main.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/load_sample_as_main.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/migrate_relationships.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/populate_sample_data.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/populate_simple_data.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/setup_auth.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/setup_user_env.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/test_cascade_delete.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/test_relationship_fix.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/update_sample_relationships.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/update_urls_and_versions.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/scripts/verify_docs.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/ai_assistant_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/ai_chat_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/analytics_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/app_setting_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/backup_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/command_parser.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/datazione_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/export_import_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/extended_matrix_excel_parser.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/import_export_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/inventario_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/mcp_executor.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/media_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/periodizzazione_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/pottery_dto.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/pottery_pdf_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/pottery_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/relationship_sync_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/search_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/site_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/thesaurus_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/tma_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/us_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/services/user_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/stratigraph/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/stratigraph/bundle_creator.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/stratigraph/bundle_manifest.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/stratigraph/bundle_validator.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/stratigraph/connectivity_monitor.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/stratigraph/sync_orchestrator.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/stratigraph/sync_queue.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/stratigraph/sync_state_machine.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/stratigraph/uuid_manager.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/translations/en/LC_MESSAGES/messages.mo +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/translations/en/LC_MESSAGES/messages.po +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/translations/it/LC_MESSAGES/messages.mo +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/translations/it/LC_MESSAGES/messages.po +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/translations/messages.pot +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/utils/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/utils/auth.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/utils/exceptions.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/utils/relationship_validator.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/utils/stratigraphic_validator.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/utils/tma_label_generator.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/utils/validators.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/vocab/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/vocab/exceptions.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/vocab/i18n.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/vocab/loader.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/vocab/provider.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/vocab/translations/vocab_en.json +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/vocab/translations/vocab_it.json +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/vocab/types.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/app.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/auth_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/em_node_config_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/excel_import_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/graph_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/paradata_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/pottery_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/pyarchinit_import_export_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/s3d_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/socketio_events.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/css/style.css +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/images/favicon.ico +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/images/logo.png +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/images/no-image.png +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/images/pyarchinit-mini-logo.png +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/js/OrbitControls.js +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/js/harris_creator_editor.js +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/js/stratigraphic_layout.js +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/js/three-d-viewer.js +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/js/three.min.js +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/js/universal_search.js +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.bin +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.gltf +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.mtl +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/static/uploads/3d_models/Sito Archeologico di Esempio/site/stratigraphy_test.obj +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/3d_builder/index.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/3d_viewer/viewer.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/admin/backups.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/admin/database.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/admin/database_connect.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/admin/database_info.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/admin/database_upload.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/admin/settings_ai.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/ai/assistant.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/analytics/dashboard.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/auth/login.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/auth/users.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/blender_viewer.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/components/language_switcher.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/dashboard.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/datazioni/list.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/docs/index.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/em_node_config/index.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/excel_import/index.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/export/export_import.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/graph_import_preview.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/graph_import_result.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/harris_creator/index.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/harris_matrix/graphml_export.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/harris_matrix/large_graph_message.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/harris_matrix/stratigraph_viewer.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/harris_matrix/view.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/harris_matrix/view_graphviz.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/harris_matrix/viewer_3d_integrated.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/inventario/form.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/inventario/list.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/media/list.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/media/upload.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/messaging/contacts.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/operators/directory.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/paradata/edit.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/paradata/list.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/pdf/pottery_sheet.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/periodizzazione/form.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/periodizzazione/list.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/periodizzazione/periods.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/pottery/detail.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/pottery/form.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/pottery/import_form.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/pottery/list.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/pyarchinit_import_export/index.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/search/results.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/sites/detail.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/sites/form.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/sites/list.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/sites/map.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/stats/targeted.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/thesaurus/list.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/tma/form.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/tma/list.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/us/form.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/us/list.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/validation/report.html +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/test_prova_extended_matrix.graphml +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/three_d_builder_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/uploads/graphml/Sito Archeologico di Esempio_stratigraphy.graphml +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/uploads/graphml/Sito Archeologico di Esempio_stratigraphy.json +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/vocab_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Scavo archeologico_heriverse.json +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Scavo archeologico_stratigraphy.graphml +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Scavo archeologico_stratigraphy.json +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/web_interface/static/uploads/graphml/Sito Archeologico di Esempio_stratigraphy.json +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini.egg-info/dependency_links.txt +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini.egg-info/entry_points.txt +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini.egg-info/not-zip-safe +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini.egg-info/requires.txt +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini.egg-info/top_level.txt +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/requirements.txt +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/setup.cfg +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/setup.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/conftest.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/e2e/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/e2e/test_web_vocab_full_flow.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/fixtures/_generate_baseline_graphml.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/fixtures/_generate_harris_swimlane_synthetic.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/fixtures/_generate_synthetic_db.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/fixtures/build_legacy_with_pottery.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_admin_ai_settings_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_admin_backup_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_auto_regen_on_save.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_full_sync_flow.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_graph_import_flow.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_graph_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_harris_matrix_post_cutover.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_harris_matrix_visual_parity.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_harris_swimlane_routes_create_row.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_harris_swimlane_routes_load.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_harris_swimlane_routes_save.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_migrate_vocab_cli.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_paradata_routes_authors.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_paradata_routes_other_types.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_paradata_ui.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_pottery_completion.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_pottery_excel_roundtrip.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_pottery_legacy_upgrade.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_pottery_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_spec2_coverage_gaps.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_vocab_routes.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_yed_export_route.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/integration/test_yed_writer_parity.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/__init__.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_app_setting_model.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_app_setting_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_auto_regen.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_backup_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_bundle.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_concurrency_columns.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_concurrency_manager.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_connectivity_monitor.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_database_utils.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_deprecated_writers_shim.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_em_palette_vocab_backed.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_graphml_io_reader.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_graphml_io_writer.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_graphproj_edge_registry.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_graphproj_exceptions.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_graphproj_filesystem.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_graphproj_ingestor_apply.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_graphproj_ingestor_preview.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_graphproj_projector.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_harris_swimlane_compound_layout.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_harris_swimlane_exceptions.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_harris_swimlane_period_sync.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_harris_swimlane_row_provider.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_harris_swimlane_state_load.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_harris_swimlane_state_save.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_ingest_plan.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_inventario_schema.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_migrations_backup.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_migrations_idempotent.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_optimistic_locking.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_paradata_store_authors.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_paradata_store_basic.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_paradata_store_other_types.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_pottery_dto.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_pottery_model.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_pottery_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_s3d_converter_vocab_backed.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_site_service.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_sync_api.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_sync_cli.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_sync_orchestrator.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_sync_queue.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_sync_state_machine.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_us_dto_unita_tipo_validator.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_us_schema.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_uuid_manager.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_vocab_bootstrap_failures.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_vocab_exceptions.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_vocab_i18n.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_vocab_loader.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_vocab_provider.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_vocab_types.py +0 -0
- {pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/tests/unit/test_yed_writer.py +0 -0
|
@@ -1,3 +1,57 @@
|
|
|
1
|
+
## [2.4.2] - 2026-05-18
|
|
2
|
+
|
|
3
|
+
### Fixed (IT)
|
|
4
|
+
- `_get_session()` (Spec 3-bis endpoints) ora acquisisce la sessione DB in modo
|
|
5
|
+
lazy via `get_db_session()` se nessun before_request hook ha pre-impostato
|
|
6
|
+
`g.db_session`. Risolve l'errore HTTP 500 "g.db_session not set" che
|
|
7
|
+
bloccava load / save / + Row / Export yEd su Adarte in 2.4.0-2.4.1.
|
|
8
|
+
- Aggiunto `teardown_request` sul blueprint che rilascia la sessione lazy
|
|
9
|
+
alla fine della request.
|
|
10
|
+
|
|
11
|
+
### Fixed (EN)
|
|
12
|
+
- `_get_session()` now lazily opens a DB session via `get_db_session()` when no
|
|
13
|
+
before_request hook has bound one to `g.db_session`. Fixes the HTTP 500
|
|
14
|
+
"g.db_session not set" that broke load / save / + Row / Export on production
|
|
15
|
+
in 2.4.0-2.4.1.
|
|
16
|
+
- Added `teardown_request` hook releasing the lazy session at request end.
|
|
17
|
+
|
|
18
|
+
## [2.4.1] - 2026-05-18
|
|
19
|
+
|
|
20
|
+
### Fixed (IT)
|
|
21
|
+
- Editor Harris Matrix: `window._currentSite` ora inizializzato server-side
|
|
22
|
+
dall'hidden input `#site-name`, quindi i pulsanti Save / + New Row /
|
|
23
|
+
Export yEd GraphML funzionano anche se `/api/load/<site>` fallisce (caso
|
|
24
|
+
tipico: migration `node_uuid` non ancora applicata sul DB di produzione).
|
|
25
|
+
- Editor Harris Matrix: se `/api/load/<site>` ritorna errore, il corpo
|
|
26
|
+
della risposta viene mostrato in un alert con suggerimento di lanciare
|
|
27
|
+
`pyarchinit-mini-migrate-vocab --apply` (prima era silenzioso).
|
|
28
|
+
- Editor Harris Matrix: messaggio "No site loaded" sostituito con
|
|
29
|
+
istruzione esplicita di tornare all'indice del Creator.
|
|
30
|
+
|
|
31
|
+
### Added (IT)
|
|
32
|
+
- Nuova pagina `/paradata/` (sezione Tools): picker sito + bottoni rapidi
|
|
33
|
+
ai 5 tipi di paradata (authors, licenses, embargoes, documents, epochs).
|
|
34
|
+
Link aggiunto sia al dropdown navbar che alla sidebar laterale.
|
|
35
|
+
- Modal di aiuto nell'editor Harris (icona "?") che spiega la differenza
|
|
36
|
+
tra GraphML (s3dgraphy clean, auto-regen, per Datacenter/3D), Export
|
|
37
|
+
yEd GraphML (TableNode swimlane, on-demand, per yEd Desktop), DOT
|
|
38
|
+
(Graphviz), PNG (snapshot raster).
|
|
39
|
+
- Tooltip migliorati su tutti i pulsanti di export.
|
|
40
|
+
|
|
41
|
+
### Fixed (EN)
|
|
42
|
+
- Harris Matrix Editor: `window._currentSite` is now initialised server-side
|
|
43
|
+
from hidden input `#site-name`, so Save / + New Row / Export buttons work
|
|
44
|
+
even when `/api/load/<site>` fails (typical when the `node_uuid` migration
|
|
45
|
+
is still pending on production).
|
|
46
|
+
- Harris Matrix Editor: failed swimlane loads now surface the backend error
|
|
47
|
+
body in an alert with a hint to run `pyarchinit-mini-migrate-vocab`.
|
|
48
|
+
|
|
49
|
+
### Added (EN)
|
|
50
|
+
- New `/paradata/` landing page (Tools section): site picker + quick links
|
|
51
|
+
to the 5 paradata kinds. Sidebar entries added.
|
|
52
|
+
- Help modal explaining the four export formats (GraphML, yEd GraphML,
|
|
53
|
+
DOT, PNG) accessible via a question-mark icon on the editor toolbar.
|
|
54
|
+
|
|
1
55
|
## [2.4.0] - 2026-05-18
|
|
2
56
|
|
|
3
57
|
### Added (IT)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyarchinit-mini
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2
|
|
4
4
|
Summary: Lightweight archaeological data management system with REST API, Web UI, Desktop GUI, CLI, multi-user authentication, real-time collaboration, analytics dashboard, PyArchInit import/export, Heriverse/ATON export integration, and 3D CRUD viewer
|
|
5
5
|
Home-page: https://github.com/enzococca/pyarchinit-mini
|
|
6
6
|
Author: PyArchInit Team
|
|
@@ -638,22 +638,42 @@ from pyarchinit_mini.harris_swimlane.exceptions import PeriodSyncError
|
|
|
638
638
|
|
|
639
639
|
|
|
640
640
|
def _get_session():
|
|
641
|
-
"""Get
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
641
|
+
"""Get a request-scoped SQLAlchemy session for Spec 3-bis endpoints.
|
|
642
|
+
|
|
643
|
+
Reuses ``g.db_session`` if a before_request hook has set it. Otherwise
|
|
644
|
+
lazily opens one through the same path as ``get_db_session()`` and
|
|
645
|
+
binds it to ``g`` (the teardown_request hook below releases it). This
|
|
646
|
+
keeps the API contract simple — endpoints just call ``_get_session()``
|
|
647
|
+
and get a real ``Session`` back, whether or not the host app wires a
|
|
648
|
+
before_request hook (the production app in 2.4.x does not).
|
|
647
649
|
"""
|
|
648
650
|
db = getattr(g, "db_session", None)
|
|
649
|
-
if db is None:
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
651
|
+
if db is not None:
|
|
652
|
+
return db
|
|
653
|
+
cm = get_db_session()
|
|
654
|
+
db = cm.__enter__()
|
|
655
|
+
g.db_session = db
|
|
656
|
+
g._db_session_cm = cm
|
|
654
657
|
return db
|
|
655
658
|
|
|
656
659
|
|
|
660
|
+
@harris_creator_bp.teardown_request
|
|
661
|
+
def _release_lazy_db_session(exc): # noqa: ARG001 — exc is part of the signature
|
|
662
|
+
"""Close any session that ``_get_session()`` opened lazily for this request."""
|
|
663
|
+
cm = getattr(g, "_db_session_cm", None)
|
|
664
|
+
if cm is None:
|
|
665
|
+
return
|
|
666
|
+
try:
|
|
667
|
+
cm.__exit__(type(exc) if exc else None, exc, getattr(exc, "__traceback__", None))
|
|
668
|
+
except Exception:
|
|
669
|
+
pass
|
|
670
|
+
finally:
|
|
671
|
+
try:
|
|
672
|
+
delattr(g, "_db_session_cm")
|
|
673
|
+
except AttributeError:
|
|
674
|
+
pass
|
|
675
|
+
|
|
676
|
+
|
|
657
677
|
@harris_creator_bp.get("/api/swimlanes/<site>")
|
|
658
678
|
def api_get_swimlanes(site: str):
|
|
659
679
|
"""List swimlane rows for the site."""
|
{pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/paradata_ui_routes.py
RENAMED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
Backed by ParadataStore (JSON sidecar). REST counterparts live in
|
|
4
4
|
paradata_routes.py.
|
|
5
5
|
"""
|
|
6
|
-
|
|
6
|
+
import os
|
|
7
|
+
|
|
8
|
+
from flask import Blueprint, current_app, render_template, request, redirect, url_for, abort
|
|
7
9
|
|
|
8
10
|
from pyarchinit_mini.graphproj.paradata_store import ParadataStore
|
|
9
11
|
from pyarchinit_mini.graphproj.exceptions import ParadataConflict, ParadataNotFound
|
|
@@ -47,6 +49,25 @@ def _kind_or_404(kind):
|
|
|
47
49
|
return KIND_DEF[kind]
|
|
48
50
|
|
|
49
51
|
|
|
52
|
+
@paradata_ui_bp.get("/", endpoint="index")
|
|
53
|
+
def index():
|
|
54
|
+
"""Paradata landing: list available sites + the 5 kinds."""
|
|
55
|
+
from pyarchinit_mini.models.site import Site
|
|
56
|
+
if hasattr(current_app, "db_manager"):
|
|
57
|
+
session_ctx = current_app.db_manager.connection.get_session()
|
|
58
|
+
else:
|
|
59
|
+
from pyarchinit_mini.database.connection import DatabaseConnection
|
|
60
|
+
db_url = os.getenv("DATABASE_URL", "sqlite:///pyarchinit_mini.db")
|
|
61
|
+
session_ctx = DatabaseConnection.from_url(db_url).get_session()
|
|
62
|
+
with session_ctx as db:
|
|
63
|
+
sites = [s.sito for s in db.query(Site).order_by(Site.sito).all()]
|
|
64
|
+
return render_template(
|
|
65
|
+
"paradata/index.html",
|
|
66
|
+
sites=sites,
|
|
67
|
+
kinds=list(KIND_DEF.keys()),
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
|
|
50
71
|
@paradata_ui_bp.get("/<site>/<kind>", endpoint="list")
|
|
51
72
|
def list_(site, kind):
|
|
52
73
|
cfg = _kind_or_404(kind)
|
{pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/web_interface/templates/base.html
RENAMED
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
<li><hr class="dropdown-divider"></li>
|
|
85
85
|
<li><h6 class="dropdown-header">{{ _('Tools') }}</h6></li>
|
|
86
86
|
<li><a class="dropdown-item" href="{{ url_for('harris_creator.index') }}"><i class="fas fa-project-diagram"></i> {{ _('Harris Matrix Creator') }}</a></li>
|
|
87
|
+
<li><a class="dropdown-item" href="{{ url_for('paradata_ui.index') }}"><i class="fas fa-tags"></i> {{ _('Paradata') }}</a></li>
|
|
87
88
|
<li><a class="dropdown-item" href="{{ url_for('three_d_builder.blender_viewer') }}"><i class="fas fa-cube"></i> {{ _('Blender 3D') }}</a></li>
|
|
88
89
|
<li><a class="dropdown-item" href="{{ url_for('upload_media') }}"><i class="fas fa-images"></i> {{ _('Media') }}</a></li>
|
|
89
90
|
<li><a class="dropdown-item" href="{{ url_for('excel_import.index') }}"><i class="fas fa-file-excel"></i> {{ _('Excel Import') }}</a></li>
|
|
@@ -177,6 +178,7 @@
|
|
|
177
178
|
<li><a href="{{ url_for('upload_media') }}"><i class="fas fa-upload"></i> {{ _('Upload Media') }}</a></li>
|
|
178
179
|
<li><a href="{{ url_for('media_list') }}"><i class="fas fa-photo-video"></i> {{ _('Media Files') }}</a></li>
|
|
179
180
|
<li><a href="{{ url_for('harris_creator.index') }}"><i class="fas fa-project-diagram"></i> {{ _('Harris Matrix Creator') }}</a></li>
|
|
181
|
+
<li><a href="{{ url_for('paradata_ui.index') }}"><i class="fas fa-tags"></i> {{ _('Paradata') }}</a></li>
|
|
180
182
|
<li><a href="{{ url_for('export_harris_graphml') }}"><i class="fas fa-sitemap"></i> {{ _('Harris Export') }}</a></li>
|
|
181
183
|
</ul>
|
|
182
184
|
</div>
|
|
@@ -158,19 +158,24 @@
|
|
|
158
158
|
<button class="btn btn-success btn-sm" id="save-btn" title="Save to database">
|
|
159
159
|
<i class="fas fa-save"></i> Save
|
|
160
160
|
</button>
|
|
161
|
-
<button class="btn btn-info btn-sm" id="export-graphml-btn"
|
|
161
|
+
<button class="btn btn-info btn-sm" id="export-graphml-btn"
|
|
162
|
+
title="EM-canonical GraphML (s3dgraphy schema, for Datacenter / 3D pipeline)">
|
|
162
163
|
<i class="fas fa-download"></i> GraphML
|
|
163
164
|
</button>
|
|
164
|
-
<button class="btn btn-secondary btn-sm" id="export-dot-btn" title="Export to DOT">
|
|
165
|
+
<button class="btn btn-secondary btn-sm" id="export-dot-btn" title="Export to Graphviz DOT">
|
|
165
166
|
<i class="fas fa-download"></i> DOT
|
|
166
167
|
</button>
|
|
167
|
-
<button class="btn btn-warning btn-sm" id="export-png-btn" title="Export as PNG">
|
|
168
|
+
<button class="btn btn-warning btn-sm" id="export-png-btn" title="Export current view as PNG image">
|
|
168
169
|
<i class="fas fa-image"></i> PNG
|
|
169
170
|
</button>
|
|
170
171
|
<!-- Spec 3-bis: Harris Swimlane controls -->
|
|
171
|
-
<button onclick="showNewRowModal()" class="btn btn-primary btn-sm" title="Add a new swimlane row">+ New Row</button>
|
|
172
|
-
<button onclick="saveSwimlaneState()" class="btn btn-success btn-sm" title="Save swimlane changes">💾 Save Swimlane</button>
|
|
173
|
-
<button onclick="exportYedGraphml()" class="btn btn-info btn-sm"
|
|
172
|
+
<button onclick="showNewRowModal()" class="btn btn-primary btn-sm" title="Add a new swimlane row (period + phase)">+ New Row</button>
|
|
173
|
+
<button onclick="saveSwimlaneState()" class="btn btn-success btn-sm" title="Save swimlane changes back to the database">💾 Save Swimlane</button>
|
|
174
|
+
<button onclick="exportYedGraphml()" class="btn btn-info btn-sm"
|
|
175
|
+
title="yEd-flavored GraphML with TableNode swimlanes (open in yEd Desktop)">⬇ Export yEd GraphML</button>
|
|
176
|
+
<button type="button" class="btn btn-outline-info btn-sm" data-bs-toggle="modal" data-bs-target="#exportFormatsHelp" title="What are these export formats?">
|
|
177
|
+
<i class="fas fa-question-circle"></i>
|
|
178
|
+
</button>
|
|
174
179
|
<a href="{{ url_for('harris_creator.index') }}" class="btn btn-outline-secondary btn-sm">
|
|
175
180
|
<i class="fas fa-arrow-left"></i> Back
|
|
176
181
|
</a>
|
|
@@ -373,6 +378,47 @@
|
|
|
373
378
|
<input type="hidden" id="site-name" value="{{ site_name }}">
|
|
374
379
|
<input type="hidden" id="existing-nodes" value="{{ existing_nodes }}">
|
|
375
380
|
<input type="hidden" id="existing-relationships" value="{{ existing_relationships }}">
|
|
381
|
+
|
|
382
|
+
<!-- Export formats help modal -->
|
|
383
|
+
<div class="modal fade" id="exportFormatsHelp" tabindex="-1" aria-hidden="true">
|
|
384
|
+
<div class="modal-dialog modal-lg">
|
|
385
|
+
<div class="modal-content">
|
|
386
|
+
<div class="modal-header">
|
|
387
|
+
<h5 class="modal-title"><i class="fas fa-question-circle"></i> Export formats — GraphML vs yEd GraphML</h5>
|
|
388
|
+
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
389
|
+
</div>
|
|
390
|
+
<div class="modal-body">
|
|
391
|
+
<p>The editor exposes <strong>two GraphML outputs</strong> that look similar but serve different audiences.</p>
|
|
392
|
+
<table class="table table-bordered table-sm">
|
|
393
|
+
<thead class="table-light">
|
|
394
|
+
<tr><th></th><th class="text-info">GraphML</th><th class="text-info">Export yEd GraphML</th></tr>
|
|
395
|
+
</thead>
|
|
396
|
+
<tbody>
|
|
397
|
+
<tr><th>Trigger</th><td>Auto-regenerated on every US save (Spec 2)</td><td>On-demand when you click the button (Spec 3-bis)</td></tr>
|
|
398
|
+
<tr><th>File</th><td><code>data/paradata/<site>/stratigraphy.graphml</code></td><td><code>data/exports/harris_yed/<site>-harris-yed.graphml</code></td></tr>
|
|
399
|
+
<tr><th>Schema</th><td>s3dgraphy clean — canonical EM nodes (StratigraphicNode) and edges (<code>overlies</code>, <code>abuts</code>, <code>is_after</code>, …)</td><td>yEd-flavored — <code>y:TableNode</code> + <code>y:Rows</code> for swimlanes, <code>y:ShapeNode</code> children with VocabProvider colors</td></tr>
|
|
400
|
+
<tr><th>Audience</th><td>EM Datacenter, 3D pipeline, Heriverse, programmatic consumers</td><td>Humans using <strong>yEd Desktop</strong> for review/printing</td></tr>
|
|
401
|
+
<tr><th>Round-trip</th><td>Yes (s3dgraphy reader)</td><td>No (one-way export for presentation)</td></tr>
|
|
402
|
+
</tbody>
|
|
403
|
+
</table>
|
|
404
|
+
<h6>DOT / PNG</h6>
|
|
405
|
+
<ul>
|
|
406
|
+
<li><strong>DOT</strong> — Graphviz source, useful for batch rendering or version-controlling diagrams as text.</li>
|
|
407
|
+
<li><strong>PNG</strong> — Rasterized snapshot of the current Cytoscape view.</li>
|
|
408
|
+
</ul>
|
|
409
|
+
<h6>Quick reference</h6>
|
|
410
|
+
<ul>
|
|
411
|
+
<li>Need to feed a 3D / EM pipeline → use <strong>GraphML</strong>.</li>
|
|
412
|
+
<li>Need to open in yEd Desktop and tweak by hand → use <strong>Export yEd GraphML</strong>.</li>
|
|
413
|
+
<li>Need a quick image for a report → use <strong>PNG</strong>.</li>
|
|
414
|
+
</ul>
|
|
415
|
+
</div>
|
|
416
|
+
<div class="modal-footer">
|
|
417
|
+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
|
418
|
+
</div>
|
|
419
|
+
</div>
|
|
420
|
+
</div>
|
|
421
|
+
</div>
|
|
376
422
|
{% endblock %}
|
|
377
423
|
|
|
378
424
|
{% block extra_js %}
|
|
@@ -392,17 +438,29 @@
|
|
|
392
438
|
<script>
|
|
393
439
|
// === Spec 3-bis: Harris Swimlane integration ===
|
|
394
440
|
|
|
441
|
+
// Initialize _currentSite server-side from hidden input so Save/+ Row/Export
|
|
442
|
+
// work even if loadSwimlaneState() never succeeds (e.g. DB migration pending).
|
|
443
|
+
window._currentSite = (document.getElementById('site-name') || {}).value || null;
|
|
444
|
+
|
|
395
445
|
async function loadSwimlaneState(site) {
|
|
396
446
|
try {
|
|
397
447
|
const r = await fetch(`/harris-creator/api/load/${encodeURIComponent(site)}`);
|
|
398
448
|
if (!r.ok) {
|
|
399
|
-
|
|
449
|
+
const body = await r.text();
|
|
450
|
+
console.error("Failed to load swimlane state:", body);
|
|
451
|
+
// Surface backend errors so the user understands why swimlanes
|
|
452
|
+
// are missing (typical cause: node_uuid column / migration not run).
|
|
453
|
+
const msg = body.length > 400 ? body.slice(0, 400) + '...' : body;
|
|
454
|
+
alert(`Swimlane load failed (HTTP ${r.status}):\n\n${msg}\n\n` +
|
|
455
|
+
`If you see "node_uuid does not exist", run the migration on the server:\n` +
|
|
456
|
+
` pyarchinit-mini-migrate-vocab --apply --yes --database <DSN>`);
|
|
400
457
|
return;
|
|
401
458
|
}
|
|
402
459
|
const state = await r.json();
|
|
403
460
|
renderSwimlaneState(state);
|
|
404
461
|
} catch (e) {
|
|
405
462
|
console.error("loadSwimlaneState error:", e);
|
|
463
|
+
alert(`Swimlane load error: ${e.message}`);
|
|
406
464
|
}
|
|
407
465
|
}
|
|
408
466
|
|
|
@@ -470,10 +528,10 @@ function renderSwimlaneState(state) {
|
|
|
470
528
|
console.log(`Loaded swimlane state for ${state.site}: ${state.rows.length} rows, ${usNodes.length} US, ${state.edges.length} edges`);
|
|
471
529
|
}
|
|
472
530
|
|
|
473
|
-
// Auto-load on page ready
|
|
531
|
+
// Auto-load on page ready: use ?site=... if present, else server-rendered site_name.
|
|
474
532
|
window.addEventListener('DOMContentLoaded', () => {
|
|
475
533
|
const params = new URLSearchParams(window.location.search);
|
|
476
|
-
const site = params.get('site');
|
|
534
|
+
const site = params.get('site') || window._currentSite;
|
|
477
535
|
if (site) {
|
|
478
536
|
// Wait briefly for Cytoscape to init then load
|
|
479
537
|
const tryLoad = (retries) => {
|
|
@@ -545,7 +603,7 @@ function hideUnsavedIndicator() {
|
|
|
545
603
|
async function saveSwimlaneState() {
|
|
546
604
|
const site = window._currentSite;
|
|
547
605
|
if (!site) {
|
|
548
|
-
alert('No site
|
|
606
|
+
alert('No site selected. Return to the Harris Matrix Creator index and choose or create a site.');
|
|
549
607
|
return;
|
|
550
608
|
}
|
|
551
609
|
try {
|
|
@@ -576,7 +634,7 @@ async function saveSwimlaneState() {
|
|
|
576
634
|
function showNewRowModal() {
|
|
577
635
|
const site = window._currentSite;
|
|
578
636
|
if (!site) {
|
|
579
|
-
alert('No site
|
|
637
|
+
alert('No site selected. Return to the Harris Matrix Creator index and choose or create a site.');
|
|
580
638
|
return;
|
|
581
639
|
}
|
|
582
640
|
const period = prompt('Period name:');
|
|
@@ -610,7 +668,7 @@ function showNewRowModal() {
|
|
|
610
668
|
function exportYedGraphml() {
|
|
611
669
|
const site = window._currentSite;
|
|
612
670
|
if (!site) {
|
|
613
|
-
alert('No site
|
|
671
|
+
alert('No site selected. Return to the Harris Matrix Creator index and choose or create a site.');
|
|
614
672
|
return;
|
|
615
673
|
}
|
|
616
674
|
window.location.href = `/harris-creator/api/export/${encodeURIComponent(site)}/yed-graphml`;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{% extends "base.html" %}
|
|
2
|
+
{% block title %}{{ _('Paradata') }} - PyArchInit-Mini{% endblock %}
|
|
3
|
+
{% block content %}
|
|
4
|
+
<div class="container py-4">
|
|
5
|
+
<h1><i class="fas fa-tags"></i> {{ _('Paradata') }}</h1>
|
|
6
|
+
<p class="text-muted">
|
|
7
|
+
{{ _('Per-site paradata sidecar: authors, licenses, embargoes, documents, epochs. Stored as JSON next to the auto-regenerated stratigraphy graph.') }}
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
{% if not sites %}
|
|
11
|
+
<div class="alert alert-info">{{ _('No sites available. Create a site first.') }}</div>
|
|
12
|
+
{% else %}
|
|
13
|
+
<div class="card mb-4">
|
|
14
|
+
<div class="card-body">
|
|
15
|
+
<label for="site-picker" class="form-label">{{ _('Choose a site') }}</label>
|
|
16
|
+
<select id="site-picker" class="form-select">
|
|
17
|
+
<option value="">— {{ _('select') }} —</option>
|
|
18
|
+
{% for s in sites %}<option value="{{ s }}">{{ s }}</option>{% endfor %}
|
|
19
|
+
</select>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div id="kind-buttons" class="d-none">
|
|
24
|
+
<h5>{{ _('Manage') }}:</h5>
|
|
25
|
+
<div class="d-flex flex-wrap gap-2">
|
|
26
|
+
{% for k in kinds %}
|
|
27
|
+
<a id="kind-link-{{ k }}" href="#" class="btn btn-outline-primary">
|
|
28
|
+
<i class="fas fa-folder"></i> {{ k|capitalize }}
|
|
29
|
+
</a>
|
|
30
|
+
{% endfor %}
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
{% endif %}
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<script>
|
|
37
|
+
(function() {
|
|
38
|
+
const picker = document.getElementById('site-picker');
|
|
39
|
+
if (!picker) return;
|
|
40
|
+
const wrap = document.getElementById('kind-buttons');
|
|
41
|
+
const base = "{{ url_for('paradata_ui.list', site='__SITE__', kind='__KIND__') }}";
|
|
42
|
+
picker.addEventListener('change', () => {
|
|
43
|
+
const site = picker.value;
|
|
44
|
+
if (!site) { wrap.classList.add('d-none'); return; }
|
|
45
|
+
wrap.classList.remove('d-none');
|
|
46
|
+
{% for k in kinds %}
|
|
47
|
+
document.getElementById('kind-link-{{ k }}').href =
|
|
48
|
+
base.replace('__SITE__', encodeURIComponent(site)).replace('__KIND__', '{{ k }}');
|
|
49
|
+
{% endfor %}
|
|
50
|
+
});
|
|
51
|
+
})();
|
|
52
|
+
</script>
|
|
53
|
+
{% endblock %}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyarchinit-mini
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2
|
|
4
4
|
Summary: Lightweight archaeological data management system with REST API, Web UI, Desktop GUI, CLI, multi-user authentication, real-time collaboration, analytics dashboard, PyArchInit import/export, Heriverse/ATON export integration, and 3D CRUD viewer
|
|
5
5
|
Home-page: https://github.com/enzococca/pyarchinit-mini
|
|
6
6
|
Author: PyArchInit Team
|
|
@@ -355,6 +355,7 @@ pyarchinit_mini/web_interface/templates/media/upload.html
|
|
|
355
355
|
pyarchinit_mini/web_interface/templates/messaging/contacts.html
|
|
356
356
|
pyarchinit_mini/web_interface/templates/operators/directory.html
|
|
357
357
|
pyarchinit_mini/web_interface/templates/paradata/edit.html
|
|
358
|
+
pyarchinit_mini/web_interface/templates/paradata/index.html
|
|
358
359
|
pyarchinit_mini/web_interface/templates/paradata/list.html
|
|
359
360
|
pyarchinit_mini/web_interface/templates/pdf/pottery_sheet.html
|
|
360
361
|
pyarchinit_mini/web_interface/templates/periodizzazione/form.html
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyarchinit-mini"
|
|
7
|
-
version = "2.4.
|
|
7
|
+
version = "2.4.2"
|
|
8
8
|
description = "Lightweight archaeological data management system with REST API, Web UI, Desktop GUI, CLI, multi-user authentication, real-time collaboration, analytics dashboard, PyArchInit import/export, Heriverse/ATON export integration, and 3D CRUD viewer"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "GPL-2.0"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""Verify _get_session() lazily acquires a session when g.db_session is not bound.
|
|
2
|
+
|
|
3
|
+
Prior to 2.4.2, _get_session() raised RuntimeError when no before_request hook
|
|
4
|
+
had set g.db_session — but no such hook exists in the production app, so every
|
|
5
|
+
swimlane request 500'd. 2.4.2 lazy-acquires a session through the same path as
|
|
6
|
+
get_db_session() and binds it to g for the duration of the request.
|
|
7
|
+
"""
|
|
8
|
+
import pytest
|
|
9
|
+
from flask import Flask
|
|
10
|
+
from sqlalchemy import create_engine
|
|
11
|
+
|
|
12
|
+
from pyarchinit_mini.models.base import Base
|
|
13
|
+
from pyarchinit_mini.web_interface.harris_creator_routes import harris_creator_bp
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@pytest.fixture
|
|
17
|
+
def client_no_session(tmp_path, monkeypatch):
|
|
18
|
+
db_path = tmp_path / "swimlane_lazy.db"
|
|
19
|
+
db_url = f"sqlite:///{db_path}"
|
|
20
|
+
# Pre-create the schema so lazy session has tables to query.
|
|
21
|
+
Base.metadata.create_all(create_engine(db_url))
|
|
22
|
+
monkeypatch.setenv("DATABASE_URL", db_url)
|
|
23
|
+
app = Flask(__name__)
|
|
24
|
+
app.config["TESTING"] = True
|
|
25
|
+
app.register_blueprint(harris_creator_bp)
|
|
26
|
+
# Deliberately NO before_request hook setting g.db_session — we rely on
|
|
27
|
+
# _get_session() lazy acquisition.
|
|
28
|
+
yield app.test_client()
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_swimlanes_endpoint_lazy_acquires_session(client_no_session):
|
|
32
|
+
"""Without a pre-bound g.db_session, the endpoint should still answer 200
|
|
33
|
+
by lazily opening a fresh session via get_db_session()."""
|
|
34
|
+
r = client_no_session.get("/harris-creator/api/swimlanes/EmptySite")
|
|
35
|
+
assert r.status_code == 200, r.get_data(as_text=True)
|
|
36
|
+
body = r.get_json()
|
|
37
|
+
assert isinstance(body, list)
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"""Verify _get_session() fails loud when g.db_session is not bound."""
|
|
2
|
-
import pytest
|
|
3
|
-
from flask import Flask
|
|
4
|
-
|
|
5
|
-
from pyarchinit_mini.web_interface.harris_creator_routes import harris_creator_bp
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
@pytest.fixture
|
|
9
|
-
def client_no_session():
|
|
10
|
-
app = Flask(__name__)
|
|
11
|
-
app.config["TESTING"] = True
|
|
12
|
-
app.register_blueprint(harris_creator_bp)
|
|
13
|
-
# Deliberately NO before_request hook setting g.db_session
|
|
14
|
-
yield app.test_client()
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def test_swimlanes_endpoint_fails_loud_without_session(client_no_session):
|
|
18
|
-
r = client_no_session.get("/harris-creator/api/swimlanes/Volterra")
|
|
19
|
-
# Should return 500 with explicit error, NOT silent AttributeError
|
|
20
|
-
assert r.status_code == 500
|
|
21
|
-
body = r.get_json() or {}
|
|
22
|
-
# Either "internal" generic error catch or our explicit message
|
|
23
|
-
assert "error" in body
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/data/pyarchinit_tutorial_backup_20251030_093228.db
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli/extended_matrix_import.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/cli/pyarchinit_import_export_cli.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/config/connection_manager.py
RENAMED
|
File without changes
|
{pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/config/em_node_config_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/concurrency_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/database_creator.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
|
{pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/migrations/__init__.py
RENAMED
|
File without changes
|
{pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/migrations/backup.py
RENAMED
|
File without changes
|
{pyarchinit_mini-2.4.0 → pyarchinit_mini-2.4.2}/pyarchinit_mini/database/postgres_installer.py
RENAMED
|
File without changes
|