From a1dda6eedacb203b7343a4713bc5a0bbb06f0260 Mon Sep 17 00:00:00 2001 From: emjay0921 Date: Wed, 19 Nov 2025 15:51:02 +0800 Subject: [PATCH 1/4] [ADD] helpdesk and pos icons --- spp_base_common/models/ir_module_module.py | 8 ++++++++ spp_base_common/static/description/Helpdesk.png | Bin 0 -> 5287 bytes .../static/description/Point_of_Sale.png | Bin 0 -> 3593 bytes 3 files changed, 8 insertions(+) create mode 100644 spp_base_common/static/description/Helpdesk.png create mode 100644 spp_base_common/static/description/Point_of_Sale.png diff --git a/spp_base_common/models/ir_module_module.py b/spp_base_common/models/ir_module_module.py index 651cb424f..648b12c88 100644 --- a/spp_base_common/models/ir_module_module.py +++ b/spp_base_common/models/ir_module_module.py @@ -70,6 +70,14 @@ class IrModuleModule(models.Model): "menu_xml_id": "fastapi.menu_fastapi_root", "icon": "spp_base_common,static/description/icon-fast-api.png", }, + "spp_grm": { + "menu_xml_id": "spp_grm.spp_grm_ticket_main_menu", + "icon": "spp_base_common,static/description/Helpdesk.png", + }, + "point_of_sale": { + "menu_xml_id": "point_of_sale.menu_point_root", + "icon": "spp_base_common,static/description/Point_of_Sale.png", + }, } def update_menu_icons(self): diff --git a/spp_base_common/static/description/Helpdesk.png b/spp_base_common/static/description/Helpdesk.png new file mode 100644 index 0000000000000000000000000000000000000000..fef5f8365804124e08c1c24c748c0e01af1bcf8c GIT binary patch literal 5287 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 G`2PUAro_nr literal 0 HcmV?d00001 diff --git a/spp_base_common/static/description/Point_of_Sale.png b/spp_base_common/static/description/Point_of_Sale.png new file mode 100644 index 0000000000000000000000000000000000000000..43a07b483636ab4226288c47580f9513c33fec86 GIT binary patch literal 3593 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 literal 0 HcmV?d00001 From 0d32b3ed81983f70937e9cb138396b4152df84bd Mon Sep 17 00:00:00 2001 From: emjay0921 Date: Wed, 19 Nov 2025 16:22:49 +0800 Subject: [PATCH 2/4] refactor: standardize menu icon naming to openspp-icons-menu- pattern - Renamed all icon-* files to openspp-icons-menu-* for consistency - Updated icon references in ir_module_module.py ICON_MAP - Follows kebab-case naming convention throughout - All menu icons now use the standard openspp-icons-menu-{menuname} pattern --- spp_base_common/models/ir_module_module.py | 34 +++++++++--------- ....png => openspp-icons-menu-dashboards.png} | Bin ...ine.png => openspp-icons-menu-discuss.png} | Bin ...=> openspp-icons-menu-email-marketing.png} | Bin ...e.png => openspp-icons-menu-employees.png} | Bin ...pi.png => openspp-icons-menu-fast-api.png} | Bin ...sk.png => openspp-icons-menu-helpdesk.png} | Bin ...e.png => openspp-icons-menu-job-queue.png} | Bin ...g => openspp-icons-menu-point-of-sale.png} | Bin ...ine.png => openspp-icons-menu-project.png} | Bin ...ine.png => openspp-icons-menu-surveys.png} | Bin ...-line.png => openspp-icons-menu-to-do.png} | Bin 12 files changed, 17 insertions(+), 17 deletions(-) rename spp_base_common/static/description/{icon-Dashboards-White-line.png => openspp-icons-menu-dashboards.png} (100%) rename spp_base_common/static/description/{icon-Discuss-White-line.png => openspp-icons-menu-discuss.png} (100%) rename spp_base_common/static/description/{icon-Email-Marketing-White-line.png => openspp-icons-menu-email-marketing.png} (100%) rename spp_base_common/static/description/{icon-Employees-White-line.png => openspp-icons-menu-employees.png} (100%) rename spp_base_common/static/description/{icon-fast-api.png => openspp-icons-menu-fast-api.png} (100%) rename spp_base_common/static/description/{Helpdesk.png => openspp-icons-menu-helpdesk.png} (100%) rename spp_base_common/static/description/{icon-Job-Queue-White-line.png => openspp-icons-menu-job-queue.png} (100%) rename spp_base_common/static/description/{Point_of_Sale.png => openspp-icons-menu-point-of-sale.png} (100%) rename spp_base_common/static/description/{icon-Project-White-line.png => openspp-icons-menu-project.png} (100%) rename spp_base_common/static/description/{icon-Surveys-White-line.png => openspp-icons-menu-surveys.png} (100%) rename spp_base_common/static/description/{icon-To-do-White-line.png => openspp-icons-menu-to-do.png} (100%) diff --git a/spp_base_common/models/ir_module_module.py b/spp_base_common/models/ir_module_module.py index 648b12c88..70d7b68fc 100644 --- a/spp_base_common/models/ir_module_module.py +++ b/spp_base_common/models/ir_module_module.py @@ -12,71 +12,71 @@ class IrModuleModule(models.Model): ICON_MAP = { "project_todo": { "menu_xml_id": "project_todo.menu_todo_todos", - "icon": "spp_base_common,static/description/icon-To-do-White-line.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-to-do.png", }, "mail": { "menu_xml_id": "mail.menu_root_discuss", - "icon": "spp_base_common,static/description/icon-Discuss-White-line.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-discuss.png", }, "queue_job": { "menu_xml_id": "queue_job.menu_queue_job_root", - "icon": "spp_base_common,static/description/icon-Job-Queue-White-line.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-job-queue.png", }, "spreadsheet_dashboard": { "menu_xml_id": "spreadsheet_dashboard.spreadsheet_dashboard_menu_root", - "icon": "spp_base_common,static/description/icon-Dashboards-White-line.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-dashboards.png", }, "project": { "menu_xml_id": "project.menu_main_pm", - "icon": "spp_base_common,static/description/icon-Project-White-line.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-project.png", }, "mass_mailing": { "menu_xml_id": "mass_mailing.mass_mailing_menu_root", - "icon": "spp_base_common,static/description/icon-Email-Marketing-White-line.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-email-marketing.png", }, "survey": { "menu_xml_id": "survey.menu_surveys", - "icon": "spp_base_common,static/description/icon-Surveys-White-line.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-surveys.png", }, "hr": { "menu_xml_id": "hr.menu_hr_root", - "icon": "spp_base_common,static/description/icon-Employees-White-line.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-employees.png", }, "calendar": { "menu_xml_id": "calendar.mail_menu_calendar", - "icon": "spp_base_common,static/description/OpenSPP-Icons-Menu-Calendar.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-calendar.png", }, "contacts": { "menu_xml_id": "contacts.menu_contacts", - "icon": "spp_base_common,static/description/OpenSPP-Icons-Menu-Contacts.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-contacts.png", }, "account": { "menu_xml_id": "account.menu_finance", - "icon": "spp_base_common,static/description/OpenSPP-Icons-Menu-Invoicing.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-invoicing.png", }, "event": { "menu_xml_id": "event.event_main_menu", - "icon": "spp_base_common,static/description/OpenSPP-Icons-Menu-Events.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-events.png", }, "stock": { "menu_xml_id": "stock.menu_stock_root", - "icon": "spp_base_common,static/description/OpenSPP-Icons-Menu-Inventory.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-inventory.png", }, "utm": { "menu_xml_id": "utm.menu_link_tracker_root", - "icon": "spp_base_common,static/description/OpenSPP-Icons-Menu-Link-Tracker.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-link-tracker.png", }, "fastapi": { "menu_xml_id": "fastapi.menu_fastapi_root", - "icon": "spp_base_common,static/description/icon-fast-api.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-fast-api.png", }, "spp_grm": { "menu_xml_id": "spp_grm.spp_grm_ticket_main_menu", - "icon": "spp_base_common,static/description/Helpdesk.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-helpdesk.png", }, "point_of_sale": { "menu_xml_id": "point_of_sale.menu_point_root", - "icon": "spp_base_common,static/description/Point_of_Sale.png", + "icon": "spp_base_common,static/description/openspp-icons-menu-point-of-sale.png", }, } diff --git a/spp_base_common/static/description/icon-Dashboards-White-line.png b/spp_base_common/static/description/openspp-icons-menu-dashboards.png similarity index 100% rename from spp_base_common/static/description/icon-Dashboards-White-line.png rename to spp_base_common/static/description/openspp-icons-menu-dashboards.png diff --git a/spp_base_common/static/description/icon-Discuss-White-line.png b/spp_base_common/static/description/openspp-icons-menu-discuss.png similarity index 100% rename from spp_base_common/static/description/icon-Discuss-White-line.png rename to spp_base_common/static/description/openspp-icons-menu-discuss.png diff --git a/spp_base_common/static/description/icon-Email-Marketing-White-line.png b/spp_base_common/static/description/openspp-icons-menu-email-marketing.png similarity index 100% rename from spp_base_common/static/description/icon-Email-Marketing-White-line.png rename to spp_base_common/static/description/openspp-icons-menu-email-marketing.png diff --git a/spp_base_common/static/description/icon-Employees-White-line.png b/spp_base_common/static/description/openspp-icons-menu-employees.png similarity index 100% rename from spp_base_common/static/description/icon-Employees-White-line.png rename to spp_base_common/static/description/openspp-icons-menu-employees.png diff --git a/spp_base_common/static/description/icon-fast-api.png b/spp_base_common/static/description/openspp-icons-menu-fast-api.png similarity index 100% rename from spp_base_common/static/description/icon-fast-api.png rename to spp_base_common/static/description/openspp-icons-menu-fast-api.png diff --git a/spp_base_common/static/description/Helpdesk.png b/spp_base_common/static/description/openspp-icons-menu-helpdesk.png similarity index 100% rename from spp_base_common/static/description/Helpdesk.png rename to spp_base_common/static/description/openspp-icons-menu-helpdesk.png diff --git a/spp_base_common/static/description/icon-Job-Queue-White-line.png b/spp_base_common/static/description/openspp-icons-menu-job-queue.png similarity index 100% rename from spp_base_common/static/description/icon-Job-Queue-White-line.png rename to spp_base_common/static/description/openspp-icons-menu-job-queue.png diff --git a/spp_base_common/static/description/Point_of_Sale.png b/spp_base_common/static/description/openspp-icons-menu-point-of-sale.png similarity index 100% rename from spp_base_common/static/description/Point_of_Sale.png rename to spp_base_common/static/description/openspp-icons-menu-point-of-sale.png diff --git a/spp_base_common/static/description/icon-Project-White-line.png b/spp_base_common/static/description/openspp-icons-menu-project.png similarity index 100% rename from spp_base_common/static/description/icon-Project-White-line.png rename to spp_base_common/static/description/openspp-icons-menu-project.png diff --git a/spp_base_common/static/description/icon-Surveys-White-line.png b/spp_base_common/static/description/openspp-icons-menu-surveys.png similarity index 100% rename from spp_base_common/static/description/icon-Surveys-White-line.png rename to spp_base_common/static/description/openspp-icons-menu-surveys.png diff --git a/spp_base_common/static/description/icon-To-do-White-line.png b/spp_base_common/static/description/openspp-icons-menu-to-do.png similarity index 100% rename from spp_base_common/static/description/icon-To-do-White-line.png rename to spp_base_common/static/description/openspp-icons-menu-to-do.png From 4e1871c10efb4881feff89c1f95f989b7c1be9b6 Mon Sep 17 00:00:00 2001 From: emjay0921 Date: Thu, 20 Nov 2025 10:00:30 +0800 Subject: [PATCH 3/4] test: update icon path assertion to match new naming convention - Updated test_ir_module_module.py to use new openspp-icons-menu-discuss.png - Aligns with standardized openspp-icons-menu-* naming pattern - Prevents test failure after icon renaming refactor --- spp_base_common/tests/test_ir_module_module.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spp_base_common/tests/test_ir_module_module.py b/spp_base_common/tests/test_ir_module_module.py index 5bafcad7c..ecd38936d 100644 --- a/spp_base_common/tests/test_ir_module_module.py +++ b/spp_base_common/tests/test_ir_module_module.py @@ -14,4 +14,4 @@ def test_01_update_menu_icons(self): # Verify that the icon was updated self.survey_module.next() menu = self.env.ref("mail.menu_root_discuss") - self.assertEqual(menu.web_icon, "spp_base_common,static/description/icon-Discuss-White-line.png") + self.assertEqual(menu.web_icon, "spp_base_common,static/description/openspp-icons-menu-discuss.png") From 31e2f0bd8143a68e6bf9b330cda94d6c7e3fbb88 Mon Sep 17 00:00:00 2001 From: emjay0921 Date: Thu, 20 Nov 2025 10:41:21 +0800 Subject: [PATCH 4/4] [ADD] tests for phone validation activate/deactivate methods --- spp_base_common/CHANGELOG.md | 9 ++++++ .../tests/test_phone_number_validation.py | 30 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 spp_base_common/CHANGELOG.md diff --git a/spp_base_common/CHANGELOG.md b/spp_base_common/CHANGELOG.md new file mode 100644 index 000000000..d659480b2 --- /dev/null +++ b/spp_base_common/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +## 2025-11-20 + +### 2025-11-20 14:30:00 - [ADD] tests for phone validation activate/deactivate methods + +- Added test_06_activate_phone_validation to verify state changes from inactive to active +- Added test_07_deactivate_phone_validation to verify state changes from active to inactive +- Completes test coverage for phone validation state management methods diff --git a/spp_base_common/tests/test_phone_number_validation.py b/spp_base_common/tests/test_phone_number_validation.py index a95ff2ce8..0c5b45d5f 100644 --- a/spp_base_common/tests/test_phone_number_validation.py +++ b/spp_base_common/tests/test_phone_number_validation.py @@ -101,3 +101,33 @@ def test_05_create_phone_with_invalid_special_characters(self): self.phone_model.create(phone_vals) self.assertIn("Phone number contains invalid special characters", str(cm.exception)) + + def test_06_activate_phone_validation(self): + """Test activating a phone validation record""" + phone_validation = self.phone_validation_model.create( + { + "number_of_digits": 9, + "with_prefix": False, + "state": "inactive", + } + ) + self.assertEqual(phone_validation.state, "inactive") + + phone_validation.activate_phone_validation() + self.assertEqual(phone_validation.state, "active", "Phone validation state should be 'active' after activation") + + def test_07_deactivate_phone_validation(self): + """Test deactivating a phone validation record""" + phone_validation = self.phone_validation_model.create( + { + "number_of_digits": 8, + "with_prefix": False, + "state": "active", + } + ) + self.assertEqual(phone_validation.state, "active") + + phone_validation.deactivate_phone_validation() + self.assertEqual( + phone_validation.state, "inactive", "Phone validation state should be 'inactive' after deactivation" + )