Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,10 @@
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"is_calendar_and_gantt": 1,
"links": [],
"modified": "2026-04-08 13:43:45.894498",
"modified_by": "admin@example.com",
"modified": "2026-04-10 14:38:29.994830",
"modified_by": "Administrator",
"module": "General Administration Management System",
"name": "Meeting Room Booking",
"naming_rule": "Expression",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import frappe
from frappe.model.document import Document
from frappe.utils import getdate, nowdate, get_time
from frappe.utils import getdate, nowdate, get_time, get_datetime

class MeetingRoomBooking(Document):

Expand Down Expand Up @@ -84,3 +84,39 @@ def validate_duplicate_booking(self):
f"Room already booked from {booking.from_time} to {booking.to_time} for this day"
)

@frappe.whitelist()
def get_meeting_room_events(start, end, filters=None):
"""
Calendar event generator for Meeting Room Booking
"""

filters = frappe.parse_json(filters) if filters else {}

bookings = frappe.get_all(
"Meeting Room Booking",
fields=[
"name",
"meeting_room",
"booking_date",
"from_time",
"to_time",
"status"
],
filters=filters
)

events = []

for b in bookings:
start_dt = get_datetime(f"{b.booking_date} {b.from_time}")
end_dt = get_datetime(f"{b.booking_date} {b.to_time}")

events.append({
"name": b.name,
"start": start_dt,
"end": end_dt,
"title": b.meeting_room,
"status": b.status
})

return events
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
frappe.views.calendar["Meeting Room Booking"] = {

field_map: {
start: "start",
end: "end",
id: "name",
title: "title",
status: "status"
},

style_map: {
"Pending": "warning",
"Approved": "success",
"Rejected": "danger",
"Cancelled": "secondary"
},

filters: [
{
fieldtype: "Link",
fieldname: "meeting_room",
options: "Room",
label: "Room"
}
],


get_events_method: "gams.general_administration_management_system.doctype.meeting_room_booking.meeting_room_booking.get_meeting_room_events"
};

Loading