-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathRELEASE_NOTES
6704 lines (4543 loc) · 252 KB
/
RELEASE_NOTES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
v1.17.2 2024-10-15
* Don't allow users who can't add resources to set organiser
There are some users - typically pupils - who can create events but
can't add arbitrary resources to them. They just create events
involving themselves. A small wrinkle arose in that one such user
discovered he could still set the "Organiser" field on his event and
set it to be a member of staff who was then a bit surprised to see it.
For such users, the "Organiser" field is now disabled as well.
v1.17.1 2024-09-19
* Propagate changes to organiser in repeating events
In a collection of repeating events it is possible to edit one event
and then propagate the changes to all the others in the set. The
code to do this was missing out the organiser field from the propagation.
Now fixed.
v1.17.0 2024-09-14
* Add extra id fields for staff and pupils
A requirement has arisen to identify pupils and staff using IDs which are
common between iSAMS and SOCS. This update adds those fields to the
staff and pupil records and then populates them in the iSAMS importer.
v1.16.1 2024-09-05
* Add an extra field to element display call in API
At the request of Abingdon school an extra field containing the element's
UUID has been added to the element display call in the API.
Code by Kevin Ramadhan
v1.16.0 2024-02-05
* Update various ancillary packages
There have been vulnerability warnings on a number of the ancillary packages
used by Scheduler. This release pulls in fixed versions of the packages.
See the git log for full details of which ones.
* Allow more flexible import of CSV/ICS calendars
Scheduler has the means to import existing calendars from other systems
by way of CSV or ICS files. This was originally intended for existing public
calendars and so the import would be done against a Property in Scheduler.
A need arose to import a set of room bookings so the linking has been
loosened up to allow them to be imported against any resource.
v1.15.17 2024-01-19
* Fix a problem importing sets from iSAMS where name and id differ.
The set records arriving from iSAMS give each set both a SetId and a Name.
Usually these are the same but they can be different. For historical
reasons (see next item) we were linking them up to the timetable by Name
but it should have been by SetId. Fixed.
* Remove frig code added to cope with broken iSAMS data.
Way back in the mists of time when the module for importing data from
iSAMS was first added (mid 2016) there was an error in the design of the
iSAMS data output which meant it was impossible to link a lesson involving
a tutorgroup (TeachingForm in iSAMS terminology) to the matching tutorgroup.
iSAMS refused point-blank to investigate or even acknowledge the problem
and so a workaround was implemented using external knowledge and mapping
by set name.
About 8 months later they quietly fixed the problem (which they had previously
insisted did not exist) but the code here never got changed. As it led
recently to the issue mentioned above it has now been removed entirely
and such lessons link correctly to the relevant tutor groups.
v1.15.16 2023-10-27
* Fix a problem with manually creating new subject records
In implementing the AdHoc lessons functionality a bug was introduced which
prevented the dialogue for creating Subject records manually from working
correctly. This release fixes that problem.
v1.15.15 2023-09-04
* Cope with SHSK girls in Abingdon feed
Abingdon school has added some SHSK girls into their iSAMS database
using National Curriculum years 16 and 17 because iSAMS can't cope
with different cohorts of pupils.
Imported enhanced to cope with this.
v1.15.14 2022-12-04
* Allow the display colour of events to be forced by a property
Properties in Scheduler have long had a "preferred colour" field.
If someone asks to view all events with a given property then they
will by default be displayed in that colour - typically used to make
sure everyone sees the public calendar in the same colour.
This release adds a "force" flag, which if set then means that
all events with the relevant property will be displayed in the chosen
colour, regardless of the route by which they are viewed. Thus
a normal event in a user's schedule can be changed to appear in a
different colour from the rest of the user's events.
v1.15.13 2022-11-22
* Allow ?include parameter on commitment listing in API
The API call to list the commitments of an element now allows
the relevant staff and locations used by the resulting events
to be included in the data returned.
This is to allow for quick listings of any staff member or
pupil's up-coming commitments.
v1.15.12 2022-11-13
* Upgrade Nokogiri and Omniauth
These two packages have been updated for security fixes.
* Update user details at login
Scheduler learns each user's name etc. from the chosen authentication
server, but historically has not updated this information when it changed.
Scheduler will now update its idea of the user's details if the information
coming from the authenticator changes.
* New API call to amend existing events
As the first step in some API enhancements, and to check that we're all
talking the same language, a new API call has been added to allow the
information relating to an existing event - like title or organiser - to
be amended.
v1.15.11 2022-10-20
* Add HashWithIndifferentAccess to serializable
A new security feature in the latest version of Rails requires all
objects which are to be serialised to the database to be declared
as such. The previous release missed out HashWithIndifferentAccess
from this list.
* Fix error in setting of element_owner flag
The User model tries to keep track of whether each user owns (controls)
at least one item (Element) in the system. The code for doing this
was flawed and several users were not correctly recorded as owning
elements. The flawed code has been fixed and a maintenance method
has been added to allow all affected User records to be corrected.
* Allow an admin user to delete any note
The test for deleting notes has been updated to allow any admin user
to delete any note.
* Cope with multiple week sets arriving from iSAMS
Scheduler has no limits on how many sets of week definitions it can cope
with. Until recently, iSAMS could cope with only one definition of
A/B weeks. iSAMS has been enhanced to cope with multiple sets which
exposed an error in the Scheduler import code for iSAMS data which
implicitly assumed there would be only one set. This release removes
that pinch-point in the import processing.
* Add list_rooms flag to mimic existing list_teachers
A request arose to include details of the rooms for lessons in the
general schedule display. It has long been possible to list the staff
involved in lessons in this display and this is the default for students
using the system. The display is controlled by a flag in the Concern
record, so users can choose for each item which they are looking at whether
to list staff or not.
An additional flag has been added - list_rooms - so now they can choose
whether to have rooms listed as well.
There is also a list_rooms flag on the User record so the user can choose
what is the default setting for newly created Concerns.
v1.15.10 2022-08-16
* Allow import from iSAMS without populating sets
A requirement has arisen to prevent students from knowing which sets
they are in prior to the start of term. A new switch has been added
to the importer to allow this. Passing "--no=setlists" to the
importer utility will cause the sets themselves to be created (and
thus allow the timetable to be loaded) but won't populate them with
pupils. As soon as this option is removed, the next run of the importer
will populate the sets.
* Allow extreme case of lesson merging
A problem was discovered where a very large number of iSAMS timetable
events were merged to a single logical event in Scheduler. The
identifying string got too long for the database field. The string
is now limited so as not to get too long.
v1.15.9 2022-08-09
* Upgrade rails-html-sanitizer
v1.15.8 2022-08-09
* Upgrade Rails to 5.2.8.1
This gives us a range of security fixes. Also upgraded other contributory
gems. It was necessary to re-arrange the initialisation of the app to
pass new more stringent security checks in Rails.
v1.15.7 2022-05-14
* Add further functionality to dummyloc
The previous frig wasn't enough to make the broken client work. If
it gets LOCATION: with nothing after it it still sometimes adds a
random location to its display.
You can now add a string to dummyloc - "?dummyloc=None" - or whatever.
v1.15.6 2022-05-04
* Add an extra option on ical feeds for a broken client program
An extra option - dummyloc - has been added to the ical feed URLs
to accommodate one broken client program which adds random
incorrect locations to events which don't specify any.
If you add "?dummyloc" to the end of your ical feed URL then every
event will have a LOCATION: field, even if empty.
* More debug information for invalid cover from iSAMS
The iSAMS MIS seems to lack integrity checking in various areas.
In particular, if a lesson with cover is deleted the cover record
doesn't get deleted with it. The Scheduler importer copes fine
with this but a little bit more debug information has been added
to help in tracking down instances.
* Dependent packages updated
The following packages have been updated:
moment.js 2.29.3
Rails 5.2.7.1
Nokogiri 1.13.4
Puma 5.6.4
to fix the following vulnerabilities:
CVE-2022-24790
CVE-2022-24836
CVE-2022-23437
CVE-2022-24839
CVE-2022-22577
and a directory traversal vulnerability in moment.js
The update to Puma means it is essential to completely stop
the web server whilst applying this update.
v1.15.5 2022-03-30
* Add checks to prevent accidental Markdown in auto-generated notes.
A really surprising circumstance arose. The system does checks
to identify clashing events for students and then adds notes to
events indicating when students will be away. E.g. if there is a
geography field trip then each affected lesson will be annotated
with a list of the students who will be absent.
In doing this, it includes the body text of the clashing event in
the annotation, *but* someone created an event which included some
text in square brackets - []. These have a special meaning to Markdown
and so that part of the note got turned into a URL, which another part
of the note processing code fell over because it wasn't a valid URL.
Two fixes have been implemented.
* The note post-processing code no longer fails if it finds an
invalid URL in a note.
* The note generation code in the clash checker now escapes any
characters which have special significance in Markdown so
the above-mentioned event no longer generates a URL at all.
* Update Rails to 5.2.6.3 (from 5.2.6)
There have been several minor point releases of Rails. This
brings Scheduler up to date within the Rails 5 tree.
v1.15.4 2022-01-28
* Allow the calendar view to be specified in the URL.
An additional parameter has been added to the ones understood on
the main page of the application, allowing the initial view to
be specified. By adding "?view=<choice>" to the URL, the view
can be set to something other than the default week view. Valid
values for <choice> are: week, month, day, daylist and list.
* Fix missing "require" in mail storage.
A require statement was missing which prevented access to stored
e-mails.
v1.15.3 2022-01-22
* Remove spurious debug line
A line of debug code had been left in the JavaScript which prevented
it running on production servers.
v1.15.2 2022-01-22
* Flag unavailable resources with red events
In the Resource Group allocation code (for mini-buses and the like)
it is now possible to flag individual resources as being unavailable
by creating an event involving them and adding a nominated property
to that event. The relevant property is under the control of the
system administrator.
Such events will then appear in red on the resource allocation screen.
* Change item in use by dragging for non-request items
Similarly in the resource allocation screen, it is now possible to
change which item is involved in an ordinary event (not involving
a resource request) via dragging the event. It appears to be doing
the same thing from the point of view of the user, although the
behind the scenes processing is quite different.
v1.15.1 2022-01-17
* Implement auto-allocation of staff lessons for a whole cycle
This release enables another button in the AdHoc lesson auto-allocation
area. Instead of clicking for one week at a time in a staff member's
area you can click and get the whole cycle allocated for that staff
member.
* Improve auto-allocation algorithm
In testing the previous change it became apparent that in some
pathological cases (typically where a staff member has no slack
in his or her schedule) the algorithm could be improved. This
has been done, although doubtless a lot more improvements will
come to light in the future.
* Simplify expression of algorithm
The actual implementation of the algorithm has been simplified
almost to the point of being a Domain Specific Language (DSL), which
makes it much easier to tweak in the future.
* Fix problem with empty allocation
If a staff member had an empty allocation - no lessons - then clicking
the auto-allocate button led to an error. This has now been fixed.
* Add statistics
In order to be able to judge how well the auto-allocation algorithm
has performed, statistics have been added to the display. These consist
of a ratio and a max score - like this, "12/23 2".
The denominator of the ratio is the number of middle school (not sixth
form) lessons which need to be allocated.
The numerator of the ratio is the sum of all the clash scores. The
value shown here of 12 could mean that 12 lessons have each hit a subject
once, or that 8 lessons have hit a subject once, and 2 lessons have
hit a subject twice (8 * 1 + 2 * 2). Etc.
For a good allocation, the numerator should be less than the denominator.
The final number - the 2 - gives the maximum clash score which a lesson
has achieved. This may well change in a future release to the maximum
number of hits which a subject as received per student (potentially a
smaller number).
* Fix to cope with blank pupil timetables
The auto-allocation algorithm also failed to cope when a student had
no other timetable at all. Fixed.
* Change "Implement" to "Publish"
The "Implement" button has been renamed as "Publish" to make it more
clear what it does.
v1.15.0 2022-01-04
* Implement direct links for element schedules
A requirement has arisen for some staff to be able to view their
schedules within Scheduler without actually logging on. This has
long been possible by way of an external calendaring program, by
taking an ical feed from Scheduler into that program. It can now
also be done directly within Scheduler by use of an appropriate
link. The necessary links can be found within Scheduler in the same
place where ical feeds are provided.
The most obvious immediate use is to allow peripatetic music teachers
who don't normally use Scheduler to get a quick view of their scheduled
lessons.
* Implement scoring for peripatetic music lesson sets
Scheduler now automatically calculates a score for each peripapetic
music teacher's schedule, giving an overall rating and an indication
of the worst (as in most lessons missed) individual score.
* Implement auto-allocation of peripatetic music lessons
The process of finding times for students to take music lessons outside
their academic timetable is a laborious one. This release adds a facility
whereby Scheduler will draw up a proposed schedule automatically, taking
account of students who are not allowed to miss academic lessons, and for
those who are allowed to miss them, minimizing the number of times they
miss any particular subject.
v1.14.9 2021-10-08
* Run AdHoc lesson implementation jobs in the background
It was found that on slow systems the implementation of a large set
of AdHoc lessons could take 10 minutes or more, causing the browser
front end to time out whilst waiting.
This release switches to processing such jobs in the background. The
user initiating the task will get immediate feedback that the job
has been queued and then the user's screen will update every 5 seconds
with progress information until the job completes. The user can
even navigate away from that screen and come back later to see how
the job is doing.
Some additional steps are required when installing this release,
specifically:
The Scheduler user's crontab needs an extra line at the end to
start the background job processor. See support/crontab
The system file /etc/logrotate.d/scheduler needs an extra file
adding to it. See support/logrotate
* Fix to the date fields in the ICS import screen
A problem was found in the ICS import screen (dating from November last
year) in that the date fields were being filled by default with nonsense
instead of the dates found in the import file. This problem has been
fixed.
v1.14.8 2021-09-30
* Provide some visual feedback when a user Implements an AdHoc Cycle
When a user hits the "Implement" button to propagate a set of music
(or whatever) lessons into the main database it can take a minute or
two to create all the necessary events. The button is now disabled
and a message appears so that the user knows that something is happening.
The button is re-enabled when the work completes.
* Eventcategory updated if changed
If a user re-runs an "Implement" cycle, the code tries as far as possible
to adjust existing events rather than creating new ones. One thing
which did not get updated was the events' eventcategory, but it's possible
that the system administrator might want to change it. This now gets
updated along with everything else.
* Editing AdHocCategory should not remove the identifying property.
A small bug was identified in that if an existing Ad Hoc Event Category
was edited without the "Identifying Property" field being changed, then
when the edited record was saved that field got blanked. This bug
has been fixed.
There is also a changed to the advice on how to set up Ad Hoc Event Categories.
Previously the instructions recommended using an Eventcategory of "Lesson",
but it turns out this is not a good idea because the ad hoc lessons then get
flagged as having pupils missing from them because the pupils have ordinary
lessons at the same time. Instead, create a new dedicated Eventcategory
for Ad Hoc lessons and don't include it in the list to be flagged with
absences (although it will still be used when flagging absences from other
events).
v1.14.7 2021-09-20
* Add a daily check for clashes in controlled locations
When a location has one or more controllers, they can control most of
the events which get added to those locations. However, events can
still arrive directly from the school's MIS and end up clashing with
events entered manually.
This release adds code to do an off-line check for such clashes and to
e-mail such controllers as choose to receive those e-mails.
v1.14.6 2021-09-12
* Remove spurious console.log message from JavaScript
...which used a JS6 feature and thus prevented pre-compilation.
v1.14.5 2021-09-12
Two bug fixes
* Cope with the deletion of a student after music lesson allocation has started
A problem was found in the code for peripatetic music lessons in that if
allocation of a teacher's lessons had started and then one of the
students was deleted from that teacher's list - after at least one
lesson had been scheduled for that student - then the host sent down
slightly inconsistent JSON data to the front end at the next attempted
allocation session and the user ender up with a blank screen.
Two fixes have been implemented. The host now checks the JSON data
for this circumstance and ensures the data actually sent are consistent -
no references to non-existent records. The front end JavaScript code
now also copes if such a reference exists.
* Clip very long student names so they don't overflow
In the lesson allocation screen, very long student names were overflowing
out of their intended space. This was because, although the containing
element had been set to clip overflow, its size had been left to float
and so the element itself increased to be wider than its parent.
The element now has an explicit width of 100% (of its parents width) and
so the student name clips as intended.
v1.14.4 2021-09-03
* Add extra column to resource approvals screen
Some resources (e.g. rooms) within the system have one or more administrators
appointed and requests for those resources need to be approved by an
administrator. This can be done either from the main calendar event view
or from a screen showing a textual listing of events.
This release adds an extra column to the latter screen so that the
administrator can immediately see what events clash in their requests
for a given resource.
* Add a check button to the event repetition screen
Administrators of a resource can enter events for that resource directly
without needing approval. This can lead to problems when someone asks
for a repeating event in a given room (e.g. every Thursday of week B from
14:00 to 14:30). Previously the administrator had to check each of the
projected booking slots manually.
Now there is an additional button for administrators (labelled "Check")
which they can use to see whether the proposed booking clashes with
anything else. This can be used before the event is repeated and it's
then up to the administrator to decide whether to continue with the booking
or not.
* Fix a problem counting subjects in the MIS importer
The MIS importer was counting all subjects (not just those it had imported)
when deciding whether the number had changed in the course of an import.
This led to an erroneous message saying that the number had gone up even
when it hadn't.
* Bump addressable gem to 2.8.0.
A bug was found in the addressable gem - CVE-2021-32740. Although it did
not affect Scheduler, the gem has been bumped up to a fixed version.
* New flag in user profile
An immediate future piece of work will be to add a batch job which checks
for clashes between manually entered events and those coming from the MIS
in controlled resources. In preparation for this, a flag has been added
to the user profile to allow resource administrators to decide whether
they want to receive these e-mails or not.
v1.14.3 2021-08-20
* Add the option to do authentication with Microsoft Azure
The Scheduler application relies on an external service to do user
authentication. Up until now this has always been Google's authentication
service but this release adds the option to use Microsoft's Azure
instead.
Full documentation on how to do this will be found in the installation
guide.
v1.14.2 2021-07-15
* Fix a permissions bug
Ordinary Ad Hoc Domain Controllers (not admin) could not edit the
availability schedule for Ad Hoc staff.
* Add more seed data for the demo system
The demo system is used to create the documentation. More seed data
has been added to facilitate this.
v1.14.1 2021-07-10
* Bump up versions of packages to fix vulnerabilities
Rails goes up to 5.2.6 to fix CVE-2021-22904
Nokogiri goes up to 1.11.7 to fix a number of CVEs
Puma goes up to 4.3.8 to fix CVE-2019-16779
Two redundant packages - json and grunt - were removed entirely.
* Tweak seed data for demo system
The seed data for the demo system was tweaked to work with
the new AdHoc lessons feature.
v1.14.0 2021-07-09
* Implement support for Peripatetic Music Lessons (and other similar)
This release adds a major new feature - the ability to organise
what it terms Ad Hoc lessons. The most obvious example of this
would be peripatetic music lessons, but it could also be used for
learning support lessons and the like - anything where pupils are
taken out of normal timetabled lessons for time doing something else.
Scheduler will assist the organiser of such lessons to ensure the
pupil's missed lessons rotate around - avoiding hitting the same timetabled
subject more often than is necessary.
v1.13.1 2021-04-08
* Tweak to event timing in the SOCS feed.
It transpires that the SOCS feed does something slightly odd once you
start adding meet times and the like to an event.
If you have just a match time, it feeds that through as the time of
the event. Once you add a meet time, it passes that as the time of
the event instead. We thus have to use the explicit fixture time and
not the integrated date/time field provided by SOCS.
v1.13.0 2021-04-05
* Upgrade Rails to 5.2.5
A licensing problem was discovered in one of the Rails dependencies,
in that a BSD-licensed component depended on another library which
was under the GNU General Public Licence. This was not a problem for
Scheduler because it too is GPL licensed, but it was a problem for Rails.
* Upgrade redcarpet to 3.5.1
CVE-2020-26298 affected the version of redcarpet previously used by
Scheduler (although not in the way Scheduler used it). Upgraded to
remove the warnings.
* Fix to detection of overlapping events.
The start and end times of Scheduler's events are stored in the database
complete with Time Zone information. Thus an all day event in the summer
starting on the 1st of June is stored as starting at 20XX-05-31 23:00.
If a query was then issued to the database specifying just a date (and
no time) the event would appear to exist in 20XX-05-31. The relevant
code in the Event model has been updated to make sure it always uses
a full TimeWithZone to specify the required threshold.
v1.12.1 2021-01-01
Three minor fixes/tweaks
* Detect and discard fixtures arriving from SOCS with a negative duration.
It seems that the SOCS system for sports fixtures does not properly
validate the fixtures as they are being entered, allowing the entry of
events with negative durations. That is, events which end before they
started. This caused a problem with the SOCS => Scheduler importer because
such events are not allowed within Scheduler.
The import now detects, logs and discards such events.
* Correct listing of "All but:" staff in free staff report for combined weeks.
The report on free staff in nominated time slots introduced in release
1.11.8 had a small bug in the report for combined weeks. If for any
given slot fewer than 10 staff are busy - that is, almost everyone is
free - it attempts to list those who are busy rather than giving a
very long list of everyone who is free.
It was found that, although it was correctly detecting the circumstance,
it then listed everyone instead of everyone who was busy. This has
been corrected.
* Improve algorithm to retro-generate activities timetable from iSAMS input
The Scheduler importer fetches information on scheduled activities from
iSAMS (the iSAMS Activities module) and loads them into the schedules
of individual staff and pupils. It also puts them onto the timetables
of users as well, but here it has a slight problem in that iSAMS does
not store them in timetable form - merely as a long list of dates during
the term.
The importer thus needs to work backwards and reconstruct a proper
timetable from these individual events. Previously it did it by the
very simple approach of looking at the coming seven days - starting
from today's date - and putting each event which it found on the appropriate
day of the week in the timetable. This led to problems when doing
advance analysis of staff loading and availability for duties - until
the start of term the timetable was not complete.
The algorithm now looks at a 28 day period of the iSAMS output, starting
7 days in the past. Any activities which it finds in that range are
allocated to the appropriate day in the timetable, with duplicates being
dropped. The timetable is thus available for use much earlier.
v1.12.0 2020-12-08
* New feature - Finding Free Times
Scheduler has long offered the ability to find a free resource of
a given type at a specified time - e.g. find a prefect who is free
from 12:30 to 13:30 on Thursday 12th.
This release adds a new facility to do it the other way around - given
a list of resources (typically, but not necessarily, people) and a
specified duration (e.g. 45 minutes) it will search for a time when
all the indicated resources are free and offer a quick way of creating
a new event at that time.
The user can either list resources individually, or use pre-existing
groups. When a group is specified, the code looks at all the individual
members of the group to find when they are all free. Thus it is
possible to search for a free slot for:
* The Senior Leadership Team
* The board room
and the code will try to find a time when all the SLT, plus the board
room are free.
v1.11.8 2020-10-13
Adds a couple of utilities to aid in managing staff duties and free
periods.
* findfreestaff
This utility takes a list of staff (defined by a Group within the
system) and a set of time slots (defined as a Day Shape) within the
system and produces a report on which are staff are free (i.e. not
timetabled to be doing anything) in the indicated periods. This
report takes account of both the academic timetable and scheduled
extra-curricular activities.
The report by default lists the requested time slots and the staff
free within them, but it can also provide the information the other
way around - a list of staff, and the periods in which each is free.
The utility runs from the command line but it can automatically
send its report to the Files area of a nominated user. Thus it
can be configured to run every night, and then the user can download
the report from Scheduler as and when it is needed.
* timetabletoxls
Similarly, this utility can convert the entire timetable (*including*
activities) to an XLS spreadsheet. It goes beyond just the timetable
periods and can produce a report for any set of time slots defined
within the day.
Again, it is intended to be run as an overnight job with the output
file being placed in a nominated user's Files area within Scheduler.
v1.11.7 2020-09-21
* Improve timetable printing
When the "Print" button is used to print timetables the page header
is now suppressed, resulting in a tidier print.
* Fix to issue displaying elements without can_roam? set
When an admin user who happened not to have the can_roam? bit set in
his or her user profile tried to show details of an element an error
was displayed instead. Admin privilege is now enough to show details
of any element.
* Utility to list staff with blank zoom IDs.
A very minimal utility has been added to generate a listing of any
active staff members (those with timetables) who have a blank zoom id.
Invoke it with:
. ~/etc/whichsystem
lib/import/findblankzoom.rb
It is inefficient but will produce a listing in about 15 seconds depending
on the speed of your system.
v1.11.6 2020-09-09
* Enhance Zoom ID import utility
The Zoom ID import utility has been enhanced to cope with a slightly
different format of input file.
* Fix to timetable printing
It was found that the buttons for printing a whole set of timetables
did not work correctly on MacOS computers. This was caused by an error
in the code which first invokes the print dialogue and then closes the
window - the window was closing too soon.
* Cope with events with negative duration from iSAMS
An event had been erroneously entered into iSAMS with a negative
duration (from 17:00 to 16:30). This caused the Scheduler import
utility to fail. The utility will now log and ignore such events.
v1.11.5 2020-09-06
* Allow tutor period to be only 15 minutes long in printed timetable
A tutor period of only 15 minutes was causing the printed timetable
to have text outside the bounding box for that period. This release
moves the text back inside the bounding box.
v1.11.4 2020-09-05
* Default to showing initials in pupils' view of their schedules.
Scheduler has long allowed for the teacher's initials to be included
in the listing for each lesson, but it's a configuration option which
defaults to off.
In this release, the default for pupils is changed to be on. They can
still opt to turn it off, but by default it's on.
A maintenance method is also provided to convert all existing students
to having it switched on.
v1.11.3 2020-06-25
* Upgrade rack to version 2.2.3
This implements a fix for CVE-2020-8184
* Upgrade websocket-extensions to 0.1.5
This implements a fix for CVE-2020-7663
v1.11.2 2020-05-29
* Ruby updated to version 2.6.6
Ruby 2.7 was released on 2019-12-25 (as is traditional) but it contains
certain deprecations in preparation for Ruby 3. Rails 5 applications
will run with Ruby 2.7 but produce quite a lot of warnings about
the deprecations. The latest versions of Rails 6 are fully compatible
with Ruby 2.7, so an upgrade to that release will have to wait until
Scheduler is upgraded to Rails 6.
In preparation for installing this release, it's worth getting
Ruby 2.6.6 installed on your system. Log in as your scheduler user
to the command line and type:
$ rvm install ruby-2.6.6
This may take 10-15 minutes to run, depending on the speed of your
system, but it can be done whilst your system is still open to users.
To install this release, some extra steps are required over and above
those given at:
https://xronos.uk/admin/upgrades.html#basic-steps
Having stopped your web server and fetched the new version with "git pull",
you then need to move out of the Scheduler directory and back in again:
$ cd ..
$ cd $SCHEDULER_DIR
This will cause rvm to notice that the new version of Ruby is required
and it will create a new gemset for it. You then do:
$ bundle install
to install all the required gems in the new gemset, and:
$ rvm alias create scheduler ruby-2.6.6@scheduler
to switch the environment to the new version of Ruby.
If you are using Passenger to run your live application, then
edit /etc/nginx/sites-available/scheduler to change the version
of Ruby used by Passenger. If your relevant line reads:
passenger_ruby /home/scheduler/.rvm/gems/ruby-2.5.5@scheduler/wrappers/ruby;
then you can change it to just:
passenger_ruby /home/scheduler/.rvm/gems/scheduler/wrappers/ruby;
(making use of the alias which you just created) and thus avoid
having to make this change in future releases.
With these steps done, resume the normal upgrade at "rake db:migrate".
* Loofah gem upgraded to version 2.5.0
For some odd reason, GitHub has a thing about applications using old
versions of Loofah. For most gems, it complains merely if there is
an actual problem with the old version, but for Loofah it complains as
soon as a new version comes out. Just to shut it up, Loofah has
been upgraded to 2.5.0.
* Puma gem upgraded to 4.3.5
There are two vulnerabilities (CVE-2020-11076 and CVE-2020-11077) in
Puma 4.3.3. These affect only sites using Puma rather than Passenger
as their application server.
v1.11.1 2020-05-24
Tidying up and polishing the move to Rails 5.
* Version number added to all old database migrations.
As of version 5, Rails requires all database migrations to specify
which version of Rails they were generated for. Anything before
Rails 5 should carry a version number of 4.2.
Whilst really old migrations shouldn't really be needed by anyone,
it's difficult to know exactly where to cut off and so all the old
ones have had version 4.2 added to them.
* Puma gem added to Gemfile