UniTime 3.5 build 244
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.
- Download the script from http://goo.gl/dCgiV6 and import it on the Administration > Academic
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.
- To be enabled by setting the application property
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)
- /api/events: ability to retrieve events (using the EventInterface class converted to JSON,
- 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.
- For example, setting unitime.api.enrollments.cacheMode=REFRESH will make the /api/enrollments
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.
- This fixes the issue of the course alternative not being enabled when the course is entered
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)
- unitime.sectioning.config.X.LockOfferings (include offerings in the lock for the action named
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.
- By default only managers that have a session independent role or at least one department of