Skip to content

Commit 8921bb7

Browse files
authored
Merge pull request #7 from efeone/gams_apr10_zakki
TASK-2026-00459:Calendar view for Meeting Room Booking
2 parents 338eeda + 1d87e95 commit 8921bb7

File tree

3 files changed

+70
-3
lines changed

3 files changed

+70
-3
lines changed

gams/general_administration_management_system/doctype/meeting_room_booking/meeting_room_booking.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,10 @@
9494
],
9595
"grid_page_length": 50,
9696
"index_web_pages_for_search": 1,
97+
"is_calendar_and_gantt": 1,
9798
"links": [],
98-
"modified": "2026-04-08 13:43:45.894498",
99-
"modified_by": "admin@example.com",
99+
"modified": "2026-04-10 14:38:29.994830",
100+
"modified_by": "Administrator",
100101
"module": "General Administration Management System",
101102
"name": "Meeting Room Booking",
102103
"naming_rule": "Expression",

gams/general_administration_management_system/doctype/meeting_room_booking/meeting_room_booking.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import frappe
55
from frappe.model.document import Document
6-
from frappe.utils import getdate, nowdate, get_time
6+
from frappe.utils import getdate, nowdate, get_time, get_datetime
77

88
class MeetingRoomBooking(Document):
99

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

87+
@frappe.whitelist()
88+
def get_meeting_room_events(start, end, filters=None):
89+
"""
90+
Calendar event generator for Meeting Room Booking
91+
"""
92+
93+
filters = frappe.parse_json(filters) if filters else {}
94+
95+
bookings = frappe.get_all(
96+
"Meeting Room Booking",
97+
fields=[
98+
"name",
99+
"meeting_room",
100+
"booking_date",
101+
"from_time",
102+
"to_time",
103+
"status"
104+
],
105+
filters=filters
106+
)
107+
108+
events = []
109+
110+
for b in bookings:
111+
start_dt = get_datetime(f"{b.booking_date} {b.from_time}")
112+
end_dt = get_datetime(f"{b.booking_date} {b.to_time}")
113+
114+
events.append({
115+
"name": b.name,
116+
"start": start_dt,
117+
"end": end_dt,
118+
"title": b.meeting_room,
119+
"status": b.status
120+
})
121+
122+
return events
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
frappe.views.calendar["Meeting Room Booking"] = {
2+
3+
field_map: {
4+
start: "start",
5+
end: "end",
6+
id: "name",
7+
title: "title",
8+
status: "status"
9+
},
10+
11+
style_map: {
12+
"Pending": "warning",
13+
"Approved": "success",
14+
"Rejected": "danger",
15+
"Cancelled": "secondary"
16+
},
17+
18+
filters: [
19+
{
20+
fieldtype: "Link",
21+
fieldname: "meeting_room",
22+
options: "Room",
23+
label: "Room"
24+
}
25+
],
26+
27+
28+
get_events_method: "gams.general_administration_management_system.doctype.meeting_room_booking.meeting_room_booking.get_meeting_room_events"
29+
};
30+

0 commit comments

Comments
 (0)