From 367ec6d74962e7935a0174454e095ef3203d9d7b Mon Sep 17 00:00:00 2001 From: Ashutosh619-sudo Date: Wed, 8 Jan 2025 14:00:17 +0530 Subject: [PATCH] Feat: Add created_by, updated_by to conf tables --- .../migrations/0023_auto_20250108_0817.py | 23 +++++++++ apps/fyle/models.py | 6 ++- .../migrations/0007_auto_20250108_0817.py | 23 +++++++++ apps/mappings/models.py | 3 +- .../apis/advanced_settings/serializers.py | 5 ++ .../apis/advanced_settings/views.py | 9 ++++ .../apis/export_settings/serializers.py | 8 +++- apps/workspaces/apis/export_settings/views.py | 9 ++++ .../apis/import_settings/serializers.py | 6 +++ apps/workspaces/apis/import_settings/views.py | 9 ++++ .../migrations/0042_auto_20250108_0817.py | 23 +++++++++ apps/workspaces/models.py | 4 +- requirements.txt | 2 +- .../reset_db_fixtures/reset_db.sql | 48 ++++++++++++------- tests/test_fyle/fixtures.py | 2 + tests/test_fyle/test_models.py | 6 ++- tests/test_workspaces/fixtures.py | 2 + 17 files changed, 162 insertions(+), 26 deletions(-) create mode 100644 apps/fyle/migrations/0023_auto_20250108_0817.py create mode 100644 apps/mappings/migrations/0007_auto_20250108_0817.py create mode 100644 apps/workspaces/migrations/0042_auto_20250108_0817.py diff --git a/apps/fyle/migrations/0023_auto_20250108_0817.py b/apps/fyle/migrations/0023_auto_20250108_0817.py new file mode 100644 index 00000000..22d4b359 --- /dev/null +++ b/apps/fyle/migrations/0023_auto_20250108_0817.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.14 on 2025-01-08 08:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('fyle', '0022_support_split_expense_grouping'), + ] + + operations = [ + migrations.AddField( + model_name='expensegroupsettings', + name='created_by', + field=models.CharField(blank=True, help_text='Email of the user who created this record', max_length=255, null=True), + ), + migrations.AddField( + model_name='expensegroupsettings', + name='updated_by', + field=models.CharField(blank=True, help_text='Email of the user who last updated this record', max_length=255, null=True), + ), + ] diff --git a/apps/fyle/models.py b/apps/fyle/models.py index c8db0f8b..addf3e4a 100644 --- a/apps/fyle/models.py +++ b/apps/fyle/models.py @@ -12,6 +12,7 @@ from django.db import models from django.db.models import Count, JSONField from fyle_accounting_mappings.models import ExpenseAttribute +from fyle_accounting_mappings.mixins import AutoAddCreateUpdateInfoMixin from apps.fyle.enums import ExpenseStateEnum, FundSourceEnum, PlatformExpensesEnum from apps.workspaces.models import Workspace, WorkspaceGeneralSettings @@ -277,7 +278,7 @@ def get_default_split_expense_grouping(): ) -class ExpenseGroupSettings(models.Model): +class ExpenseGroupSettings(AutoAddCreateUpdateInfoMixin, models.Model): """ ExpenseGroupCustomizationSettings """ @@ -338,7 +339,7 @@ class Meta: db_table = "expense_group_settings" @staticmethod - def update_expense_group_settings(expense_group_settings: Dict, workspace_id: int): + def update_expense_group_settings(expense_group_settings: Dict, workspace_id: int, user): settings = ExpenseGroupSettings.objects.get(workspace_id=workspace_id) current_reimbursable_settings = list(settings.reimbursable_expense_group_fields) current_ccc_settings = list(settings.corporate_credit_card_expense_group_fields) @@ -434,6 +435,7 @@ def update_expense_group_settings(expense_group_settings: Dict, workspace_id: in "import_card_credits": import_card_credits, 'split_expense_grouping': expense_group_settings['split_expense_grouping'], }, + user=user ) diff --git a/apps/mappings/migrations/0007_auto_20250108_0817.py b/apps/mappings/migrations/0007_auto_20250108_0817.py new file mode 100644 index 00000000..0f882793 --- /dev/null +++ b/apps/mappings/migrations/0007_auto_20250108_0817.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.14 on 2025-01-08 08:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('mappings', '0006_auto_20220909_1206'), + ] + + operations = [ + migrations.AddField( + model_name='generalmapping', + name='created_by', + field=models.CharField(blank=True, help_text='Email of the user who created this record', max_length=255, null=True), + ), + migrations.AddField( + model_name='generalmapping', + name='updated_by', + field=models.CharField(blank=True, help_text='Email of the user who last updated this record', max_length=255, null=True), + ), + ] diff --git a/apps/mappings/models.py b/apps/mappings/models.py index f8131711..16e8c9c1 100644 --- a/apps/mappings/models.py +++ b/apps/mappings/models.py @@ -4,6 +4,7 @@ from django.db import models from apps.workspaces.models import Workspace +from fyle_accounting_mappings.mixins import AutoAddCreateUpdateInfoMixin class TenantMapping(models.Model): @@ -34,7 +35,7 @@ def get_tenant_details(workspace_id): return TenantMapping.objects.get(workspace_id=workspace_id) -class GeneralMapping(models.Model): +class GeneralMapping(AutoAddCreateUpdateInfoMixin, models.Model): """ General Mapping """ diff --git a/apps/workspaces/apis/advanced_settings/serializers.py b/apps/workspaces/apis/advanced_settings/serializers.py index f5e9687a..e7bd86c6 100644 --- a/apps/workspaces/apis/advanced_settings/serializers.py +++ b/apps/workspaces/apis/advanced_settings/serializers.py @@ -82,6 +82,9 @@ def get_workspace_id(self, instance): return instance.id def update(self, instance, validated): + request = self.context.get('request') + user = request.user if request and hasattr(request, 'user') else None + workspace_general_settings = validated.pop("workspace_general_settings") general_mappings = validated.pop("general_mappings") workspace_schedules = validated.pop("workspace_schedules") @@ -111,6 +114,7 @@ def update(self, instance, validated): "auto_create_merchant_destination_entity" ), }, + user=user ) GeneralMapping.objects.update_or_create( @@ -121,6 +125,7 @@ def update(self, instance, validated): ), "payment_account_id": general_mappings.get("payment_account").get("id"), }, + user=user ) schedule_sync( diff --git a/apps/workspaces/apis/advanced_settings/views.py b/apps/workspaces/apis/advanced_settings/views.py index b7fef686..87bb8006 100644 --- a/apps/workspaces/apis/advanced_settings/views.py +++ b/apps/workspaces/apis/advanced_settings/views.py @@ -9,3 +9,12 @@ class AdvancedSettingsView(generics.RetrieveUpdateAPIView): def get_object(self): return Workspace.objects.filter(id=self.kwargs["workspace_id"]).first() + + def get_serializer_context(self): + """ + Override to include the request in the serializer context. + This allows serializers to access the current user. + """ + context = super().get_serializer_context() + context['request'] = self.request + return context diff --git a/apps/workspaces/apis/export_settings/serializers.py b/apps/workspaces/apis/export_settings/serializers.py index 8ebce381..b46382a0 100644 --- a/apps/workspaces/apis/export_settings/serializers.py +++ b/apps/workspaces/apis/export_settings/serializers.py @@ -101,6 +101,9 @@ def get_workspace_id(self, instance): return instance.id def update(self, instance, validated): + request = self.context.get('request') + user = request.user if request and hasattr(request, 'user') else None + workspace_general_settings = validated.pop("workspace_general_settings") expense_group_settings = validated.pop("expense_group_settings") general_mappings = validated.pop("general_mappings") @@ -132,6 +135,7 @@ def update(self, instance, validated): ], "map_merchant_to_contact": map_merchant_to_contact, }, + user=user ) expense_group_settings["import_card_credits"] = False @@ -148,6 +152,7 @@ def update(self, instance, validated): "import_to_fyle": False, "is_custom": False, }, + user=user ) expense_group_settings["import_card_credits"] = True @@ -181,7 +186,7 @@ def update(self, instance, validated): expense_group_settings["ccc_export_date_type"] = "spent_at" ExpenseGroupSettings.update_expense_group_settings( - expense_group_settings, workspace_id=workspace_id + expense_group_settings, workspace_id=workspace_id, user=user ) GeneralMapping.objects.update_or_create( workspace=instance, @@ -189,6 +194,7 @@ def update(self, instance, validated): "bank_account_name": general_mappings.get("bank_account").get("name"), "bank_account_id": general_mappings.get("bank_account").get("id"), }, + user=user ) if instance.onboarding_state == "EXPORT_SETTINGS": diff --git a/apps/workspaces/apis/export_settings/views.py b/apps/workspaces/apis/export_settings/views.py index 3891b49d..dd5497c3 100644 --- a/apps/workspaces/apis/export_settings/views.py +++ b/apps/workspaces/apis/export_settings/views.py @@ -9,3 +9,12 @@ class ExportSettingsView(generics.RetrieveUpdateAPIView): def get_object(self): return Workspace.objects.filter(id=self.kwargs["workspace_id"]).first() + + def get_serializer_context(self): + """ + Override to include the request in the serializer context. + This allows serializers to access the current user. + """ + context = super().get_serializer_context() + context['request'] = self.request + return context diff --git a/apps/workspaces/apis/import_settings/serializers.py b/apps/workspaces/apis/import_settings/serializers.py index 084c1b0b..5cbff72b 100644 --- a/apps/workspaces/apis/import_settings/serializers.py +++ b/apps/workspaces/apis/import_settings/serializers.py @@ -104,6 +104,9 @@ def get_workspace_id(self, instance): return instance.id def update(self, instance, validated): + request = self.context.get('request') + user = request.user if request and hasattr(request, 'user') else None + workspace_general_settings = validated.pop("workspace_general_settings") general_mappings = validated.pop("general_mappings") mapping_settings = validated.pop("mapping_settings") @@ -139,6 +142,7 @@ def update(self, instance, validated): "import_suppliers_as_merchants" ), }, + user=user ) GeneralMapping.objects.update_or_create( @@ -151,6 +155,7 @@ def update(self, instance, validated): "id" ), }, + user=user ) trigger.post_save_workspace_general_settings( @@ -203,6 +208,7 @@ def update(self, instance, validated): if "source_placeholder" in setting else None, }, + user=user ) trigger.post_save_mapping_settings(workspace_general_settings_instance) diff --git a/apps/workspaces/apis/import_settings/views.py b/apps/workspaces/apis/import_settings/views.py index d642e154..a39db822 100644 --- a/apps/workspaces/apis/import_settings/views.py +++ b/apps/workspaces/apis/import_settings/views.py @@ -9,3 +9,12 @@ class ImportSettingsView(generics.RetrieveUpdateAPIView): def get_object(self): return Workspace.objects.filter(id=self.kwargs["workspace_id"]).first() + + def get_serializer_context(self): + """ + Override to include the request in the serializer context. + This allows serializers to access the current user. + """ + context = super().get_serializer_context() + context['request'] = self.request + return context diff --git a/apps/workspaces/migrations/0042_auto_20250108_0817.py b/apps/workspaces/migrations/0042_auto_20250108_0817.py new file mode 100644 index 00000000..7fe6a842 --- /dev/null +++ b/apps/workspaces/migrations/0042_auto_20250108_0817.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.14 on 2025-01-08 08:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('workspaces', '0041_auto_20241223_1102'), + ] + + operations = [ + migrations.AddField( + model_name='workspacegeneralsettings', + name='created_by', + field=models.CharField(blank=True, help_text='Email of the user who created this record', max_length=255, null=True), + ), + migrations.AddField( + model_name='workspacegeneralsettings', + name='updated_by', + field=models.CharField(blank=True, help_text='Email of the user who last updated this record', max_length=255, null=True), + ), + ] diff --git a/apps/workspaces/models.py b/apps/workspaces/models.py index f0bb2f16..91074e77 100644 --- a/apps/workspaces/models.py +++ b/apps/workspaces/models.py @@ -7,6 +7,8 @@ from django.db.models import JSONField from django_q.models import Schedule +from fyle_accounting_mappings.mixins import AutoAddCreateUpdateInfoMixin + User = get_user_model() ONBOARDING_STATE_CHOICES = ( @@ -141,7 +143,7 @@ class Meta: db_table = "fyle_credentials" -class WorkspaceGeneralSettings(models.Model): +class WorkspaceGeneralSettings(AutoAddCreateUpdateInfoMixin, models.Model): """ Workspace General Settings """ diff --git a/requirements.txt b/requirements.txt index 37dd02ad..5e561727 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,7 +18,7 @@ django-sendgrid-v5==1.2.0 enum34==1.1.10 future==0.18.2 fyle==0.37.2 -fyle-accounting-mappings==1.35.0 +fyle-accounting-mappings==1.36.3 fyle-integrations-platform-connector==1.39.3 fyle-rest-auth==1.7.2 gevent==23.9.1 diff --git a/tests/sql_fixtures/reset_db_fixtures/reset_db.sql b/tests/sql_fixtures/reset_db_fixtures/reset_db.sql index 9199736d..f36645ce 100644 --- a/tests/sql_fixtures/reset_db_fixtures/reset_db.sql +++ b/tests/sql_fixtures/reset_db_fixtures/reset_db.sql @@ -816,7 +816,9 @@ CREATE TABLE public.expense_group_settings ( ccc_expense_state character varying(100), reimbursable_expense_state character varying(100), import_card_credits boolean NOT NULL, - split_expense_grouping character varying(100) NOT NULL + split_expense_grouping character varying(100) NOT NULL, + created_by character varying(255), + updated_by character varying(255) ); @@ -1072,7 +1074,9 @@ CREATE TABLE public.mapping_settings ( import_to_fyle boolean NOT NULL, is_custom boolean NOT NULL, source_placeholder text, - expense_field_id integer + expense_field_id integer, + created_by character varying(255), + updated_by character varying(255) ); @@ -1196,7 +1200,9 @@ CREATE TABLE public.general_mappings ( payment_account_id character varying(255), payment_account_name character varying(255), default_tax_code_id character varying(255), - default_tax_code_name character varying(255) + default_tax_code_name character varying(255), + created_by character varying(255), + updated_by character varying(255) ); @@ -1536,7 +1542,9 @@ CREATE TABLE public.workspace_general_settings ( auto_create_merchant_destination_entity boolean NOT NULL, is_simplify_report_closure_enabled boolean NOT NULL, import_suppliers_as_merchants boolean NOT NULL, - memo_structure character varying(100)[] NOT NULL + memo_structure character varying(100)[] NOT NULL, + created_by character varying(255), + updated_by character varying(255) ); @@ -2650,6 +2658,10 @@ COPY public.django_migrations (id, app, name, applied) FROM stdin; 160 workspaces 0040_workspacegeneralsettings_memo_structure 2024-12-03 21:13:46.617079+00 161 fyle_accounting_mappings 0027_alter_employeemapping_source_employee 2024-12-23 11:03:59.013177+00 162 workspaces 0041_auto_20241223_1102 2024-12-23 11:03:59.043589+00 +163 fyle 0023_auto_20250108_0817 2025-01-08 08:25:48.031084+00 +164 fyle_accounting_mappings 0028_auto_20241226_1030 2025-01-08 08:25:48.168713+00 +165 mappings 0007_auto_20250108_0817 2025-01-08 08:25:48.412455+00 +166 workspaces 0042_auto_20250108_0817 2025-01-08 08:25:48.561072+00 \. @@ -4845,8 +4857,8 @@ COPY public.expense_fields (id, attribute_type, source_field_id, is_enabled, cre -- Data for Name: expense_group_settings; Type: TABLE DATA; Schema: public; Owner: postgres -- -COPY public.expense_group_settings (id, reimbursable_expense_group_fields, corporate_credit_card_expense_group_fields, expense_state, reimbursable_export_date_type, created_at, updated_at, workspace_id, ccc_export_date_type, ccc_expense_state, reimbursable_expense_state, import_card_credits, split_expense_grouping) FROM stdin; -1 {employee_email,report_id,claim_number,fund_source} {report_id,fund_source,employee_email,claim_number,expense_id} PAYMENT_PROCESSING current_date 2022-08-02 20:24:42.329794+00 2022-08-02 20:25:24.6873+00 1 spent_at PAYMENT_PROCESSING PAYMENT_PROCESSING t MULTIPLE_LINE_ITEM +COPY public.expense_group_settings (id, reimbursable_expense_group_fields, corporate_credit_card_expense_group_fields, expense_state, reimbursable_export_date_type, created_at, updated_at, workspace_id, ccc_export_date_type, ccc_expense_state, reimbursable_expense_state, import_card_credits, split_expense_grouping, created_by, updated_by) FROM stdin; +1 {employee_email,report_id,claim_number,fund_source} {report_id,fund_source,employee_email,claim_number,expense_id} PAYMENT_PROCESSING current_date 2022-08-02 20:24:42.329794+00 2022-08-02 20:25:24.6873+00 1 spent_at PAYMENT_PROCESSING PAYMENT_PROCESSING t MULTIPLE_LINE_ITEM \N \N \. @@ -4917,8 +4929,8 @@ COPY public.fyle_credentials (id, refresh_token, created_at, updated_at, workspa -- Data for Name: general_mappings; Type: TABLE DATA; Schema: public; Owner: postgres -- -COPY public.general_mappings (id, bank_account_name, bank_account_id, created_at, updated_at, workspace_id, payment_account_id, payment_account_name, default_tax_code_id, default_tax_code_name) FROM stdin; -1 Business Bank Account 562555f2-8cde-4ce9-8203-0363922537a4 2022-08-02 20:27:35.368956+00 2022-08-02 20:27:35.368996+00 1 \N \N INPUT Tax on Purchases @8.25% +COPY public.general_mappings (id, bank_account_name, bank_account_id, created_at, updated_at, workspace_id, payment_account_id, payment_account_name, default_tax_code_id, default_tax_code_name, created_by, updated_by) FROM stdin; +1 Business Bank Account 562555f2-8cde-4ce9-8203-0363922537a4 2022-08-02 20:27:35.368956+00 2022-08-02 20:27:35.368996+00 1 \N \N INPUT Tax on Purchases @8.25% \N \N \. @@ -4942,13 +4954,13 @@ COPY public.last_export_details (id, last_exported_at, export_mode, total_expens -- Data for Name: mapping_settings; Type: TABLE DATA; Schema: public; Owner: postgres -- -COPY public.mapping_settings (id, source_field, destination_field, created_at, updated_at, workspace_id, import_to_fyle, is_custom, source_placeholder, expense_field_id) FROM stdin; -1 CATEGORY ACCOUNT 2022-08-02 20:25:24.632318+00 2022-08-02 20:25:24.632372+00 1 f f \N \N -2 EMPLOYEE CONTACT 2022-08-02 20:25:24.647585+00 2022-08-02 20:25:24.647636+00 1 f f \N \N -3 PROJECT CUSTOMER 2022-08-02 20:25:24.660915+00 2022-08-02 20:25:24.660954+00 1 t f \N \N -4 CORPORATE_CARD BANK_ACCOUNT 2022-08-02 20:25:24.662017+00 2022-08-02 20:25:24.662053+00 1 f f \N \N -5 TAX_GROUP TAX_CODE 2022-08-02 20:25:24.67454+00 2022-08-02 20:25:24.674589+00 1 f f \N \N -99 COST_CENTER DEPARTMENT 2022-08-02 20:25:24.67454+00 2022-08-02 20:25:24.674589+00 1 f f \N \N +COPY public.mapping_settings (id, source_field, destination_field, created_at, updated_at, workspace_id, import_to_fyle, is_custom, source_placeholder, expense_field_id, created_by, updated_by) FROM stdin; +1 CATEGORY ACCOUNT 2022-08-02 20:25:24.632318+00 2022-08-02 20:25:24.632372+00 1 f f \N \N \N \N +2 EMPLOYEE CONTACT 2022-08-02 20:25:24.647585+00 2022-08-02 20:25:24.647636+00 1 f f \N \N \N \N +3 PROJECT CUSTOMER 2022-08-02 20:25:24.660915+00 2022-08-02 20:25:24.660954+00 1 t f \N \N \N \N +4 CORPORATE_CARD BANK_ACCOUNT 2022-08-02 20:25:24.662017+00 2022-08-02 20:25:24.662053+00 1 f f \N \N \N \N +5 TAX_GROUP TAX_CODE 2022-08-02 20:25:24.67454+00 2022-08-02 20:25:24.674589+00 1 f f \N \N \N \N +99 COST_CENTER DEPARTMENT 2022-08-02 20:25:24.67454+00 2022-08-02 20:25:24.674589+00 1 f f \N \N \N \N \. @@ -5073,8 +5085,8 @@ COPY public.users (password, last_login, id, email, user_id, full_name, active, -- Data for Name: workspace_general_settings; Type: TABLE DATA; Schema: public; Owner: postgres -- -COPY public.workspace_general_settings (id, reimbursable_expenses_object, corporate_credit_card_expenses_object, created_at, updated_at, workspace_id, sync_fyle_to_xero_payments, sync_xero_to_fyle_payments, import_categories, auto_map_employees, auto_create_destination_entity, map_merchant_to_contact, skip_cards_mapping, import_tax_codes, charts_of_accounts, import_customers, change_accounting_period, auto_create_merchant_destination_entity, is_simplify_report_closure_enabled, import_suppliers_as_merchants, memo_structure) FROM stdin; -1 PURCHASE BILL BANK TRANSACTION 2022-08-02 20:25:24.644164+00 2022-08-02 20:25:24.644209+00 1 f t t \N t t f t {EXPENSE} t t f f f {employee_email,category,merchant,spent_on,report_number,purpose} +COPY public.workspace_general_settings (id, reimbursable_expenses_object, corporate_credit_card_expenses_object, created_at, updated_at, workspace_id, sync_fyle_to_xero_payments, sync_xero_to_fyle_payments, import_categories, auto_map_employees, auto_create_destination_entity, map_merchant_to_contact, skip_cards_mapping, import_tax_codes, charts_of_accounts, import_customers, change_accounting_period, auto_create_merchant_destination_entity, is_simplify_report_closure_enabled, import_suppliers_as_merchants, memo_structure, created_by, updated_by) FROM stdin; +1 PURCHASE BILL BANK TRANSACTION 2022-08-02 20:25:24.644164+00 2022-08-02 20:25:24.644209+00 1 f t t \N t t f t {EXPENSE} t t f f f {employee_email,category,merchant,spent_on,report_number,purpose} \N \N \. @@ -5187,7 +5199,7 @@ SELECT pg_catalog.setval('public.django_content_type_id_seq', 40, true); -- Name: django_migrations_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres -- -SELECT pg_catalog.setval('public.django_migrations_id_seq', 162, true); +SELECT pg_catalog.setval('public.django_migrations_id_seq', 166, true); -- diff --git a/tests/test_fyle/fixtures.py b/tests/test_fyle/fixtures.py index b4d47aa7..10001609 100644 --- a/tests/test_fyle/fixtures.py +++ b/tests/test_fyle/fixtures.py @@ -557,6 +557,8 @@ "updated_at": "2021-11-15T08:46:16.069986Z", "split_expense_grouping": "MULTIPLE_LINE_ITEM", "workspace": 1, + "created_by": "ashut@asjkdnsa.com", + "updated_by": "asdksaj@gnioa.com" }, "reimbursements": [ { diff --git a/tests/test_fyle/test_models.py b/tests/test_fyle/test_models.py index dfb0a694..88b2dd69 100644 --- a/tests/test_fyle/test_models.py +++ b/tests/test_fyle/test_models.py @@ -7,7 +7,7 @@ get_default_expense_group_fields, get_default_expense_state, ) -from apps.workspaces.models import WorkspaceGeneralSettings +from apps.workspaces.models import Workspace, WorkspaceGeneralSettings from tests.test_fyle.fixtures import data @@ -48,7 +48,9 @@ def test_expense_group_settings(create_temp_workspace, db): workspace_id = 98 payload = data["expense_group_settings_payload"] - ExpenseGroupSettings.update_expense_group_settings(payload, workspace_id) + user = Workspace.objects.get(id=1).user + + ExpenseGroupSettings.update_expense_group_settings(payload, workspace_id, user) settings = ExpenseGroupSettings.objects.last() diff --git a/tests/test_workspaces/fixtures.py b/tests/test_workspaces/fixtures.py index ee90f9d6..f85d6dc0 100644 --- a/tests/test_workspaces/fixtures.py +++ b/tests/test_workspaces/fixtures.py @@ -21,6 +21,8 @@ "auto_create_merchant_destination_entity": False, "charts_of_accounts": ["EXPENSE", "SAMPLE"], "workspace": 2, + "created_by": "asdvhjasb@anjfas.com", + "updated_by": "asbdja@nkasnd.com" }, "workspace": { "id": 2,