You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added an experimental global constraint that does not allow any two classes that the same student can attend to have a conflict.
The constraint checks any two classes of different offerings that share at least one student and that the student is allowed to take (not restricted by reservations).
Class pairs included in the Ignore Student Conflicts constraints are ignored.
Some classes may be excluded by using ExtendedStudentConflicts.IgnoreClasses parameter which may contain a regular expression matching class name(s).
Pairs of classes of the same offering are checked, too.
In this case, the course structure must allow the two classes to be attended together (e.g., they are from the same configuration),
and at least one student in the offering can take both classes.
This feature is enabled by default and can be disabled by setting ExtendedStudentConflicts.CheckSameCourse to false.
To enable this constraint, add org.cpsolver.coursett.constraint.ExtendedStudentConflicts to General.GlobalConstraints (which contains a semicolon-separated list of global constraint classes that should be automatically added to the problem)
Room Edit: Room Features & Groups
Disabled pre-fetching of room relations (such as departments, features, and groups) when loading the data for the Room Edit page.
This fixes a potential Hibernate issue that is causing room groups and features to disappear (not get loaded) in some cases that are hard to explain or reproduce.
The pre-fetching can be enabled by setting unitime.rooms.prefetchRelations to true.
Multiple Class Setup
Multiple Class Setup page rewritten to GWT to make the page faster and more reliable.
To use the old (Struts2-based) page, set unitime.legacy.course.multiple_class_setup to true.
When the managing department is changed, only remove preferences that no longer apply (e.g., keep global room feature/group preferences).
Former behavior (clear all room-related preferences) set unitime.legacy.course.clear_preferences to true.
Instructional Offering Configuration
Instructional Offering Configuration page rewritten to GWT to make the page faster and more reliable.
To use the old (Struts2-based) page, set unitime.legacy.course.instr_offering_config to true.
When the managing department is changed, only remove preferences that no longer apply (e.g., keep global room feature/group preferences).
Former behavior (clear all room-related preferences) set unitime.legacy.course.clear_preferences to true.
Scheduling Subpart Detail: Classes
Show the External Id column when there is at least one class with an external id filled in (instead of showing the column when there is a class with a timetable).
Show Student Schedule Note when at least one class has a note (instead of always showing the column).
Instructional Offering Detail: Configuration
Show the Timetable column when there is at least one class with a timetable (instead of always showing the Timetable columns).
Show the External Id column when there is at least one class with an external id filled in (instead of always showing the column).
Show Student Schedule Note when at least one class has a note (instead of never showing the column).
Student Scheduling
Scheduling Assistant: Submit Schedule
Fixed a possible TransientObjectException when a new course request is added to an existing course demand.
The problem is related to the recent Hibernate 6.2.22 update.
Student Scheduling: Reservations
Student Scheduling Solver: Improved handling of reservations with restrictions from two or more configurations by computing and using configuration-specific limit caps and reservation limits.
This makes the computation of reserved and unreserved space for a config or a section much more accurate.
Online Student Scheduling: Corrected the computation of reservation limit for reservations with restrictions from two or more configurations.
This fixes an issue causing some space not to be reserved when a reservation was set between a configuration and one or more sections of a different config.
Online Student Scheduling: The checking of available space (e.g., when a student clicks Submit Schedule) for reservations with restrictions from two or more configurations has been corrected.
This applies especially to reservations marked as exclusive (to be checked only at the levels they are set).
Add/Edit Reservation: The computation of the selected spaces when restrictions from two or more configurations are selected has been corrected.
Examination Timetabling
Examination Timetable
Load the examination grid page faster when data from the database is shown.
This is done by pre-fetching all exams and their relations (like the Examination Reports page already does).
Room Splits
No longer limit the number of rooms an exam can use.
This fixes the ArrayIndexOutOfBoundsException when an exam is split into more than 32 rooms.
Administration
Data Exchange: Last-Like Course Demand Import
Open transaction before subject areas are loaded.
This fixes a Null exception introduced with Hibernate 6.x changes.
Data Exchange: Curriculum Import
An incremental mode (when incremental="true" in the root element) was added.
Only curricula of matching abbreviations are removed.
If the XML contains curriculum A/M1, the existing A/M1 curriculum is deleted first.
Data Exchange: Reservations Import
An incremental mode (when incremental="true" in the root element) was added.
Only reservations for matching courses and types have been removed.
If the XML contains a curriculum reservation for ALG 101, all previous curriculum reservations for this course are deleted first.
User Context: Test Sessions
Added checking for test session status for Advisor, Instructor, and Student roles.
The test session is only available when the role has the Allow Test Sessions permission.
Technology Upgrade
Hibernate upgraded to version 6.4 (from 6.2).
Please note that in HQL, = null or != null no longer works (use is null or is not null instead).