educommon 3.9.2__tar.gz → 3.9.4__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.
- {educommon-3.9.2/src/educommon.egg-info → educommon-3.9.4}/PKG-INFO +3 -2
- {educommon-3.9.2 → educommon-3.9.4}/setup.py +2 -1
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/proxies.py +5 -4
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/models.py +2 -3
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/app_meta.py +4 -4
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/mixins/validation.py +2 -2
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/model_view/__init__.py +4 -3
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/partitioning/__init__.py +2 -2
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/partitioning/management/commands/clear_table.py +4 -3
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/partitioning/management/commands/split_table.py +4 -3
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/utils.py +43 -44
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/atcfs/app_meta.py +3 -3
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/logger/loggers.py +2 -2
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/__init__.py +3 -3
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/extensions/listeners/delete_check/listeners.py +1 -3
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/base.py +31 -6
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/builders/excel/_base.py +6 -5
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/secure_media/app_meta.py +7 -6
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/system_app/management/commands/delete_objects.py +2 -2
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/version.conf +5 -5
- {educommon-3.9.2 → educommon-3.9.4/src/educommon.egg-info}/PKG-INFO +3 -2
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon.egg-info/requires.txt +2 -1
- {educommon-3.9.2 → educommon-3.9.4}/MANIFEST.in +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/README.rst +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/UPGRADE.rst +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/setup.cfg +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/about/README.rst +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/about/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/about/apps.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/about/static/edu_about/barsgroup.png +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/about/ui/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/about/ui/about-window.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/about/ui/actions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/about/ui/common-tab.html +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/about/ui/packages-tab.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/about/ui/postgresql-extensions-tab.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/about/ui/ui.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/about/utils.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/actions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/apps.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/consts.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/exceptions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/helpers.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/locker.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/migrations/0001_initial.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/migrations/0002_task_type_and_status_data.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/migrations/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/models.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/tasks.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/templates/ui-js/async-task-list-win.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/templates/ui-js/async-task-revoke.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/templates/ui-js/async-task-view-win.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_task/ui.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_tasks/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_tasks/apps.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_tasks/exceptions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_tasks/fixtures/initial_data.json +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_tasks/locks.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_tasks/migrations/0001_initial.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_tasks/migrations/0002_load_initial_data.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_tasks/migrations/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_tasks/models.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_tasks/statuses.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/async_tasks/tasks.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/actions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/app_meta.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/apps.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/constants.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/error_log/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/error_log/actions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/helpers.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/management/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/management/commands/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/management/commands/reinstall_audit_log.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/middleware.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/migrations/0001_initial.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/migrations/0002_install_audit_log.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/migrations/0003_logproxy.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/migrations/0004_reinstall_audit_log.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/migrations/0005_postgresql_error.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/migrations/0006_auto_20200806_1707.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/migrations/0007_create_selective_tables_function.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/migrations/0008_table_logged.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/migrations/0009_reinstall_audit_log.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/migrations/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/models.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/permissions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/routers.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/sql/configure_audit_log.sql +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/sql/install_audit_log.sql +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/ui.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/utils/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/audit_log/utils/operations.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/actions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/app_meta.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/backends/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/backends/base.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/backends/caching.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/backends/simple.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/checker.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/config.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/constants.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/management/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/management/commands/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/management/commands/rbac.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/manager.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/migrations/0001_initial.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/migrations/0002_model_modifier_metaclass_fix.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/migrations/0003_permission_hidden.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/migrations/0004_auto_20171024_1245.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/migrations/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/permissions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/templates/rbac/role-add-window.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/templates/rbac/role-edit-window.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/templates/rbac/roles-list-window.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/templates/rbac/roles-view-list-window.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/ui.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/utils.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/rbac/validators.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/actions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/checkers.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/const.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/migrations/0001_initial.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/migrations/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/models.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/static/simple_auth/simple_auth.css +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/templates/simple_auth/change_reset_password_page.html +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/templates/simple_auth/email/reset_password.html +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/templates/simple_auth/login_page.html +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/templates/simple_auth/reset_password_page.html +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/ui.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/auth/simple_auth/validators.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/actions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/app_meta.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/base.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/catalogs.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/contingent_plugin/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/contingent_plugin/actions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/contingent_plugin/apps.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/contingent_plugin/migrations/0001_initial.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/contingent_plugin/migrations/0002_add_contingent_model_deleted.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/contingent_plugin/migrations/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/contingent_plugin/model_views.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/contingent_plugin/models.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/contingent_plugin/observer.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/contingent_plugin/plugin_meta.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/contingent_plugin/storage.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/contingent_plugin/utils.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/json_data/icao.json +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/json_data/okogu.json +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/contingent/json_data/oksm.json +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/fields.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/migration/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/migration/operations.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/mixins/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/mixins/date_interval.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/model_view/table-view.html +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/models.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/observer.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/partitioning/README.md +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/partitioning/management/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/partitioning/management/commands/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/partitioning/management/commands/apply_partitioning.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/partitioning/partitioning.sql +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/partitioning/triggers.sql +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/routers.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/signals.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/validators/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/db/validators/simple.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/atcfs/README.rst +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/atcfs/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/atcfs/api.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/atcfs/exceptions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/atcfs/management/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/atcfs/management/commands/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/atcfs/management/commands/atcfs_migrate.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/atcfs/models.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/atcfs/monkey_patching.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/atcfs/settings.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/atcfs/storage.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/django/storages/atcfs/templates/atcfs_unavailable.html +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/extjs/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/extjs/fields/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/extjs/fields/input_params.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/importer/XLSReader.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/importer/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/importer/api.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/importer/constants.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/importer/loggers.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/importer/proxy.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/importer/proxy_import.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/importer/refactoring-notes.txt +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/importer/report.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/importer/test_file.xls +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/importer/ui.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/importer/validators.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/integration_entities/README.rst +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/integration_entities/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/integration_entities/consts.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/integration_entities/entities.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/integration_entities/enums.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/integration_entities/helpers.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/integration_entities/mixins.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ioc/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/logger/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/logger/app_settings.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/logger/apps.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/logger/consts.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/logger/formatters.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/logger/helpers.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/logger/records.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/extensions/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/extensions/listeners/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/extensions/listeners/delete_check/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/extensions/listeners/delete_check/cancel-confirm-window.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/extensions/listeners/delete_check/mixins.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/extensions/listeners/delete_check/related-objects-window.html +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/extensions/listeners/delete_check/signals.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/extensions/listeners/delete_check/ui.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/extensions/listeners/delete_check/utils.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/extensions/ui.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/transaction_context.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/objectpack/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/objectpack/actions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/objectpack/apps.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/objectpack/filters.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/objectpack/templates/base-grid-window.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/objectpack/templates/filter-panel.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/objectpack/templates/grid-panel.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/objectpack/templates/multiSelectWindow.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/objectpack/templates/multiselect-page-fix.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/objectpack/templates/relations-check-mixin-template.html +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/objectpack/ui.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/actions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/README.rst +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/app_meta.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/apps.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/builders/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/builders/excel/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/builders/excel/_header.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/builders/excel/constants.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/builders/excel/product.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/builders/excel/with_merged_cells.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/config.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/constants.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/editor/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/editor/actions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/editor/edit-window.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/editor/list-window.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/editor/ui.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/exceptions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/migrations/0001_initial.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/migrations/0002_report_filters.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/migrations/0003_reportfilter_exclude.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/migrations/0004_reportfilter_fields.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/migrations/0005_reportcolumn_visible.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/migrations/0006_reportsorting.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/migrations/0007_include_available_units.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/migrations/0008_auto_20170407_1318.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/migrations/0009_auto_20180405_0642.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/migrations/0010_add_aggregate_fields.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/migrations/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/mixins.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/models.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/plugin_meta.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/registries.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/utils.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/validators.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/reporter.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/utils.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/rest/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/rest/actions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/rest/context.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/rest/controllers.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/rest/misc.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/rest/mixins.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/secure_media/README.rst +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/secure_media/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/thread_data.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/caching.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/conversion.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/crypto.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/date.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/db/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/db/postgresql.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/fonts/Arial.ttf +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/fonts/Calibri.ttf +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/fonts/Tahoma.ttf +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/fonts/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/licence/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/licence/converters.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/misc.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/object_grid.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/patches.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/plugins.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/registry.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/seqtools.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/serializer.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/storage.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/system.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/system_app/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/system_app/management/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/system_app/management/commands/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/system_app/templatetags/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/system_app/templatetags/educommon.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/ui.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/xml/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/xml/catalog.json +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/xml/resolver.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/xml/saml-schema-assertion-2.0.xsd +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/xml/saml-schema-protocol-2.0.xsd +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/xml/xenc-schema.xsd +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/utils/xml/xmldsig-core-schema.xsd +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/README.rst +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/actions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/app_meta.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/base.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/migrations/0001_initial.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/migrations/0002_auto_20160628_1334.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/migrations/0003_add_fields_to_smev_logs.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/migrations/0004_auto_20160727_1600.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/migrations/0005_auto_20161130_1615.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/migrations/0006_auto_20170327_1027.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/migrations/0007_auto_20180607_1040.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/migrations/0008_auto_20180713_1445.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/migrations/0009_auto_20201130_1553.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/migrations/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/models.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/provider.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/report.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/smev/__init__.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/smev/applications.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/smev/exceptions.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/templates/report/smev_logs.xlsx +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/templates/ui-js/smev-logs-list-window.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/templates/ui-js/smev-logs-report-setting-window.js +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/ui.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon/ws_log/utils.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon.egg-info/SOURCES.txt +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon.egg-info/dependency_links.txt +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/src/educommon.egg-info/top_level.txt +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/test_contingent_plugin_utils.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/test_dates_splitter.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/test_delete_check.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/test_delete_objects.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/test_django_db_utils.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/test_interval_mixins.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/test_patches.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/test_personal_data_fields.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/test_report.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/test_service_db_router.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/test_utils.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/test_utils_plugins.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/test_validators.py +0 -0
- {educommon-3.9.2 → educommon-3.9.4}/tests/tests_rbac.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: educommon
|
3
|
-
Version: 3.9.
|
3
|
+
Version: 3.9.4
|
4
4
|
Summary: Общая кодовая база для проектов БЦ Образование
|
5
5
|
Home-page: https://stash.bars-open.ru/projects/EDUBASE/repos/educommon
|
6
6
|
Author: BARS Group
|
@@ -17,7 +17,8 @@ Classifier: Programming Language :: Python :: 3.8
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.9
|
18
18
|
Classifier: Framework :: Django :: 2.2
|
19
19
|
Classifier: Framework :: Django :: 3.0
|
20
|
-
Requires-Dist:
|
20
|
+
Requires-Dist: packaging<24,>=21.3
|
21
|
+
Requires-Dist: Django<3.2,>=2.2
|
21
22
|
Requires-Dist: django-mptt
|
22
23
|
Requires-Dist: python-dateutil
|
23
24
|
Requires-Dist: termcolor
|
@@ -24,8 +24,9 @@ from django.utils.dateparse import (
|
|
24
24
|
parse_time,
|
25
25
|
)
|
26
26
|
from django.utils.encoding import (
|
27
|
-
|
27
|
+
force_str,
|
28
28
|
)
|
29
|
+
|
29
30
|
from m3_django_compat import (
|
30
31
|
get_related,
|
31
32
|
)
|
@@ -78,7 +79,7 @@ class LogProxy(AuditLog):
|
|
78
79
|
if model:
|
79
80
|
verbose = model._meta.verbose_name
|
80
81
|
if verbose:
|
81
|
-
return ' - '.join((
|
82
|
+
return ' - '.join((force_str(verbose), model.__name__))
|
82
83
|
return model.__name__
|
83
84
|
return self.table.name
|
84
85
|
|
@@ -130,7 +131,7 @@ class LogProxy(AuditLog):
|
|
130
131
|
if self.fields:
|
131
132
|
field = self.fields.get(column_name)
|
132
133
|
if field and field.verbose_name:
|
133
|
-
name =
|
134
|
+
name = force_str(field.verbose_name)
|
134
135
|
return name
|
135
136
|
|
136
137
|
def convert_field_value(self, column_name, value):
|
@@ -169,7 +170,7 @@ class LogProxy(AuditLog):
|
|
169
170
|
value = get_choice(field.choices, value)
|
170
171
|
except (ValueError, TypeError):
|
171
172
|
pass
|
172
|
-
return
|
173
|
+
return force_str(value)
|
173
174
|
|
174
175
|
@property
|
175
176
|
def object_string(self):
|
@@ -5,14 +5,12 @@ from django.contrib.contenttypes.models import (
|
|
5
5
|
)
|
6
6
|
from django.core.exceptions import (
|
7
7
|
NON_FIELD_ERRORS,
|
8
|
+
FieldDoesNotExist,
|
8
9
|
ValidationError,
|
9
10
|
)
|
10
11
|
from django.db import (
|
11
12
|
models,
|
12
13
|
)
|
13
|
-
from django.db.models.fields import (
|
14
|
-
FieldDoesNotExist,
|
15
|
-
)
|
16
14
|
from django.db.models.signals import (
|
17
15
|
post_delete,
|
18
16
|
pre_delete,
|
@@ -20,6 +18,7 @@ from django.db.models.signals import (
|
|
20
18
|
from django.dispatch import (
|
21
19
|
receiver,
|
22
20
|
)
|
21
|
+
|
23
22
|
from m3 import (
|
24
23
|
ApplicationLogicException,
|
25
24
|
)
|
@@ -1,6 +1,7 @@
|
|
1
|
-
from django.
|
2
|
-
|
1
|
+
from django.urls import (
|
2
|
+
re_path,
|
3
3
|
)
|
4
|
+
|
4
5
|
from m3.actions import (
|
5
6
|
ControllerCache,
|
6
7
|
)
|
@@ -9,7 +10,6 @@ from m3_ext.ui.app_ui import (
|
|
9
10
|
DesktopLoader,
|
10
11
|
DesktopShortcut,
|
11
12
|
)
|
12
|
-
|
13
13
|
from objectpack.desktop import (
|
14
14
|
uificate_the_controller,
|
15
15
|
)
|
@@ -51,5 +51,5 @@ def register_desktop_menu():
|
|
51
51
|
def register_urlpatterns():
|
52
52
|
"""Регистрация URL контроллера."""
|
53
53
|
return [
|
54
|
-
|
54
|
+
re_path(*auth_controller.urlpattern),
|
55
55
|
]
|
@@ -107,7 +107,7 @@ class Manager(DjangoManager):
|
|
107
107
|
return QuerySet(self.model, using=self._db)
|
108
108
|
|
109
109
|
|
110
|
-
pre_clean = Signal(
|
110
|
+
pre_clean = Signal()
|
111
111
|
"""Сигнал, отправляемый перед валидацией модели.
|
112
112
|
|
113
113
|
:param defaultdict errors: Словарь, содержащий ошибки валидации экземпляра
|
@@ -119,7 +119,7 @@ pre_clean = Signal(providing_args=('errors',))
|
|
119
119
|
"""
|
120
120
|
|
121
121
|
|
122
|
-
post_clean = Signal(
|
122
|
+
post_clean = Signal()
|
123
123
|
"""Сигнал, отправляемый после валидации модели.
|
124
124
|
|
125
125
|
:param defaultdict errors: Словарь, содержащий ошибки валидации экземпляра
|
@@ -16,8 +16,9 @@ from django.template.loader import (
|
|
16
16
|
render_to_string,
|
17
17
|
)
|
18
18
|
from django.utils.encoding import (
|
19
|
-
|
19
|
+
force_str,
|
20
20
|
)
|
21
|
+
|
21
22
|
from m3_django_compat import (
|
22
23
|
get_model,
|
23
24
|
)
|
@@ -132,7 +133,7 @@ class JoinedAttrValues(DataExtractor):
|
|
132
133
|
values = []
|
133
134
|
for field_name in self._field_names:
|
134
135
|
try:
|
135
|
-
value =
|
136
|
+
value = force_str(get_nested_attr(obj, field_name) or '')
|
136
137
|
except AttributeError:
|
137
138
|
return ''
|
138
139
|
else:
|
@@ -154,7 +155,7 @@ class FieldChoiceValue(DataExtractor):
|
|
154
155
|
except AttributeError:
|
155
156
|
return ''
|
156
157
|
else:
|
157
|
-
return
|
158
|
+
return force_str(
|
158
159
|
dict(field.flatchoices).get(value, value),
|
159
160
|
strings_only=True
|
160
161
|
)
|
@@ -227,7 +227,7 @@ def set_partitioning_for_model(model, column_name, force=False):
|
|
227
227
|
значение будет определять раздел таблицы, в который будет помещена
|
228
228
|
запись.
|
229
229
|
|
230
|
-
:raises django.
|
230
|
+
:raises django.core.exceptions.FieldDoesNotExist: если модель *model* не
|
231
231
|
содержит поля *column_name*
|
232
232
|
"""
|
233
233
|
database_alias, table_name, pk_column_name = _get_model_params(model)
|
@@ -258,7 +258,7 @@ def split_table(model, column_name, timeout=0):
|
|
258
258
|
:param float timeout: Время ожидания в секундах между переносом записей
|
259
259
|
(можно использовать для снижения нагрузки на СУБД).
|
260
260
|
|
261
|
-
:raises django.
|
261
|
+
:raises django.core.exceptions.FieldDoesNotExist: если модель *model* не
|
262
262
|
содержит поля *column_name*
|
263
263
|
"""
|
264
264
|
database_alias, table_name, pk_column_name = _get_model_params(model)
|
@@ -9,13 +9,18 @@ from weakref import (
|
|
9
9
|
WeakKeyDictionary,
|
10
10
|
)
|
11
11
|
|
12
|
-
import django
|
13
12
|
from django.core.validators import (
|
14
13
|
MaxLengthValidator,
|
15
14
|
)
|
16
15
|
from django.db.models.base import (
|
17
16
|
ModelBase,
|
18
17
|
)
|
18
|
+
from django.db.models.expressions import (
|
19
|
+
Func,
|
20
|
+
)
|
21
|
+
from django.db.models.lookups import (
|
22
|
+
Lookup,
|
23
|
+
)
|
19
24
|
from django.db.models.signals import (
|
20
25
|
post_delete,
|
21
26
|
post_save,
|
@@ -23,6 +28,7 @@ from django.db.models.signals import (
|
|
23
28
|
from django.dispatch.dispatcher import (
|
24
29
|
receiver,
|
25
30
|
)
|
31
|
+
|
26
32
|
from m3_django_compat import (
|
27
33
|
ModelOptions,
|
28
34
|
atomic,
|
@@ -203,65 +209,58 @@ class LazyModel:
|
|
203
209
|
return self._model
|
204
210
|
|
205
211
|
|
206
|
-
|
207
|
-
|
208
|
-
Func,
|
209
|
-
)
|
210
|
-
from django.db.models.lookups import (
|
211
|
-
Lookup,
|
212
|
-
)
|
212
|
+
class SmartExact(Func):
|
213
|
+
"""Удаляет пробелы из строки и заменяет буквы ё на е."""
|
213
214
|
|
214
|
-
|
215
|
-
"""Удаляет пробелы из строки и заменяет буквы ё на е."""
|
215
|
+
template = "TRANSLATE(%(expressions)s, 'ёЁ ', 'еЕ')"
|
216
216
|
|
217
|
-
|
217
|
+
class SmartExactLookup(Lookup):
|
218
|
+
"""Удаляет пробелы из строки и заменяет буквы ё на е."""
|
218
219
|
|
219
|
-
|
220
|
-
"""Удаляет пробелы из строки и заменяет буквы ё на е."""
|
220
|
+
lookup_name = 'smart_exact'
|
221
221
|
|
222
|
-
|
222
|
+
def as_postgresql(self, compiler, connection):
|
223
|
+
lhs, lhs_params = self.process_lhs(compiler, connection)
|
224
|
+
rhs, rhs_params = self.process_rhs(compiler, connection)
|
223
225
|
|
224
|
-
|
225
|
-
|
226
|
-
rhs, rhs_params = self.process_rhs(compiler, connection)
|
226
|
+
sql = "TRANSLATE(%s, 'ёЁ ', 'еЕ')"
|
227
|
+
sql = '{sql} = {sql}'.format(sql=sql)
|
227
228
|
|
228
|
-
|
229
|
-
sql = '{sql} = {sql}'.format(sql=sql)
|
229
|
+
return sql % (lhs, rhs), lhs_params + rhs_params
|
230
230
|
|
231
|
-
|
231
|
+
class SmartIExact(Func):
|
232
|
+
"""Переводит в верхний регистр, удаляет пробелы, заменяет Ё на Е."""
|
232
233
|
|
233
|
-
|
234
|
-
"""Переводит в верхний регистр, удаляет пробелы, заменяет Ё на Е."""
|
234
|
+
template = "TRANSLATE(UPPER(%(expressions)s), 'Ё ', 'Е')"
|
235
235
|
|
236
|
-
|
236
|
+
class SmartIExactLookup(Lookup):
|
237
|
+
"""Переводит в верхний регистр, удаляет пробелы, заменяет Ё на Е."""
|
237
238
|
|
238
|
-
|
239
|
-
"""Переводит в верхний регистр, удаляет пробелы, заменяет Ё на Е."""
|
239
|
+
lookup_name = 'smart_iexact'
|
240
240
|
|
241
|
-
|
241
|
+
def as_postgresql(self, compiler, connection):
|
242
|
+
lhs, lhs_params = self.process_lhs(compiler, connection)
|
243
|
+
rhs, rhs_params = self.process_rhs(compiler, connection)
|
242
244
|
|
243
|
-
|
244
|
-
|
245
|
-
rhs, rhs_params = self.process_rhs(compiler, connection)
|
245
|
+
sql = "TRANSLATE(UPPER(%s), 'Ё ', 'Е')"
|
246
|
+
sql = '{sql} = {sql}'.format(sql=sql)
|
246
247
|
|
247
|
-
|
248
|
-
sql = '{sql} = {sql}'.format(sql=sql)
|
248
|
+
return sql % (lhs, rhs), lhs_params + rhs_params
|
249
249
|
|
250
|
-
|
250
|
+
class SmartIContainsLookup(Lookup):
|
251
|
+
"""Регистронезависимый поиск.
|
251
252
|
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
проверяет вхождение текста.
|
256
|
-
"""
|
253
|
+
Переводит в верхний регистр, удаляет пробелы, заменяет Ё на Е, проверяет
|
254
|
+
вхождение текста.
|
255
|
+
"""
|
257
256
|
|
258
|
-
|
257
|
+
lookup_name = 'smart_icontains'
|
259
258
|
|
260
|
-
|
261
|
-
|
262
|
-
|
259
|
+
def as_postgresql(self, compiler, connection):
|
260
|
+
lhs, lhs_params = self.process_lhs(compiler, connection)
|
261
|
+
rhs, rhs_params = self.process_rhs(compiler, connection)
|
263
262
|
|
264
|
-
|
265
|
-
|
263
|
+
sql = "TRANSLATE(UPPER(%s), 'Ё ', 'Е')"
|
264
|
+
sql = "{sql} like '%%%%' || {sql} || '%%%%'".format(sql=sql)
|
266
265
|
|
267
|
-
|
266
|
+
return sql % (lhs, rhs), lhs_params + rhs_params
|
@@ -1,5 +1,5 @@
|
|
1
|
-
from django.
|
2
|
-
|
1
|
+
from django.urls import (
|
2
|
+
re_path,
|
3
3
|
)
|
4
4
|
from django.views.generic import (
|
5
5
|
TemplateView,
|
@@ -8,7 +8,7 @@ from django.views.generic import (
|
|
8
8
|
|
9
9
|
def register_urlpatterns():
|
10
10
|
urlpatterns = [
|
11
|
-
|
11
|
+
re_path(
|
12
12
|
r'^atcfs_unavailable/$',
|
13
13
|
TemplateView.as_view(template_name='atcfs_unavailable.html'),
|
14
14
|
name='atcfs_unavailable'
|
@@ -11,7 +11,7 @@ from typing import (
|
|
11
11
|
)
|
12
12
|
|
13
13
|
from django.utils.encoding import (
|
14
|
-
|
14
|
+
smart_str,
|
15
15
|
)
|
16
16
|
from packaging.version import (
|
17
17
|
Version,
|
@@ -101,7 +101,7 @@ class WebEduLogger(getLoggerClass()):
|
|
101
101
|
exc_info = sys.exc_info()
|
102
102
|
|
103
103
|
session_info = get_session_info(request)
|
104
|
-
msg = f'{session_info}{
|
104
|
+
msg = f'{session_info}{smart_str(msg)}'
|
105
105
|
|
106
106
|
record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, func, extra, sinfo)
|
107
107
|
self.handle(record)
|
@@ -17,14 +17,14 @@ from django.db.transaction import (
|
|
17
17
|
atomic,
|
18
18
|
)
|
19
19
|
from django.utils.encoding import (
|
20
|
-
|
20
|
+
force_str,
|
21
21
|
)
|
22
|
+
|
22
23
|
from m3.actions import (
|
23
24
|
Action,
|
24
25
|
ActionPack,
|
25
26
|
ControllerCache,
|
26
27
|
)
|
27
|
-
|
28
28
|
from objectpack.exceptions import (
|
29
29
|
ValidationError as ObjectPackValidationError,
|
30
30
|
)
|
@@ -179,7 +179,7 @@ class ModelProxyValidationMixin:
|
|
179
179
|
# объект будет создан при сохранении составной
|
180
180
|
# модели.
|
181
181
|
field = self._meta.get_field(full_field_name)
|
182
|
-
if
|
182
|
+
if force_str(field.error_messages['null']) in messages:
|
183
183
|
messages.remove(field.error_messages['null'])
|
184
184
|
if not messages:
|
185
185
|
continue
|
{educommon-3.9.2 → educommon-3.9.4}/src/educommon/m3/extensions/listeners/delete_check/listeners.py
RENAMED
@@ -50,9 +50,7 @@ class DeleteCheck:
|
|
50
50
|
#: :param related_objects: Словарь, сопоставляющий удаляемые
|
51
51
|
#: и зависимые объекты.
|
52
52
|
#: :type related_objects: collections.defaultdict
|
53
|
-
collect_implicit = Signal(
|
54
|
-
providing_args=['objects_to_delete', 'related_objects']
|
55
|
-
)
|
53
|
+
collect_implicit = Signal()
|
56
54
|
|
57
55
|
def _get_message(self, objects):
|
58
56
|
"""Возвращает сообщение в правильном склонении."""
|
@@ -17,8 +17,9 @@ from django.db.models.fields.reverse_related import (
|
|
17
17
|
OneToOneRel,
|
18
18
|
)
|
19
19
|
from django.utils.encoding import (
|
20
|
-
|
20
|
+
force_str,
|
21
21
|
)
|
22
|
+
|
22
23
|
from m3_django_compat import (
|
23
24
|
ModelOptions,
|
24
25
|
get_related,
|
@@ -230,6 +231,11 @@ class ColumnDescriptor:
|
|
230
231
|
)
|
231
232
|
if skip_field(descriptor.parent.model, field, accessor_name):
|
232
233
|
return True
|
234
|
+
# проверка, что связанная модель поля, не связана с родительскими моделями полей
|
235
|
+
if (getattr(field, 'related_model', None) and
|
236
|
+
field.related_model in descriptor.parent.related_field_models
|
237
|
+
):
|
238
|
+
return True
|
233
239
|
|
234
240
|
descriptor = descriptor.parent
|
235
241
|
# проверка модели источника данных
|
@@ -250,13 +256,32 @@ class ColumnDescriptor:
|
|
250
256
|
|
251
257
|
return model
|
252
258
|
|
259
|
+
@cached_property
|
260
|
+
def related_field_models(self):
|
261
|
+
"""Связанные модели полей."""
|
262
|
+
fields_models = set()
|
263
|
+
# Для первых в корне добавляем модели источника данных.
|
264
|
+
if self.parent is None:
|
265
|
+
data_source_columns = tuple(self.data_source.get_available_columns())
|
266
|
+
fields_models.update({column.model for column in data_source_columns if column.model})
|
267
|
+
fields_models.add(self.data_source.model)
|
268
|
+
|
269
|
+
# получаем поля текущего экземпляра
|
270
|
+
if self.model:
|
271
|
+
fields = self.model._meta.get_fields()
|
272
|
+
fields_models.update({field.related_model for field in fields if field.related_model})
|
273
|
+
# добавляем саму модель экземпляра, если она есть
|
274
|
+
fields_models.add(self.model)
|
275
|
+
|
276
|
+
return fields_models
|
277
|
+
|
253
278
|
@property
|
254
279
|
def accessor_name(self):
|
255
|
-
return
|
280
|
+
return force_str(_get_accessor_name(self.field))
|
256
281
|
|
257
282
|
@property
|
258
283
|
def lookup(self):
|
259
|
-
return
|
284
|
+
return force_str(self.field.name)
|
260
285
|
|
261
286
|
@property
|
262
287
|
def full_accessor_name(self):
|
@@ -311,7 +336,7 @@ class ColumnDescriptor:
|
|
311
336
|
else:
|
312
337
|
result = self.field.verbose_name
|
313
338
|
|
314
|
-
return
|
339
|
+
return force_str(result)
|
315
340
|
|
316
341
|
def get_full_title(self, delimiter=' → '):
|
317
342
|
"""Возвращает полное наименование с учетом иерархии.
|
@@ -521,13 +546,13 @@ class _ModelDataSourceInfo:
|
|
521
546
|
"""Внутрисистемное имя источника данных."""
|
522
547
|
result = '.'.join((self._model.app_label, self._model.model_name))
|
523
548
|
|
524
|
-
return
|
549
|
+
return force_str(result)
|
525
550
|
|
526
551
|
@cached_property
|
527
552
|
def title(self):
|
528
553
|
"""Отображаемое пользователю наименование источника данных."""
|
529
554
|
result = getattr(self.model, '_meta').verbose_name
|
530
|
-
return
|
555
|
+
return force_str(result)
|
531
556
|
|
532
557
|
|
533
558
|
class ModelDataSourceParams(_ModelDataSourceInfo):
|
{educommon-3.9.2 → educommon-3.9.4}/src/educommon/report/constructor/builders/excel/_base.py
RENAMED
@@ -32,15 +32,16 @@ from django.forms.fields import (
|
|
32
32
|
BooleanField,
|
33
33
|
)
|
34
34
|
from django.utils.encoding import (
|
35
|
-
|
36
|
-
)
|
37
|
-
from m3.actions.exceptions import (
|
38
|
-
ApplicationLogicException,
|
35
|
+
force_str,
|
39
36
|
)
|
40
37
|
from xlsxwriter import (
|
41
38
|
Workbook,
|
42
39
|
)
|
43
40
|
|
41
|
+
from m3.actions.exceptions import (
|
42
|
+
ApplicationLogicException,
|
43
|
+
)
|
44
|
+
|
44
45
|
from educommon.report.constructor import (
|
45
46
|
constants,
|
46
47
|
)
|
@@ -898,7 +899,7 @@ class DataLoader:
|
|
898
899
|
def _get_field_display(field, field_value):
|
899
900
|
for value, name in field.flatchoices:
|
900
901
|
if value == field_value:
|
901
|
-
return
|
902
|
+
return force_str(name, strings_only=True)
|
902
903
|
|
903
904
|
@staticmethod
|
904
905
|
def _get_object_data(obj, attr_name, nested):
|
@@ -6,18 +6,19 @@ from django import (
|
|
6
6
|
from django.conf import (
|
7
7
|
settings,
|
8
8
|
)
|
9
|
-
from django.
|
10
|
-
|
9
|
+
from django.urls import (
|
10
|
+
re_path,
|
11
11
|
)
|
12
|
+
from sendfile import (
|
13
|
+
sendfile,
|
14
|
+
)
|
15
|
+
|
12
16
|
from m3 import (
|
13
17
|
M3JSONEncoder,
|
14
18
|
)
|
15
19
|
from m3_django_compat import (
|
16
20
|
is_authenticated,
|
17
21
|
)
|
18
|
-
from sendfile import (
|
19
|
-
sendfile,
|
20
|
-
)
|
21
22
|
|
22
23
|
|
23
24
|
def check_autorization(request, path):
|
@@ -40,5 +41,5 @@ def check_autorization(request, path):
|
|
40
41
|
|
41
42
|
|
42
43
|
urlpatterns = [
|
43
|
-
|
44
|
+
re_path(r'^media/(?P<path>.*)$', check_autorization)
|
44
45
|
]
|
@@ -24,7 +24,7 @@ from django.db import (
|
|
24
24
|
connections,
|
25
25
|
)
|
26
26
|
from django.utils.encoding import (
|
27
|
-
|
27
|
+
force_str,
|
28
28
|
)
|
29
29
|
|
30
30
|
|
@@ -70,7 +70,7 @@ def call_custom_command(command_name, *args, **options):
|
|
70
70
|
parser.add_argument(com, action='store')
|
71
71
|
else:
|
72
72
|
parser.add_argument(com)
|
73
|
-
defaults = parser.parse_args(args=[
|
73
|
+
defaults = parser.parse_args(args=[force_str(a) for a in args])
|
74
74
|
defaults = dict(defaults._get_kwargs(), **arg_options)
|
75
75
|
# Move positional args out of options to mimic legacy optparse
|
76
76
|
args = defaults.pop('args', ())
|
@@ -4,8 +4,8 @@
|
|
4
4
|
# нормальной установки обновлений.
|
5
5
|
|
6
6
|
[version]
|
7
|
-
BRANCH = tags/3.9.
|
8
|
-
VERSION = 3.9.
|
9
|
-
REVISION =
|
10
|
-
VERSION_DATE =
|
11
|
-
REVISION_DATE =
|
7
|
+
BRANCH = tags/3.9.4^0
|
8
|
+
VERSION = 3.9.4
|
9
|
+
REVISION = b525751553abee2f4deac7b1783499fb00ef29f5
|
10
|
+
VERSION_DATE = 03.04.2024
|
11
|
+
REVISION_DATE = 03.04.2024
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: educommon
|
3
|
-
Version: 3.9.
|
3
|
+
Version: 3.9.4
|
4
4
|
Summary: Общая кодовая база для проектов БЦ Образование
|
5
5
|
Home-page: https://stash.bars-open.ru/projects/EDUBASE/repos/educommon
|
6
6
|
Author: BARS Group
|
@@ -17,7 +17,8 @@ Classifier: Programming Language :: Python :: 3.8
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.9
|
18
18
|
Classifier: Framework :: Django :: 2.2
|
19
19
|
Classifier: Framework :: Django :: 3.0
|
20
|
-
Requires-Dist:
|
20
|
+
Requires-Dist: packaging<24,>=21.3
|
21
|
+
Requires-Dist: Django<3.2,>=2.2
|
21
22
|
Requires-Dist: django-mptt
|
22
23
|
Requires-Dist: python-dateutil
|
23
24
|
Requires-Dist: termcolor
|
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
|