11import calendar
22import datetime
3+ # noinspection PyUnresolvedReferences
34from clr import Convert
5+ # noinspection PyUnresolvedReferences
46from System import DateTime
57
8+ global model , Data , q
9+
610def get_events (dt ):
711 return q .QuerySql ("""
812 SELECT
@@ -20,7 +24,8 @@ def get_events(dt):
2024 ORDER BY MeetingDate, o.DivisionId
2125""" .format (dt ))
2226
23- def get_reservables (typ ):
27+ def get_reservables ():
28+ # noinspection SqlResolve
2429 return q .QuerySql ("""
2530 SELECT ReservableId,
2631 ParentId,
@@ -32,17 +37,16 @@ def get_reservables(typ):
3237 IsCountable,
3338 Quantity
3439 FROM Reservable
35- WHERE 1=1
40+ WHERE IsDeleted = 0
3641 -- AND ReservableTypeId = 1
37- AND IsDeleted = 0
3842 AND IsEnabled = 1
3943
4044 ORDER BY ReservableTypeId, Name
4145 ;
4246""" )
4347
4448
45- def get_reservations (typ , dt ):
49+ def get_reservations (dt ):
4650 return q .QuerySql ("""
4751 -- Room things
4852 SELECT
@@ -142,15 +146,15 @@ def generate_calendar_html(date):
142146
143147 html .append ("<div class='nav-r'>" )
144148 html .append ("<strong>Month</strong>" )
145- html .append (" | <a href='?v=w&%s'>Week</a>" % ( curr_link ) )
146- html .append (" | <a href='?v=d&%s'>Day</a>" % ( curr_link ) )
147- html .append (" | <a href='?v=r&%s'>Reservables</a>" % ( curr_link ) )
149+ html .append (" | <a href='?v=w&%s'>Week</a>" % curr_link )
150+ html .append (" | <a href='?v=d&%s'>Day</a>" % curr_link )
151+ html .append (" | <a href='?v=r&%s'>Reservables</a>" % curr_link )
148152 html .append ("</div>" )
149153 html .append ("</div>" )
150154
151155
152156 html .append ("<table>" )
153- html .append ("<tr>" + "" .join ("<th>%s</th>" % d for d in ["Sun" ,"Mon" ,"Tue" ,"Wed" ,"Thu" ,"Fri" ,"Sat" ]) + "</tr>" )
157+ html .append ("<tr>" + "" .join ("<th>%s</th>" % dn for dn in ["Sun" ,"Mon" ,"Tue" ,"Wed" ,"Thu" ,"Fri" ,"Sat" ]) + "</tr>" )
154158
155159 for week in month_days :
156160 html .append ("<tr>" )
@@ -190,33 +194,33 @@ def generate_calendar_html(date):
190194 return "\n " .join (html )
191195
192196
193- def generate_calendar_vert_html (start_date , dayCount ):
197+ def generate_calendar_vert_html (start_date , day_count ):
194198 """
195199 Generate an HTML week view calendar with overlap handling,
196200 horizontal hour/half-hour lines, scrollable, and auto-scroll to 8am.
197201 """
198202 start_of_span = start_date
199- if dayCount % 7 == 0 :
203+ if day_count % 7 == 0 :
200204 start_of_span = start_date - datetime .timedelta (days = start_date .weekday () + 1 if start_date .weekday () != 6 else 0 )
201- days = [start_of_span + datetime .timedelta (days = i ) for i in range (dayCount )]
205+ days = [start_of_span + datetime .timedelta (days = i ) for i in range (day_count )]
202206
203207 span_term = "Span"
204- span_link = str (dayCount )
205- if dayCount == 14 :
208+ span_link = str (day_count )
209+ if day_count == 14 :
206210 span_term = "Fortnight"
207- elif dayCount == 7 :
211+ elif day_count == 7 :
208212 span_term = "Week"
209213 span_link = 'w'
210- elif dayCount == 1 :
214+ elif day_count == 1 :
211215 span_term = "Day"
212216 span_link = 'd'
213217
214218 hour_height = 6 # vh per hour
215219 day_start = 0
216220 day_end = 24
217221
218- prev_date = start_date - datetime .timedelta (days = dayCount )
219- next_date = start_date + datetime .timedelta (days = dayCount )
222+ prev_date = start_date - datetime .timedelta (days = day_count )
223+ next_date = start_date + datetime .timedelta (days = day_count )
220224
221225 prev_link = "d=%d-%d-%d" % (prev_date .year , prev_date .month , prev_date .day )
222226 next_link = "d=%d-%d-%d" % (next_date .year , next_date .month , next_date .day )
@@ -253,17 +257,17 @@ def generate_calendar_vert_html(start_date, dayCount):
253257 html .append ("</div>" )
254258
255259 html .append ("<div class='nav-r'>" )
256- html .append ("<a href='?%s'>Month</a>" % ( curr_link ) )
257- if dayCount == 7 :
260+ html .append ("<a href='?%s'>Month</a>" % curr_link )
261+ if day_count == 7 :
258262 html .append (" | <strong>Week</strong>" )
259263 else :
260- html .append (" | <a href='?v=w&%s'>Week</a>" % ( curr_link ) )
261- if dayCount == 1 :
264+ html .append (" | <a href='?v=w&%s'>Week</a>" % curr_link )
265+ if day_count == 1 :
262266 html .append (" | <strong>Day</strong>" )
263267 else :
264- html .append (" | <a href='?v=d&%s'>Day</a>" % ( curr_link ) )
268+ html .append (" | <a href='?v=d&%s'>Day</a>" % curr_link )
265269
266- html .append (" | <a href='?v=r&%s'>Reservables</a>" % ( curr_link ) )
270+ html .append (" | <a href='?v=r&%s'>Reservables</a>" % curr_link )
267271
268272 html .append ("</div>" )
269273
@@ -309,7 +313,7 @@ def generate_calendar_vert_html(start_date, dayCount):
309313
310314 for ev in events :
311315 start_hour = 0 if ev .MeetingDate < day_c else ev .MeetingDate .Hour + ev .MeetingDate .Minute / 60.0
312- end_hour = 24 if ev .MeetingEnd > tom_c else (ev .MeetingEnd .Hour + ev .MeetingEnd .Minute / 60.0 ) if ev .MeetingEnd else ( start_hour )
316+ end_hour = 24 if ev .MeetingEnd > tom_c else (ev .MeetingEnd .Hour + ev .MeetingEnd .Minute / 60.0 ) if ev .MeetingEnd else start_hour
313317
314318 if start_hour < day_start : start_hour = day_start
315319 if end_hour > day_end : end_hour = day_end
@@ -350,8 +354,8 @@ def generate_calendar_vert_html(start_date, dayCount):
350354 return "\n " .join (html )
351355
352356def generate_room_gantt_html (date ):
353- reservables = get_reservables ("r" )
354- reservations = get_reservations ("r" , date )
357+ reservables = get_reservables ()
358+ reservations = get_reservations (date )
355359
356360 hour_width = 6 # vw per hour
357361 total_hours = 25
@@ -399,16 +403,16 @@ def time_to_vw(dt):
399403 html .append ("<div class='nav-l'></div>" )
400404
401405 html .append ("<div class='nav-c'>" )
402- html .append ("<a href='?v=r&%s'>« Previous</a> | " % ( prev_link ) )
406+ html .append ("<a href='?v=r&%s'>« Previous</a> | " % prev_link )
403407 html .append ("<strong>%s %d, %d</strong>" % (calendar .month_name [date .month ], date .day , date .year ))
404- html .append (" | <a href='?v=r&%s'>Next »</a>" % ( next_link ) )
408+ html .append (" | <a href='?v=r&%s'>Next »</a>" % next_link )
405409 html .append ("</div>" )
406410
407411 html .append ("<div class='nav-r'>" )
408412
409- html .append ("<a href='?%s'>Month</a>" % ( curr_link ) )
410- html .append (" | <a href='?v=w&%s'>Week</a>" % ( curr_link ) )
411- html .append (" | <a href='?v=d&%s'>Day</a>" % ( curr_link ) )
413+ html .append ("<a href='?%s'>Month</a>" % curr_link )
414+ html .append (" | <a href='?v=w&%s'>Week</a>" % curr_link )
415+ html .append (" | <a href='?v=d&%s'>Day</a>" % curr_link )
412416 html .append (" | <strong>Reservables</strong>" )
413417 html .append ("</div>" )
414418 html .append ("</div>" )
@@ -420,9 +424,9 @@ def time_to_vw(dt):
420424 html .append ("<div class='gantt-wrapper'>" )
421425
422426
423- def assign_lanes (reservations ):
427+ def assign_lanes (reses ):
424428 lanes = []
425- for res in reservations :
429+ for res in reses :
426430 placed = False
427431 for lane in lanes :
428432 if all (res .MeetingStart .AddMinutes (- res .SetupMinutes ) >= r .MeetingEnd .AddMinutes (r .TeardownMinutes ) or res .MeetingEnd .AddMinutes (res .TeardownMinutes ) <= r .MeetingStart .AddMinutes (- r .SetupMinutes ) for r in lane ):
@@ -438,33 +442,33 @@ def assign_lanes(reservations):
438442 return lane_map , max (1 , len (lanes ))
439443
440444
441- def reservable_has_reservations (rbl ):
442- if len (rbl ._reservations ) > 0 :
445+ def reservable_has_reservations (rsbl ):
446+ if len (rsbl ._reservations ) > 0 :
443447 return True
444448
445- for child in children .get (rbl .ReservableId , []):
449+ for child in children .get (rsbl .ReservableId , []):
446450 if reservable_has_reservations (child ):
447451 return True
448452
449453 return False
450454
451455
452456 # Room rows and bars
453- def render_row (rbl ):
454- if not reservable_has_reservations (rbl ):
457+ def render_row (rsbl ):
458+ if not reservable_has_reservations (rsbl ):
455459 return
456460
457- row_height = rbl ._lanes [1 ] * 2
461+ row_height = rsbl ._lanes [1 ] * 2
458462
459- html .append ("<div class='room-row' style='height:%dem'>" % ( row_height ) )
460- for res in rbl ._reservations :
463+ html .append ("<div class='room-row' style='height:%dem'>" % row_height )
464+ for res in rsbl ._reservations :
461465 start = res .MeetingStart
462466 end = res .MeetingEnd
463467 setup_start = start .AddMinutes (- res .SetupMinutes )
464468 teardown_end = end .AddMinutes (res .TeardownMinutes )
465469
466- left = time_to_vw (start )
467- width = time_to_vw (end ) - left
470+ l = time_to_vw (start )
471+ width = time_to_vw (end ) - l
468472 setup_left = time_to_vw (setup_start )
469473 setup_width = time_to_vw (teardown_end ) - setup_left
470474
@@ -473,30 +477,30 @@ def render_row(rbl):
473477 html .append ("<a href='/Meeting/MeetingDetails/%s'>" % res .MeetingId )
474478
475479
476- lane = rbl ._lanes [0 ][res ]
477- top_offset = round (lane / (.01 * rbl ._lanes [1 ]), 2 )
478- bot_offset = round (((rbl ._lanes [1 ] - 1 - lane ) / (.01 * rbl ._lanes [1 ])), 2 )
480+ lane = rsbl ._lanes [0 ][res ]
481+ top_offset = round (lane / (.01 * rsbl ._lanes [1 ]), 2 )
482+ bot_offset = round (((rsbl ._lanes [1 ] - 1 - lane ) / (.01 * rsbl ._lanes [1 ])), 2 )
479483
480484 if res .SetupMinutes > 0 or res .TeardownMinutes > 0 :
481485 html .append ("<div class='bar setup' style='left:%.2fvw; width:%.2fvw; background:%s; top:calc(%.2f%% + 1px); bottom:calc(%.2f%% + 1px);'></div>" % (
482486 setup_left , setup_width , color , top_offset , bot_offset
483487 ))
484488
485489 html .append ("<div class='bar' style='left:%.2fvw; width:%.2fvw; background:%s; top:calc(%.2f%% + 1px); bottom:calc(%.2f%% + 1px);' title=\" %s\" >%s" % (
486- left , width , color , top_offset , bot_offset , res .Name , res .Name
490+ l , width , color , top_offset , bot_offset , res .Name , res .Name
487491 ))
488- label = ""
492+ lbl = ""
489493 if res .Quantity > 0 :
490- label = "(%d) " % ( res .Quantity )
494+ lbl = "(%d) " % res .Quantity
491495 if res .LeaderName is not None :
492- label = "%s%s" % (label , res .LeaderName )
493- if label != "" :
494- html .append ("<small><br />%s</small>" % ( label ) )
496+ lbl = "%s%s" % (lbl , res .LeaderName )
497+ if lbl != "" :
498+ html .append ("<small><br />%s</small>" % lbl )
495499 html .append ("</div>" )
496500 html .append ("</a>" )
497501 html .append ("</div>" )
498502
499- for child in children .get (rbl .ReservableId , []):
503+ for child in children .get (rsbl .ReservableId , []):
500504 render_row (child )
501505
502506
@@ -507,14 +511,14 @@ def render_row(rbl):
507511 # Static room labels
508512 html .append ("<div class='room-labels'>" )
509513
510- def render_labels (rbl , depth = 0 ):
511- if not reservable_has_reservations (rbl ):
514+ def render_labels (rsbl , depth = 0 ):
515+ if not reservable_has_reservations (rsbl ):
512516 return
513517
514518 indent = " " * (depth * 4 )
515- height = rbl ._lanes [1 ] * 2
516- html .append ("<div class='room-label' style='height:%dem;'>%s%s</div>" % (height , indent , rbl .Name ))
517- for child in children .get (rbl .ReservableId , []):
519+ height = rsbl ._lanes [1 ] * 2
520+ html .append ("<div class='room-label' style='height:%dem;'>%s%s</div>" % (height , indent , rsbl .Name ))
521+ for child in children .get (rsbl .ReservableId , []):
518522 render_labels (child , depth + 1 )
519523
520524
@@ -590,12 +594,12 @@ def render_labels(rbl, depth=0):
590594 vi = 1
591595
592596 if Data .v == 'r' :
593- print generate_room_gantt_html (d )
597+ print ( generate_room_gantt_html (d ) )
594598
595599 elif vi > 0 :
596- print generate_calendar_vert_html (d , vi )
600+ print ( generate_calendar_vert_html (d , vi ) )
597601
598602 else :
599- print generate_calendar_html (d )
603+ print ( generate_calendar_html (d ) )
600604
601605#
0 commit comments