diff --git a/erpnext/www/book_appointment/index.py b/erpnext/www/book_appointment/index.py index 06e99da3f9..8cb66275e0 100644 --- a/erpnext/www/book_appointment/index.py +++ b/erpnext/www/book_appointment/index.py @@ -26,8 +26,12 @@ def get_context(context): @frappe.whitelist(allow_guest=True) def get_appointment_settings(): - settings = frappe.get_doc("Appointment Booking Settings") - settings.holiday_list = frappe.get_doc("Holiday List", settings.holiday_list) + settings = frappe.get_cached_value( + "Appointment Booking Settings", + None, + ["holiday_list", "advance_booking_days", "appointment_duration", "success_redirect_url"], + as_dict=True, + ) return settings @@ -90,23 +94,27 @@ def get_available_slots_between(query_start_time, query_end_time, settings): @frappe.whitelist(allow_guest=True) def create_appointment(date, time, tz, contact): - format_string = "%Y-%m-%d %H:%M:%S" - scheduled_time = datetime.datetime.strptime(date + " " + time, format_string) + contact = json.loads(contact) + datetime_obj = datetime.datetime.strptime(date + " " + time, "%Y-%m-%d %H:%M:%S") # Strip tzinfo from datetime objects since it's handled by the doctype + scheduled_time_obj = datetime_obj.replace(tzinfo=None) + scheduled_time = convert_to_system_timezone(tz, scheduled_time_obj) scheduled_time = scheduled_time.replace(tzinfo=None) - scheduled_time = convert_to_system_timezone(tz, scheduled_time) - scheduled_time = scheduled_time.replace(tzinfo=None) + # Create a appointment document from form appointment = frappe.new_doc("Appointment") - appointment.scheduled_time = scheduled_time - contact = json.loads(contact) - appointment.customer_name = contact.get("name", None) - appointment.customer_phone_number = contact.get("number", None) - appointment.customer_skype = contact.get("skype", None) - appointment.customer_details = contact.get("notes", None) - appointment.customer_email = contact.get("email", None) - appointment.status = "Open" - appointment.insert() + appointment.update( + { + "scheduled_time": scheduled_time, + "customer_name": contact.get("name", None), + "customer_phone_number": contact.get("number", None), + "customer_skype": contact.get("skype", None), + "customer_details": contact.get("notes", None), + "customer_email": contact.get("email", None), + "status": "Open", + } + ) + appointment.insert(ignore_permissions=True) return appointment diff --git a/erpnext/www/book_appointment/verify/index.py b/erpnext/www/book_appointment/verify/index.py index 1a5ba9de7e..4a1ed75ee9 100644 --- a/erpnext/www/book_appointment/verify/index.py +++ b/erpnext/www/book_appointment/verify/index.py @@ -2,7 +2,6 @@ import frappe from frappe.utils.verified_command import verify_request -@frappe.whitelist(allow_guest=True) def get_context(context): if not verify_request(): context.success = False @@ -15,7 +14,6 @@ def get_context(context): appointment = frappe.get_doc("Appointment", appointment_name) appointment.set_verified(email) context.success = True - return context else: context.success = False - return context + return context