140502  Added cache for events up to 140426
140505 Added duration, datetime, and iso format outputs.  Loaded MRI Slots calendar and added to cache.  Removed Class data storage, using individual lists for each calendar.  Need to formalize cache use/write, json read, and parameterize calendar selection
140506 Test Commit

Test to dev branch
140506 #2 Modifying data

Changed data to dictionary items.
branch test
Revert "branch test"

This reverts commit 5141917c7626d605d0e76f6a18df6b821382b006.
branch test 2
branch test 3
140507 Restructured Event class

Modified __init__ to only apply event attribute
Only contains 'event' attribute
timestamp() takes string instead of dict
Added validate() to check for appropriate fields
Renamed functions for better readability and made them static
Split timestamp 'converting' and 'formatting'
Replaced 'start' and 'end' functions with accessor functions: get_start and get_end
Still need to modify duration()
140508 Using timetuple
140512

Start parsing summary data
Prepare to write to CSV
140513 Trying to regexp calendar events
140514 Working on SLEIC Calendar Event details and parsing

Added dictionary resource and look-up for pi, projects, and subjects
Added better parsing of calendar events
Need to modularize CalendarReports.py for debugging and readability
140515 Refactoring utilities and resources

Created /utils folder
Created resources.py
Created Directory and Calendar classes in resources.py
Removed most code and beginning to relocate to resources.py classes
Rearranged data structure of calendars.json (not committed)
140516 Adding functionalities to resources, creating class hierarchy

Added DataClass base class type
Added History and json reading
140519

Organizing and Refactoring code in resources
140521 Add reports to History

Added COUNT, START, END, and RANGE for historical event data
Added timestamp_to_datestring to EventClass
Fixed attributes for History instances rather than class attributes
140521 Minor fixes to directory structure
140521 Fix event.py
140521 Fix event.py #2