wbcrm 1.44.2__tar.gz → 1.44.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.
- {wbcrm-1.44.2 → wbcrm-1.44.4}/PKG-INFO +1 -1
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/filters/accounts.py +4 -1
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/models/accounts.py +15 -5
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/serializers/accounts.py +3 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/accounts/test_models.py +12 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/accounts.py +2 -2
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/display/accounts.py +1 -1
- {wbcrm-1.44.2 → wbcrm-1.44.4}/.gitignore +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/pyproject.toml +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/admin/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/admin/accounts.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/admin/activities.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/admin/events.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/admin/groups.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/admin/products.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/apps.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/configurations/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/configurations/base.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/dynamic_preferences_registry.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/factories/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/factories/accounts.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/factories/activities.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/factories/groups.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/factories/products.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/filters/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/filters/activities.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/filters/groups.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/filters/products.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/filters/signals.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/fixtures/wbcrm.json +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/kpi_handlers/activities.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/locale/de/LC_MESSAGES/django.po +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0001_initial_squashed_squashed_0032_productcompanyrelationship_alter_product_prospects_and_more.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0002_alter_activity_repeat_choice.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0003_remove_activity_external_id_and_more.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0004_alter_activity_status.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0005_account_accountrole_accountroletype_and_more.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0006_alter_activity_location.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0007_alter_account_status.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0008_alter_activity_options.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0009_alter_account_is_public.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0010_alter_account_reference_id.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0011_activity_summary.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0012_alter_activity_summary.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0013_account_action_plan_account_relationship_status_and_more.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0014_alter_account_relationship_status.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0015_alter_activity_type.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0016_auto_20241205_1015.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0017_event.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/models/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/models/activities.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/models/events.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/models/groups.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/models/llm/activity_summaries.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/models/llm/analyze_relationship.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/models/products.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/models/recurrence.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/preferences.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/report/activity_report.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/serializers/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/serializers/activities.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/serializers/groups.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/serializers/products.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/serializers/recurrence.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/serializers/signals.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/static/wbcrm/markdown/documentation/activity.md +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/static/wbcrm/markdown/documentation/activitytype.md +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/static/wbcrm/markdown/documentation/group.md +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/static/wbcrm/markdown/documentation/product.md +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/admin.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backend.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/google_calendar_backend.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/request_utils/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/request_utils/external_to_internal/create.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/request_utils/external_to_internal/delete.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/request_utils/external_to_internal/update.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/request_utils/internal_to_external/update.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/tasks.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/tests/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/tests/conftest.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/tests/test_data.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/tests/test_google_backend.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/tests/test_utils.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/typing_informations.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/utils.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/backend.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/msgraph.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/parser.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/tests/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/tests/conftest.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/tests/fixtures.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/tests/test_admin.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/tests/test_backend.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/tests/test_controller.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/tests/test_parser.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/controller.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/dynamic_preferences_registry.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/preferences.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/shortcuts.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/tasks.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/urls.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/utils.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/views.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/admin.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/apps.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/dynamic_preferences_registry.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/management.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/tasks.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/urls.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tasks.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/templates/email/activity.html +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/templates/email/activity_report.html +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/templates/email/daily_summary.html +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/templates/email/global_daily_summary.html +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/accounts/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/accounts/test_viewsets.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/conftest.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/disable_signals.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/e2e/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/e2e/e2e_wbcrm_utility.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/e2e/test_e2e.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/test_assignee_methods.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/test_chartviewsets.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/test_dto.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/test_filters.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/test_models.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/test_recurrence.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/test_report.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/test_serializers.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/test_tasks.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/test_viewsets.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/tests/tests.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/typings.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/urls.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/activities.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/buttons/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/buttons/accounts.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/buttons/activities.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/buttons/signals.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/display/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/display/activities.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/display/groups.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/display/products.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/endpoints/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/endpoints/accounts.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/endpoints/activities.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/endpoints/groups.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/endpoints/products.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/groups.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/menu/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/menu/accounts.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/menu/activities.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/menu/groups.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/menu/products.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/mixins.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/previews/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/previews/activities.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/products.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/recurrence.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/titles/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/titles/accounts.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/titles/activities.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/titles/products.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/viewsets/titles/utils.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/workflows/__init__.py +0 -0
- {wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/workflows/assignee_methods.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wbcrm
|
|
3
|
-
Version: 1.44.
|
|
3
|
+
Version: 1.44.4
|
|
4
4
|
Summary: A workbench module that contains all the functionality related to a customer relationship management.
|
|
5
5
|
Author-email: Christopher Wittlinger <c.wittlinger@stainly.com>
|
|
6
6
|
Requires-Dist: django-eventtools==1.*
|
|
@@ -32,6 +32,10 @@ class AccountFilter(wb_filters.FilterSet):
|
|
|
32
32
|
method="filter_not_owner",
|
|
33
33
|
)
|
|
34
34
|
|
|
35
|
+
status = wb_filters.MultipleChoiceFilter(
|
|
36
|
+
choices=Account.Status.choices, label="Status", default=[Account.Status.OPEN.value]
|
|
37
|
+
)
|
|
38
|
+
|
|
35
39
|
def filter_not_owner(self, queryset, name, value):
|
|
36
40
|
if value:
|
|
37
41
|
return queryset.exclude(owner__in=value)
|
|
@@ -46,7 +50,6 @@ class AccountFilter(wb_filters.FilterSet):
|
|
|
46
50
|
model = Account
|
|
47
51
|
fields = {
|
|
48
52
|
"reference_id": ["icontains"],
|
|
49
|
-
"status": ["exact"],
|
|
50
53
|
"is_active": ["exact"],
|
|
51
54
|
"parent": ["exact", "isnull"],
|
|
52
55
|
"is_terminal_account": ["exact"],
|
|
@@ -25,7 +25,6 @@ from wbcore.metadata.configs.buttons import ActionButton
|
|
|
25
25
|
from wbcore.models import WBModel
|
|
26
26
|
from wbcore.signals import pre_merge
|
|
27
27
|
from wbcore.utils.models import (
|
|
28
|
-
ActiveObjectManager,
|
|
29
28
|
ComplexToStringMixin,
|
|
30
29
|
DeleteToDisableMixin,
|
|
31
30
|
)
|
|
@@ -67,14 +66,19 @@ class AccountDefaultQueryset(QuerySet):
|
|
|
67
66
|
).filter((Q(is_public=True) & Q(has_descending_roles=True)) | Q(has_direct_role=True))
|
|
68
67
|
|
|
69
68
|
|
|
70
|
-
class AccountManager(
|
|
69
|
+
class AccountManager(models.Manager):
|
|
71
70
|
def get_queryset(self) -> AccountDefaultQueryset:
|
|
72
|
-
return AccountDefaultQueryset(self.model)
|
|
71
|
+
return AccountDefaultQueryset(self.model)
|
|
73
72
|
|
|
74
73
|
def filter_for_user(self, user: User, validity_date: date | None = None, strict: bool = False) -> QuerySet:
|
|
75
74
|
return self.get_queryset().filter_for_user(user, validity_date=validity_date, strict=strict)
|
|
76
75
|
|
|
77
76
|
|
|
77
|
+
class ActiveAccountManager(AccountManager):
|
|
78
|
+
def get_queryset(self):
|
|
79
|
+
return super().get_queryset().filter(is_active=True)
|
|
80
|
+
|
|
81
|
+
|
|
78
82
|
class OpenAccountObjectManager(AccountManager):
|
|
79
83
|
def get_queryset(self):
|
|
80
84
|
return super().get_queryset().filter(status=Account.Status.OPEN, is_active=True)
|
|
@@ -261,6 +265,10 @@ class Account(ComplexToStringMixin, DeleteToDisableMixin, WBModel, MPTTModel):
|
|
|
261
265
|
# else:
|
|
262
266
|
# self.is_terminal_account = False
|
|
263
267
|
self.is_terminal_account = self.is_leaf_node()
|
|
268
|
+
if not self.is_active:
|
|
269
|
+
self.status = self.Status.CLOSE
|
|
270
|
+
if self.status == self.Status.CLOSE:
|
|
271
|
+
self.is_active = False
|
|
264
272
|
super().save(*args, **kwargs)
|
|
265
273
|
# self.children.update() TODO recompute str for all children
|
|
266
274
|
# Account.objects.filter(id=self.id).update(computed_str=self.compute_str())
|
|
@@ -333,7 +341,8 @@ class Account(ComplexToStringMixin, DeleteToDisableMixin, WBModel, MPTTModel):
|
|
|
333
341
|
verbose_name_plural = _("Accounts")
|
|
334
342
|
permissions = [("administrate_account", "Administrate Account")]
|
|
335
343
|
|
|
336
|
-
objects =
|
|
344
|
+
objects = ActiveAccountManager()
|
|
345
|
+
all_objects = AccountManager()
|
|
337
346
|
open_objects = OpenAccountObjectManager()
|
|
338
347
|
tree_objects = TreeManager()
|
|
339
348
|
|
|
@@ -585,7 +594,8 @@ def handle_user_deactivation(sender, instance, substitute_profile=None, **kwargs
|
|
|
585
594
|
for validity in profile_role.validity_set.all():
|
|
586
595
|
if validity.timespan.upper >= deactivation_date: # type: ignore
|
|
587
596
|
validity.timespan = DateRange(
|
|
588
|
-
validity.timespan.lower,
|
|
597
|
+
validity.timespan.lower,
|
|
598
|
+
max([deactivation_date, validity.timespan.lower]), # type: ignore
|
|
589
599
|
)
|
|
590
600
|
validity.save()
|
|
591
601
|
if substitute_profile and validity.timespan.lower <= deactivation_date: # type: ignore
|
|
@@ -16,6 +16,9 @@ class AccountRoleTypeRepresentationSerializer(wb_serializers.RepresentationSeria
|
|
|
16
16
|
class AccountRepresentationSerializer(wb_serializers.RepresentationSerializer):
|
|
17
17
|
_detail = wb_serializers.HyperlinkField(reverse_name="wbcrm:account-detail")
|
|
18
18
|
|
|
19
|
+
def get_filter_params(self, request):
|
|
20
|
+
return {"is_active": True}
|
|
21
|
+
|
|
19
22
|
class Meta:
|
|
20
23
|
model = Account
|
|
21
24
|
fields = ("id", "computed_str", "_detail")
|
|
@@ -17,6 +17,18 @@ class TestAccountModel:
|
|
|
17
17
|
def test_init(self, account):
|
|
18
18
|
assert account.id is not None
|
|
19
19
|
|
|
20
|
+
def test_close_account_set_inactive(self, account):
|
|
21
|
+
assert account.is_active
|
|
22
|
+
account.status = Account.Status.CLOSE
|
|
23
|
+
account.save()
|
|
24
|
+
assert not account.is_active
|
|
25
|
+
|
|
26
|
+
def test_disable_account_set_status_close(self, account):
|
|
27
|
+
assert account.status == Account.Status.OPEN
|
|
28
|
+
account.delete()
|
|
29
|
+
assert not account.is_active
|
|
30
|
+
assert account.status == Account.Status.CLOSE
|
|
31
|
+
|
|
20
32
|
def test_account_with_owner_create_account_role(self, account_factory, entry_factory):
|
|
21
33
|
customer = entry_factory.create()
|
|
22
34
|
account = account_factory.create(owner=customer)
|
|
@@ -44,14 +44,14 @@ class AccountRepresentationViewSet(AccountPermissionMixin, viewsets.Representati
|
|
|
44
44
|
filterset_class = AccountFilter
|
|
45
45
|
|
|
46
46
|
serializer_class = AccountRepresentationSerializer
|
|
47
|
-
queryset = Account.
|
|
47
|
+
queryset = Account.all_objects.all()
|
|
48
48
|
ordering = ["title"]
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
class AccountModelViewSet(MergeMixin, AccountPermissionMixin, viewsets.ModelViewSet):
|
|
52
52
|
serializer_class = AccountModelSerializer
|
|
53
53
|
filterset_class = AccountFilter
|
|
54
|
-
queryset = Account.
|
|
54
|
+
queryset = Account.all_objects.select_related("owner", "parent").annotate(
|
|
55
55
|
has_children=Exists(Account.objects.filter(parent=OuterRef("pk"))),
|
|
56
56
|
_group_key=Case(When(has_children=True, then=F("id")), default=None, output_field=IntegerField()),
|
|
57
57
|
)
|
|
@@ -15,6 +15,7 @@ class AccountDisplayConfig(DisplayViewConfig):
|
|
|
15
15
|
def get_list_display(self) -> Optional[dp.ListDisplay]:
|
|
16
16
|
return dp.ListDisplay(
|
|
17
17
|
fields=[
|
|
18
|
+
dp.Field(key="status", label="Status"),
|
|
18
19
|
dp.Field(
|
|
19
20
|
key="owner",
|
|
20
21
|
label="Owner",
|
|
@@ -22,7 +23,6 @@ class AccountDisplayConfig(DisplayViewConfig):
|
|
|
22
23
|
dp.Field(key="reference_id", label="Reference ID"),
|
|
23
24
|
dp.Field(key="is_terminal_account", label="Terminal Account"),
|
|
24
25
|
dp.Field(key="is_public", label="Public"),
|
|
25
|
-
dp.Field(key="is_active", label="Active"),
|
|
26
26
|
dp.Field(
|
|
27
27
|
key="llm",
|
|
28
28
|
label="LLM Analysis",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/migrations/0005_account_accountrole_accountroletype_and_more.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/tests/__init__.py
RENAMED
|
File without changes
|
{wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/tests/conftest.py
RENAMED
|
File without changes
|
{wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/tests/test_data.py
RENAMED
|
File without changes
|
|
File without changes
|
{wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/tests/test_utils.py
RENAMED
|
File without changes
|
{wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/google/typing_informations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/tests/__init__.py
RENAMED
|
File without changes
|
{wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/tests/conftest.py
RENAMED
|
File without changes
|
{wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/tests/fixtures.py
RENAMED
|
File without changes
|
{wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/tests/test_admin.py
RENAMED
|
File without changes
|
{wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/tests/test_backend.py
RENAMED
|
File without changes
|
|
File without changes
|
{wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/backends/outlook/tests/test_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
{wbcrm-1.44.2 → wbcrm-1.44.4}/wbcrm/synchronization/activity/dynamic_preferences_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|