Skip to content

UniTime 3.5 build 244

Compare
Choose a tag to compare
@tomas-muller tomas-muller released this 08 Oct 11:29
· 3486 commits to master since this release

Bug Fixes

Online Student Scheduling: Custom Student Enrollment Interface

  • Fixed an issue with the disabled for student scheduling check (do not drop a student if he/she
    is already in the section).
  • Keep sections that cannot be dropped in the add (courseReferenceNumbers) list.
  • When a course is locked and there is a change, also mark dropped sections as failed.
  • When UniTime does not know about the student, but there is an enrollment provider capable of
    requesting updates, then use the custom eligibility check to request an update.
  • During enrollment, ensure that there is a request for any course that the student failed to drop
    because of the custom student enrollment interface rejected the drop.
  • Avoid inclusing classes that were rejected to be added by the custom student enrollment
    interface in the consecutive enrollment request.

Course Timetabling: Student Sectioning

  • Include committed student conflicts in the check whether a student swap was improving.
  • Undo the swap if it was not improving (this fixes the problem that could cause student
    sectioning to hang).

Instructional Offering Configuration

  • Fixed an issue preventing a configuration with two or more levels of parent-child relations from
    being deleted (ObjectDeletedException).

Permissions

  • Remember the roles and their order when the page is loaded, use this list for the updates.
  • This fixes the issue with the permissions getting shifted between roles as the order of the
    roles is changed between updates (number of permissions of a role is used in the ordering).

Course Timetabling: Missing Solver Group

  • Fixed a NullPointerException thrown when the solver tries to load a class that is managed by
    a department which does not have a solver group.
  • Warning "Manager of class X has no solver group." is logged instead.

Other Improvements

Course Timetabling: N Hour Work Day

  • Added constraint N Hour Work Day (where N can be 6, 7, 8, ..., 12)
  • The constraint limits the time between the start of the first class and the end of the last
    class on any day.
  • Distribution type reference is WORKDAY(N), where N is between 6 and 12.
  • The constraint needs to be registered. This can be done by a script:
    • Download the script from http://goo.gl/dCgiV6 and import it on the Administration > Academic
      Sessions > Data Exchange page.
    • Run the script Distribution Types: Create Work Day Constraints on the Administration >
      Utilities > Scripts page.

Events Lookup Backend: Personal Schedule

  • Added ability to filter events by role (student, instructor, coordinator, contact):
    • contact: only list events that has the user as main or additional contact,
    • student: only list class, course related and examination events attended by the person (as
      a student),
    • instructor: only list classes, course related and examination events with the person assigned
      as instructor,
    • coordinator: only list classes, course related and examination events with the person assigned
      as course coordinator.
  • Multiple roles can be provided (default is student, instructor, and contact).
  • Added ability to type in role (or roles) on the Personal Timetable page (but the roles do not
    show up in the Event Filter).

Event Filter: Do not count conflicting events

  • Added ability to avoid counting conflicting events in the Event Filter.
    • To be enabled by setting the application property
      unitime.events.eventFilter.skipConflictCounts to true (defaults is false).
    • This makes the component load faster, especially on MySQL.

UniTime RESTful API

  • First take on creating a RESTful API in UniTime.
  • Following conntectors have been created so far:
    • /api/events: ability to retrieve events (using the EventInterface class converted to JSON,
      example: GET UniTime/api/events?type=PERSON&ext=1001&term=Fal2010)
    • /api/json: JSON interface for GWT calls (that implement the GwtRpcRequest interface)
    • /api/exchange: to export/import UniTime's data exchange XML files
      • export example: GET UniTime/api/exchange?term=Fal2010&type=students
      • import example: POST UniTime/api/exchange (with the XML as payload)
    • /api/roles?id= returns a list of academic sessions (and roles) for a person
      (returns a list of academic sessions when there is no id parameter)
    • /api/enrollments?eventId= returns student enrollments for an event, a class (when classId
      parameter is used instead), an exam (examId), a course offering (courseId), an instructional
      offering (offeringId), or instructional offering configuration (configId)
    • /api/instructor-schedule?id=&term= returns classes, courses, and
      examinations assigned to an instructor.
    • /api/class-info?classId= returns information about a class (including assinged instructors
      and coordinators)
  • Each connector has the appropriate permission (see Api... permissions), with the ability to
    either use HTTP-simple authentication or an API token.
  • It is possible to change the hibernate cache mode for a particular API connector by setting the
    unitime.api.X.cacheMode application property (where X is the connector name).
    • For example, setting unitime.api.enrollments.cacheMode=REFRESH will make the /api/enrollments
      connector to never read the hibernate cache, but it will keep it updated.

Online Student Scheduling: Scheduling Assistant

  • If eligibility check fails, keep on displaying the eligibility check message. This makes it
    easier to see why the Submit Schedule button is not visible.
  • Added ability to execute the custom eligibility check when the Submit Schedule is pressed:
    • when the custom eligibility chek returns RECHECK_BEFORE_ENROLLMENT flag, or
    • when unitime.enrollment.recheckCustomEligibility is set tu true (defaults to false).
  • Course Requests: Added a missing notification when a course is selected using the Course Finder
    dialog.
    • This fixes the issue of the course alternative not being enabled when the course is entered
      using the Course Finder dialog.

Online Student Scheduling: Locking

  • Added ability to tune the locking using application properties.
  • For each action, it is possible to specify if the student as well as the related offerings
    should be locked.
  • By default, the following operations no longer lock offerings (they only lock the student):
    eligibility, status-change, student-email.
  • The locking can be changed by the following properties:
    • unitime.sectioning.config.X.LockOfferings (include offerings in the lock for the action named
      X)
    • unitime.sectioning.config.X.LockStudents (include student in the lock for the action named X)

Online Student Scheduling Reports

  • CSV Export: Added ability to provide the academic session as parameter. This allows for the
    exporter to be called from outside of UniTime.
  • Individual Time Overlaps: Added a new report computing individual student time conflicts. There
    are four variants:
    • Individual Student Time Overlaps lists all time conflicts, showing why a conflict is allowed,
    • Not Allowed Time Overlaps only lists time conflicts that are not allowed (and should not be
      present in the data),
    • Individual Student Time Overlaps (Exclude Break Times) lists all time conflicts, but break
      times are excluded from conflict checking,
    • Not Allowed Time Overlaps (Exclude Break Times) lists all time conflicts that are not allowed
      even when break times are excluded from conflict checking

Online Student Scheduling: Enrollments table

  • Do not list enrollment message for requests that are enrolled (enrollment message contains
    a reason why a request is not enrolled).

Data Exchange: Student Enrollments and Student Sectioning XML imports

  • The import can now work with a case where class external ids are NOT unique (e.g., when Lec 1
    and Lec 1a share the same external id).
  • Fixed an issue with dropping alternative course request (deleted object would be re-saved by
    cascade).
  • Fixed an issue with parsing free-time request days of week (Thursday, Sunday were incorrectly
    parsed).
  • Added ability to have element of an element (which is the way how
    2nd alternative is exported).
  • When a student is enrolled into an existing course request, drop the enrollment message if there
    is one (enrollment message contains a reason why a request is not enrolled).

Data Exchange: Course Offering XML export and import

  • Added course offering reserved space (reserved attribute of the course element).

Technology Update: GWT 2.7.0

  • GWT updated to version 2.7.0 (was 2.6.1).
  • Also updated CGLIB to version 3.1 (was 2.2.2), to use the same version of ASM as GWT (5.0.3, was
    3.3.1).

Timetable Managers: Show all managers

  • Added ability to hide managers that have no session independent role and no relation to the
    current academic session.
    • By default only managers that have a session independent role or at least one department of
      the current academic session are shown.
    • This can be changed by checking the "Show all managers" at the bottom of the list.