From e20c167f0202628caa6e22a6c5fe4a218b62d2d9 Mon Sep 17 00:00:00 2001 From: NIYAZ RAZAK <76736615+niyazrazak@users.noreply.github.com> Date: Mon, 11 Sep 2023 10:41:16 +0300 Subject: [PATCH 1/4] feat: validate duplicate date in table --- erpnext/setup/doctype/holiday_list/holiday_list.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/erpnext/setup/doctype/holiday_list/holiday_list.py b/erpnext/setup/doctype/holiday_list/holiday_list.py index 526bc2ba4ac2..a2963f6113cf 100644 --- a/erpnext/setup/doctype/holiday_list/holiday_list.py +++ b/erpnext/setup/doctype/holiday_list/holiday_list.py @@ -19,6 +19,7 @@ class HolidayList(Document): def validate(self): self.validate_days() self.total_holidays = len(self.holidays) + self.validate_dupliacte_date() @frappe.whitelist() def get_weekly_off_dates(self): @@ -124,6 +125,18 @@ def get_weekly_off_date_list(self, start_date, end_date): def clear_table(self): self.set("holidays", []) + def validate_dupliacte_date(self): + unique_dates = [] + for row in self.holidays: + if row.holiday_date in unique_dates: + frappe.throw( + _("Holiday Date {0} appears Multiple times in row {1} & {2}").format( + row.holiday_date, unique_dates.index(row.holiday_date) + 1, row.idx + ) + ) + else: + unique_dates.append(row.holiday_date) + @frappe.whitelist() def get_events(start, end, filters=None): From 45c731164e046c535e46114223358a817095264e Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Wed, 13 Sep 2023 20:45:33 +0530 Subject: [PATCH 2/4] chore: cleanup --- erpnext/setup/doctype/holiday_list/holiday_list.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/erpnext/setup/doctype/holiday_list/holiday_list.py b/erpnext/setup/doctype/holiday_list/holiday_list.py index a2963f6113cf..7ee9ef4c97bc 100644 --- a/erpnext/setup/doctype/holiday_list/holiday_list.py +++ b/erpnext/setup/doctype/holiday_list/holiday_list.py @@ -130,12 +130,12 @@ def validate_dupliacte_date(self): for row in self.holidays: if row.holiday_date in unique_dates: frappe.throw( - _("Holiday Date {0} appears Multiple times in row {1} & {2}").format( - row.holiday_date, unique_dates.index(row.holiday_date) + 1, row.idx + _("Holiday Date {0} added multiple times").format( + frappe.bold(row.holiday_date) ) ) - else: - unique_dates.append(row.holiday_date) + + unique_dates.append(row.holiday_date) @frappe.whitelist() From 40ea35febab400c2debf0b64761e78ced4075637 Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Tue, 19 Sep 2023 16:12:16 +0530 Subject: [PATCH 3/4] chore: linting issues --- erpnext/setup/doctype/holiday_list/holiday_list.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/erpnext/setup/doctype/holiday_list/holiday_list.py b/erpnext/setup/doctype/holiday_list/holiday_list.py index 7ee9ef4c97bc..3f1f45612050 100644 --- a/erpnext/setup/doctype/holiday_list/holiday_list.py +++ b/erpnext/setup/doctype/holiday_list/holiday_list.py @@ -93,11 +93,7 @@ def validate_days(self): for day in self.get("holidays"): if not (getdate(self.from_date) <= getdate(day.holiday_date) <= getdate(self.to_date)): - frappe.throw( - _("The holiday on {0} is not between From Date and To Date").format( - formatdate(day.holiday_date) - ) - ) + frappe.throw(_("Holiday Date {0} added multiple times").format(frappe.bold(row.holiday_date))) def get_weekly_off_date_list(self, start_date, end_date): start_date, end_date = getdate(start_date), getdate(end_date) From b92e266761926ce49f219ddc1a94d54961071b03 Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Tue, 19 Sep 2023 16:13:31 +0530 Subject: [PATCH 4/4] chore: linting issues --- erpnext/setup/doctype/holiday_list/holiday_list.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/erpnext/setup/doctype/holiday_list/holiday_list.py b/erpnext/setup/doctype/holiday_list/holiday_list.py index 3f1f45612050..df5b40762c16 100644 --- a/erpnext/setup/doctype/holiday_list/holiday_list.py +++ b/erpnext/setup/doctype/holiday_list/holiday_list.py @@ -93,7 +93,11 @@ def validate_days(self): for day in self.get("holidays"): if not (getdate(self.from_date) <= getdate(day.holiday_date) <= getdate(self.to_date)): - frappe.throw(_("Holiday Date {0} added multiple times").format(frappe.bold(row.holiday_date))) + frappe.throw( + _("The holiday on {0} is not between From Date and To Date").format( + formatdate(day.holiday_date) + ) + ) def get_weekly_off_date_list(self, start_date, end_date): start_date, end_date = getdate(start_date), getdate(end_date) @@ -125,11 +129,7 @@ def validate_dupliacte_date(self): unique_dates = [] for row in self.holidays: if row.holiday_date in unique_dates: - frappe.throw( - _("Holiday Date {0} added multiple times").format( - frappe.bold(row.holiday_date) - ) - ) + frappe.throw(_("Holiday Date {0} added multiple times").format(frappe.bold(row.holiday_date))) unique_dates.append(row.holiday_date)