diff --git a/frappe/core/doctype/event/event.py b/frappe/core/doctype/event/event.py index 9f3afbc64f..a68e4d6dad 100644 --- a/frappe/core/doctype/event/event.py +++ b/frappe/core/doctype/event/event.py @@ -14,6 +14,11 @@ class Event(Document): def validate(self): if self.starts_on and self.ends_on and self.starts_on > self.ends_on: frappe.msgprint(frappe._("Event end must be after start"), raise_exception=True) + + if self.starts_on == self.ends_on: + # this scenario doesn't make sense i.e. it starts and ends at the same second! + self.ends_on = None + if self.starts_on and self.ends_on and int(date_diff(self.ends_on.split(" ")[0], self.starts_on.split(" ")[0])) > 0 \ and self.repeat_on == "Every Day": frappe.msgprint(frappe._("Every day events should finish on the same day."), raise_exception=True) diff --git a/frappe/public/js/frappe/views/calendar.js b/frappe/public/js/frappe/views/calendar.js index 97b7b8007a..29f8c9d0e1 100644 --- a/frappe/public/js/frappe/views/calendar.js +++ b/frappe/public/js/frappe/views/calendar.js @@ -207,7 +207,7 @@ frappe.views.Calendar = Class.extend({ if(this.field_map.end) { if (args[this.field_map.allDay]) { args[this.field_map.end] = frappe.datetime.get_datetime_as_string(event.start); - } else { + } else if (event.end) { args[this.field_map.end] = frappe.datetime.get_datetime_as_string(event.end); } } diff --git a/frappe/widgets/calendar.py b/frappe/widgets/calendar.py index 8cc8c27a3c..17ce524217 100644 --- a/frappe/widgets/calendar.py +++ b/frappe/widgets/calendar.py @@ -13,6 +13,6 @@ def update_event(args, field_map): field_map = frappe._dict(json.loads(field_map)) w = frappe.get_doc(args.doctype, args.name) w.set(field_map.start, args[field_map.start]) - w.set(field_map.end, args[field_map.end]) + w.set(field_map.end, args.get(field_map.end)) w.save()