zango 0.2.2.dev0__tar.gz → 0.3.0rc2__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.
- {zango-0.2.2.dev0/src/zango.egg-info → zango-0.3.0rc2}/PKG-INFO +36 -6
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/README.md +1 -1
- zango-0.3.0rc2/requirements/base.txt +67 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/setup.py +2 -2
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/__init__.py +1 -1
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/auditlogs/v1/serializers.py +2 -6
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/auditlogs/v1/views.py +3 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/templates/app_panel.html +2 -1
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/templatetags/zango_filters.py +32 -0
- zango-0.3.0rc2/src/zango/assets/app_panel/js/build.1722416576180.min.js +2 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/cli/project_template/project_name/asgi.py +11 -0
- zango-0.3.0rc2/src/zango/cli/project_template/project_name/settings.py +45 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/cli/project_template/project_name/wsgi.py +12 -1
- zango-0.3.0rc2/src/zango/config/settings/base.py +432 -0
- zango-0.3.0rc2/src/zango/core/monitoring/__init__.py +9 -0
- zango-0.3.0rc2/src/zango/core/monitoring/celery_instrument.py +42 -0
- zango-0.3.0rc2/src/zango/core/monitoring/log_filter.py +43 -0
- zango-0.3.0rc2/src/zango/core/monitoring/logging.py +31 -0
- zango-0.3.0rc2/src/zango/core/monitoring/tasks.py +17 -0
- zango-0.3.0rc2/src/zango/core/monitoring/telemetry.py +118 -0
- zango-0.3.0rc2/src/zango/core/monitoring/utils.py +97 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/utils.py +19 -3
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/middleware/request.py +2 -1
- zango-0.3.0rc2/src/zango/middleware/telemetry.py +29 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2/src/zango.egg-info}/PKG-INFO +36 -6
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango.egg-info/SOURCES.txt +9 -1
- zango-0.3.0rc2/src/zango.egg-info/requires.txt +67 -0
- zango-0.2.2.dev0/requirements/base.txt +0 -37
- zango-0.2.2.dev0/src/zango/assets/app_panel/js/build.v0.3.0.min.js +0 -2
- zango-0.2.2.dev0/src/zango/cli/project_template/project_name/settings.py +0 -151
- zango-0.2.2.dev0/src/zango/config/settings/base.py +0 -204
- zango-0.2.2.dev0/src/zango.egg-info/requires.txt +0 -37
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/LICENSE +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/MANIFEST.in +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/setup.cfg +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/app_auth/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/app_auth/profile/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/app_auth/profile/v1/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/app_auth/profile/v1/serializers.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/app_auth/profile/v1/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/app_auth/profile/v1/utils.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/app_auth/profile/v1/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/app_auth/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/accesslogs/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/accesslogs/v1/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/accesslogs/v1/serializers.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/accesslogs/v1/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/accesslogs/v1/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/auditlogs/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/auditlogs/v1/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/auditlogs/v1/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/auth/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/auth/v1/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/auth/v1/serializers.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/auth/v1/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/auth/v1/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/codeassist/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/codeassist/v1/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/codeassist/v1/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/codeassist/v1/utils.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/codeassist/v1/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/packages/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/packages/v1/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/packages/v1/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/packages/v1/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/permissions/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/permissions/v1/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/permissions/v1/serializers.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/permissions/v1/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/permissions/v1/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/tasks/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/tasks/v1/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/tasks/v1/serializers.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/tasks/v1/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/tasks/v1/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/tenancy/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/tenancy/v1/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/tenancy/v1/serializers.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/tenancy/v1/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/tenancy/v1/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/api/platform/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/accesslogs/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/accesslogs/apps.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/accesslogs/migrations/0001_accesslogs.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/accesslogs/migrations/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/accesslogs/models.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/accesslogs/signals.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/accesslogs/utils.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/admin.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/apps.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/auth_backend.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/migrations/0001_initial.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/migrations/0002_default_user_roles.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/migrations/0003_remove_userrolemodel_temp_field_appusermodel_mobile_and_more.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/migrations/0004_oldpasswords.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/migrations/0005_remove_appusermodel_user.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/migrations/0006_appusermodel_app_objects.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/migrations/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/models.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/serializers.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/signals.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/templates/app.html +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/templates/app_login_signup.html +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/tests.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/appauth/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/admin.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/apps.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/cid.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/conf.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/context.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/diff.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/filters.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/management/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/management/commands/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/management/commands/auditlogflush.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/management/commands/auditlogmigratejson.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/middleware.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/migrations/0001_initial.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/migrations/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/mixins.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/models.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/receivers.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/registry.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/auditlogs/signals.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/admin.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/apps.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/fields/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/management/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/management/commands/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/management/commands/reload_tenant.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/migrations/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/models.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/permissions.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/registry.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/signals.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/templates/default_landing.html +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/tests.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/workspace/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/workspace/base.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/workspace/lifecycle.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/dynamic_models/workspace/wtree.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/object_store/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/object_store/admin.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/object_store/apps.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/object_store/migrations/0001_initial.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/object_store/migrations/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/object_store/models.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/object_store/tests.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/object_store/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/permissions/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/permissions/admin.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/permissions/apps.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/permissions/migrations/0001_initial.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/permissions/migrations/0002_policymodel_type_alter_policymodel_expiry.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/permissions/migrations/0003_default_policy.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/permissions/migrations/0004_policymodel_path_alter_policymodel_name_and_more.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/permissions/migrations/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/permissions/mixin.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/permissions/models.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/permissions/tests.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/permissions/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/platformauth/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/platformauth/abstract_model.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/platformauth/admin.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/platformauth/apps.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/platformauth/auth_backend.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/platformauth/migrations/0001_initial.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/platformauth/migrations/0002_platformusermodel_is_superadmin_and_more.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/platformauth/migrations/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/platformauth/models.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/platformauth/templates/app_panel/app_panel_login.html +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/platformauth/tests.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/platformauth/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/platformauth/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/admin.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/apps.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/management/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/management/commands/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/management/commands/sync_static.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/management/commands/ws_makemigration.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/management/commands/ws_migrate.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/migrations/0001_initial.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/migrations/0002_rename_is_default_themesmodel_is_active.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/migrations/0003_themesmodel_created_at_themesmodel_created_by_and_more.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/migrations/0004_tenantmodel_fav_icon_alter_tenantmodel_logo.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/migrations/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/models.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/tasks.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/templatetags/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/templatetags/zstatic.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/tests.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/utils.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/views.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/workspace_folder_template/cookiecutter.json +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/workspace_folder_template/{{cookiecutter.app_name}}/manifest.json +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/workspace_folder_template/{{cookiecutter.app_name}}/settings.json +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/tasks/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/tasks/apps.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/tasks/migrations/0001_initial.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/tasks/migrations/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/tasks/models.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/tasks/utils.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/assets/app_landing/css/styles.css +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/assets/app_panel/css/styles.css +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/assets/app_panel/images/zangoLogo.svg +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/assets/error_pages/css/LockedAccountStyle.css +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/assets/error_pages/images/ImgLocked.svg +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/assets/js/jquery/3.7.1/jquery.min.js +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/cli/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/cli/install_package.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/cli/package_info.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/cli/project_template/manage.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/cli/project_template/project_name/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/cli/project_template/project_name/urls.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/cli/project_template/project_name/urls_public.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/cli/project_template/project_name/urls_tenants.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/cli/start_project.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/cli/utils.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/config/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/config/celery.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/config/settings/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/config/urls_public.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/config/urls_tenants.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/api/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/api/base.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/api/utils.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/common_utils.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/custom_pluginbase.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/decorators.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/generic_views/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/generic_views/base.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/internal_requests.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/model_mixins.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/package_utils.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/permissions.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/storage_utils.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/tasks.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/core/template_loader.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/middleware/__init__.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/middleware/tenant.py +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/templates/core/error_pages/account_lockout.html +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/templates/core/error_pages/base.html +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango.egg-info/dependency_links.txt +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango.egg-info/entry_points.txt +0 -0
- {zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: zango
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0rc2
|
|
4
4
|
Summary: Zango: multi-tenant Django framework for building business apps
|
|
5
5
|
Home-page: https://github.com/Healthlane-Technologies/zelthy3
|
|
6
6
|
Author: Zelthy ("Healthlane Technologies")
|
|
@@ -13,10 +13,10 @@ Classifier: Development Status :: 5 - Production/Stable
|
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
15
|
Requires-Dist: django==4.2.11
|
|
16
|
-
Requires-Dist: psycopg2-binary
|
|
17
|
-
Requires-Dist: django-tenants
|
|
18
|
-
Requires-Dist: djangorestframework
|
|
19
|
-
Requires-Dist: django-rest-knox
|
|
16
|
+
Requires-Dist: psycopg2-binary==2.9.9
|
|
17
|
+
Requires-Dist: django-tenants==3.6.1
|
|
18
|
+
Requires-Dist: djangorestframework==3.15.2
|
|
19
|
+
Requires-Dist: django-rest-knox==4.2.0
|
|
20
20
|
Requires-Dist: celery==5.3.1
|
|
21
21
|
Requires-Dist: flake8==6.1.0
|
|
22
22
|
Requires-Dist: django-cors-headers==4.2.0
|
|
@@ -49,6 +49,36 @@ Requires-Dist: django-ipware==7.0.1
|
|
|
49
49
|
Requires-Dist: django-decorator-include==3.0
|
|
50
50
|
Requires-Dist: setuptools==70.1.1
|
|
51
51
|
Requires-Dist: django-axes==6.4.0
|
|
52
|
+
Requires-Dist: opentelemetry-api==1.22.0
|
|
53
|
+
Requires-Dist: opentelemetry-distro==0.43b0
|
|
54
|
+
Requires-Dist: opentelemetry-exporter-otlp==1.22.0
|
|
55
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.22.0
|
|
56
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.22.0
|
|
57
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.22.0
|
|
58
|
+
Requires-Dist: opentelemetry-instrumentation==0.43b0
|
|
59
|
+
Requires-Dist: opentelemetry-instrumentation-asgi==0.43b0
|
|
60
|
+
Requires-Dist: opentelemetry-instrumentation-aws-lambda==0.43b0
|
|
61
|
+
Requires-Dist: opentelemetry-instrumentation-boto3sqs==0.43b0
|
|
62
|
+
Requires-Dist: opentelemetry-instrumentation-botocore==0.43b0
|
|
63
|
+
Requires-Dist: opentelemetry-instrumentation-celery==0.43b0
|
|
64
|
+
Requires-Dist: opentelemetry-instrumentation-dbapi==0.43b0
|
|
65
|
+
Requires-Dist: opentelemetry-instrumentation-django==0.43b0
|
|
66
|
+
Requires-Dist: opentelemetry-instrumentation-grpc==0.43b0
|
|
67
|
+
Requires-Dist: opentelemetry-instrumentation-jinja2==0.43b0
|
|
68
|
+
Requires-Dist: opentelemetry-instrumentation-logging==0.43b0
|
|
69
|
+
Requires-Dist: opentelemetry-instrumentation-psycopg2==0.43b0
|
|
70
|
+
Requires-Dist: opentelemetry-instrumentation-redis==0.43b0
|
|
71
|
+
Requires-Dist: opentelemetry-instrumentation-requests==0.43b0
|
|
72
|
+
Requires-Dist: opentelemetry-instrumentation-sqlite3==0.43b0
|
|
73
|
+
Requires-Dist: opentelemetry-instrumentation-urllib==0.43b0
|
|
74
|
+
Requires-Dist: opentelemetry-instrumentation-urllib3==0.43b0
|
|
75
|
+
Requires-Dist: opentelemetry-instrumentation-wsgi==0.43b0
|
|
76
|
+
Requires-Dist: opentelemetry-propagator-aws-xray==1.0.1
|
|
77
|
+
Requires-Dist: opentelemetry-proto==1.22.0
|
|
78
|
+
Requires-Dist: opentelemetry-sdk==1.22.0
|
|
79
|
+
Requires-Dist: opentelemetry-semantic-conventions==0.43b0
|
|
80
|
+
Requires-Dist: opentelemetry-util-http==0.43b0
|
|
81
|
+
Requires-Dist: loguru==0.7.2
|
|
52
82
|
|
|
53
83
|
<h1 align="center">
|
|
54
84
|
<a target="_blank" href="https://www.zelthy.com/framework?referer=zelthy3-repo-landing">
|
|
@@ -65,7 +95,7 @@ Requires-Dist: django-axes==6.4.0
|
|
|
65
95
|
<a href="#">
|
|
66
96
|
<img alt="PyPI version" src="https://badge.fury.io/py/zango.svg"></a>
|
|
67
97
|
<a href="#">
|
|
68
|
-
<img alt="Build" src="https://
|
|
98
|
+
<img alt="Build" src="https://github.com/Healthlane-Technologies/Zango/actions/workflows/release-zango.yml/badge.svg"></a>
|
|
69
99
|
<a href="https://opensource.org/licenses/Apache-2.0" target="_blank">
|
|
70
100
|
<img alt="License" src="https://img.shields.io/badge/License-Apache_2.0-blue.svg"> </a>
|
|
71
101
|
</p>
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<a href="#">
|
|
14
14
|
<img alt="PyPI version" src="https://badge.fury.io/py/zango.svg"></a>
|
|
15
15
|
<a href="#">
|
|
16
|
-
<img alt="Build" src="https://
|
|
16
|
+
<img alt="Build" src="https://github.com/Healthlane-Technologies/Zango/actions/workflows/release-zango.yml/badge.svg"></a>
|
|
17
17
|
<a href="https://opensource.org/licenses/Apache-2.0" target="_blank">
|
|
18
18
|
<img alt="License" src="https://img.shields.io/badge/License-Apache_2.0-blue.svg"> </a>
|
|
19
19
|
</p>
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
django==4.2.11
|
|
2
|
+
psycopg2-binary==2.9.9
|
|
3
|
+
django-tenants==3.6.1
|
|
4
|
+
djangorestframework==3.15.2
|
|
5
|
+
django-rest-knox==4.2.0
|
|
6
|
+
celery==5.3.1
|
|
7
|
+
flake8==6.1.0
|
|
8
|
+
django-cors-headers==4.2.0
|
|
9
|
+
pluginbase==1.0.1
|
|
10
|
+
click==8.1.7
|
|
11
|
+
phonenumberslite==8.13.23
|
|
12
|
+
django-phonenumber-field==7.1.0
|
|
13
|
+
django-redis==5.3.0
|
|
14
|
+
django-cachalot==2.6.1
|
|
15
|
+
django-debug-toolbar==4.2.0
|
|
16
|
+
django-formtools==2.4.1
|
|
17
|
+
django-crispy-forms==2.0
|
|
18
|
+
crispy-bootstrap5==0.7
|
|
19
|
+
cookiecutter==2.3.0
|
|
20
|
+
boto3==1.28.52
|
|
21
|
+
botocore==1.31.52
|
|
22
|
+
django-storages==1.14
|
|
23
|
+
django-celery-beat==2.5.0
|
|
24
|
+
django-smtp-ssl==1.0
|
|
25
|
+
PyJWT==2.8.0
|
|
26
|
+
XlsxWriter==3.1.9
|
|
27
|
+
pydub==0.25.1
|
|
28
|
+
django-celery-results==2.5.1
|
|
29
|
+
django-environ==0.11.2
|
|
30
|
+
pytz==2024.1
|
|
31
|
+
django-session-security==2.6.7
|
|
32
|
+
beautifulsoup4==4.12.3
|
|
33
|
+
python3-saml==1.16.0
|
|
34
|
+
django-ipware==7.0.1
|
|
35
|
+
django-decorator-include==3.0
|
|
36
|
+
setuptools==70.1.1
|
|
37
|
+
django-axes==6.4.0
|
|
38
|
+
opentelemetry-api==1.22.0
|
|
39
|
+
opentelemetry-distro==0.43b0
|
|
40
|
+
opentelemetry-exporter-otlp==1.22.0
|
|
41
|
+
opentelemetry-exporter-otlp-proto-common==1.22.0
|
|
42
|
+
opentelemetry-exporter-otlp-proto-grpc==1.22.0
|
|
43
|
+
opentelemetry-exporter-otlp-proto-http==1.22.0
|
|
44
|
+
opentelemetry-instrumentation==0.43b0
|
|
45
|
+
opentelemetry-instrumentation-asgi==0.43b0
|
|
46
|
+
opentelemetry-instrumentation-aws-lambda==0.43b0
|
|
47
|
+
opentelemetry-instrumentation-boto3sqs==0.43b0
|
|
48
|
+
opentelemetry-instrumentation-botocore==0.43b0
|
|
49
|
+
opentelemetry-instrumentation-celery==0.43b0
|
|
50
|
+
opentelemetry-instrumentation-dbapi==0.43b0
|
|
51
|
+
opentelemetry-instrumentation-django==0.43b0
|
|
52
|
+
opentelemetry-instrumentation-grpc==0.43b0
|
|
53
|
+
opentelemetry-instrumentation-jinja2==0.43b0
|
|
54
|
+
opentelemetry-instrumentation-logging==0.43b0
|
|
55
|
+
opentelemetry-instrumentation-psycopg2==0.43b0
|
|
56
|
+
opentelemetry-instrumentation-redis==0.43b0
|
|
57
|
+
opentelemetry-instrumentation-requests==0.43b0
|
|
58
|
+
opentelemetry-instrumentation-sqlite3==0.43b0
|
|
59
|
+
opentelemetry-instrumentation-urllib==0.43b0
|
|
60
|
+
opentelemetry-instrumentation-urllib3==0.43b0
|
|
61
|
+
opentelemetry-instrumentation-wsgi==0.43b0
|
|
62
|
+
opentelemetry-propagator-aws-xray==1.0.1
|
|
63
|
+
opentelemetry-proto==1.22.0
|
|
64
|
+
opentelemetry-sdk==1.22.0
|
|
65
|
+
opentelemetry-semantic-conventions==0.43b0
|
|
66
|
+
opentelemetry-util-http==0.43b0
|
|
67
|
+
loguru==0.7.2
|
|
@@ -8,7 +8,7 @@ REQUIREMENTS_DIR = os.path.join(PROJECT_DIR, "requirements")
|
|
|
8
8
|
|
|
9
9
|
README = os.path.join(PROJECT_DIR, "README.md")
|
|
10
10
|
|
|
11
|
-
PLATFORM_VERSION = "0.
|
|
11
|
+
PLATFORM_VERSION = "0.3.0rc2"
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def get_requirements(env):
|
|
@@ -44,7 +44,7 @@ setup(
|
|
|
44
44
|
"Framework :: Django",
|
|
45
45
|
"Programming Language :: Python",
|
|
46
46
|
"Programming Language :: Python :: 3",
|
|
47
|
-
"Development Status :: 5 - Production/Stable"
|
|
47
|
+
"Development Status :: 5 - Production/Stable",
|
|
48
48
|
],
|
|
49
49
|
entry_points={
|
|
50
50
|
"console_scripts": [
|
|
@@ -27,18 +27,14 @@ class AuditLogSerializerModel(serializers.ModelSerializer):
|
|
|
27
27
|
return (
|
|
28
28
|
obj.tenant_actor.name
|
|
29
29
|
if obj.tenant_actor
|
|
30
|
-
else obj.platform_actor.name
|
|
31
|
-
if obj.platform_actor
|
|
32
|
-
else None
|
|
30
|
+
else obj.platform_actor.name if obj.platform_actor else None
|
|
33
31
|
)
|
|
34
32
|
|
|
35
33
|
def get_actor_type(self, obj):
|
|
36
34
|
return (
|
|
37
35
|
"tenant_actor"
|
|
38
36
|
if obj.tenant_actor
|
|
39
|
-
else "platform_actor"
|
|
40
|
-
if obj.platform_actor
|
|
41
|
-
else None
|
|
37
|
+
else "platform_actor" if obj.platform_actor else None
|
|
42
38
|
)
|
|
43
39
|
|
|
44
40
|
def get_object_uuid(self, obj):
|
|
@@ -8,6 +8,7 @@ from django.db.models import Q
|
|
|
8
8
|
from django.contrib.contenttypes.models import ContentType
|
|
9
9
|
from django.db import connection
|
|
10
10
|
from django.utils.decorators import method_decorator
|
|
11
|
+
from django.conf import settings
|
|
11
12
|
|
|
12
13
|
from zango.core.api import get_api_response, ZangoGenericPlatformAPIView
|
|
13
14
|
from zango.core.api.utils import ZangoAPIPagination
|
|
@@ -27,6 +28,8 @@ class AuditLogViewAPIV1(ZangoGenericPlatformAPIView, ZangoAPIPagination):
|
|
|
27
28
|
def process_timestamp(self, timestamp, timezone):
|
|
28
29
|
try:
|
|
29
30
|
ts = json.loads(timestamp)
|
|
31
|
+
if not timezone:
|
|
32
|
+
timezone = settings.TIME_ZONE
|
|
30
33
|
tz = pytz.timezone(timezone)
|
|
31
34
|
ts["start"] = tz.localize(
|
|
32
35
|
datetime.strptime(ts["start"] + "-" + "00:00", "%Y-%m-%d-%H:%M"),
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{% load static %}
|
|
2
|
+
{% load zango_filters %}
|
|
2
3
|
|
|
3
4
|
<!DOCTYPE html>
|
|
4
5
|
<html lang="en">
|
|
@@ -18,7 +19,7 @@
|
|
|
18
19
|
var csrf_token = "{{ csrf_token }}";
|
|
19
20
|
var platform_version = "{{ platform_version }}";
|
|
20
21
|
</script>
|
|
21
|
-
<script src="{% static 'app_panel/js/build
|
|
22
|
+
<script src="{% static 'app_panel/js/build.*.min.js'|use_latest %}"></script>
|
|
22
23
|
<script src="{% static 'js/jquery/3.7.1/jquery.min.js' %}"></script>
|
|
23
24
|
{% include 'session_security/all.html' %}
|
|
24
25
|
</body>
|
{zango-0.2.2.dev0 → zango-0.3.0rc2}/src/zango/apps/shared/tenancy/templatetags/zango_filters.py
RENAMED
|
@@ -3,6 +3,9 @@ Module containing custom template filters
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
from django import template
|
|
6
|
+
from django.conf import settings
|
|
7
|
+
import os
|
|
8
|
+
import re
|
|
6
9
|
|
|
7
10
|
register = template.Library()
|
|
8
11
|
|
|
@@ -36,3 +39,32 @@ def humanize_timedelta(timedelta_obj):
|
|
|
36
39
|
if seconds > 0:
|
|
37
40
|
time_total += " {} seconds".format(int(seconds))
|
|
38
41
|
return time_total
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@register.filter()
|
|
45
|
+
def use_latest(build_path):
|
|
46
|
+
"""
|
|
47
|
+
Returns the latest version of a static file based on a given file path pattern.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
build_path (str): the original file path pattern
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
str: The path to the latest version of the file, or the original path if no match is found.
|
|
54
|
+
|
|
55
|
+
Example:
|
|
56
|
+
Usage in a Django template to reference the latest static file:
|
|
57
|
+
|
|
58
|
+
<script src="{% static 'app_panel/js/build.*.min.js'|use_latest %}"></script>
|
|
59
|
+
|
|
60
|
+
Make sure to load the zango filters with {% load zango_filters %}.
|
|
61
|
+
"""
|
|
62
|
+
buildir = os.path.dirname(build_path)
|
|
63
|
+
filep = os.path.basename(build_path)
|
|
64
|
+
for dir in settings.STATICFILES_DIRS:
|
|
65
|
+
for dirpath, dirnames, filenames in os.walk(dir):
|
|
66
|
+
filenames = sorted(filenames, reverse=True)
|
|
67
|
+
for filename in filenames:
|
|
68
|
+
if re.match(filep, filename):
|
|
69
|
+
return os.path.join(buildir, filename)
|
|
70
|
+
return build_path
|