Skip to content

UniTime 4.8 build 134

Compare
Choose a tag to compare
@tomas-muller tomas-muller released this 30 May 18:58
· 359 commits to master since this release

Course Timetabling

Extended Student Conflicts

  • 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).
  • Apache Struts upgraded to version 6.4 (from 2.5).

Authentication: OAuth2

Docker Installation