Teaching Schedule
TeachingSchedule takes information about courses and times offered and generates views of the teaching schedule. It uses the ReportLab toolkit and its own routines to emit PNG, and other image types, PDF, SVG and simple HTML renderings. The plot produced has a left-to-right layout, wherein days are shown as columns and the time line for the day is shown on the y-axis. A plot for an entire semester, using the default settings, will be a very wide image. The image (for png, jpg, gif, etc. renderings) can be scrolled sideways on the Plone page. The usual zooming, scrolling, and panning functions of PDF viewers may be used for the PDF rendering. And, for SVG, newer browsers are getting close to functional support for SVG, including zooming, panning, scrolling.
Current release
No stable release available yet.
Project Description
LICENSE
- GPL: See TeachingSchedule.py header.
CREDITS
- SVG all around help, http://www.carto.net
- SVG emitting, http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/325823
- ReportLab toolkit and examples
- See GeologicTimeScale for additional inspirational sources
AUTHORSHIP
- initial coding: Jeff Pittman, http://www.geojeff.org
DESCRIPTION
TeachingSchedule uses the ReportLab toolkit to generate a teaching schedule plot and its own routines to emit SVG and simple HTML renderings.
TeachingSchedule is a folderish Archetypes-based Plone/Zope product. The idea is to use various renderers to create images, PDF files, and/or SVG versions of the teaching schedule and store them. This allows flexibility for a user of TeachingSchedule to offer several format versions, if needed. TeachingSchedule takes input of the following items:
- image size (width and height, in pixels)
- position (x and y of upper left corner, in pixels)
- courses, entered as comma-separated values on separate lines
for the courses. Courses are specified by:
- username
- year
- month
- day
- hour
- minute
- duration_minutes
- recurrence_interval
- start_year
- start_month
- start_day
- end_year
- end_month
- end_day
- course_name
- red, green, blue (each 0-255)
REQUIREMENTS
- Archetypes (tested with Archetypes-1.3.2-final bundle).
- Plone (tested with Plone-2.0.5)
- PIL (Python Imaging Library), http://www.pythonware.com/products/pil
- ReportLab Toolkit, from http://www.reportlab.org (tested with v. 1.20)
- renderPM, from the ReportLab Toolkit, as an addon module, from: http://www.reportlab.org (renderPM provides the full functionality for formats other than ps and pdf)
- Adobe Acrobat Reader, for fonts, from http://www.adobe.com/products/acrobat/readstep2.html. On Linux, v. 5 works; not sure about the new v. 7.
PLATFORM NOTES
- So far, testing has only been done on Linux. Browser testing has been done with Internet Explorer and Opera 8.01, and also with Mozilla Firefox DeerPark 2 Alpha. Deerpark 2 pops up a save box when viewing SVG, instead of rendering the SVG on the page -- combinations of embed, object, and iframe tags were used to no avail to get Deerpark 2 to render on the page (although it seems that it worked under some combination).
INSTALLATION
- Install Adobe Acrobat Reader, taking note of its installation directory.
- Install the ReportLab toolkit, first editing rl_config.py in the reportlab directory to set the Acrobat directory, if needed, so the fonts will be found by the renderer.
- Install the renderPM addon from ReportLab.org.
- Put TeachingSchedule in your Zope Products directory.
- Restart Zope.
- Install TeachingSchedule into your Plone site using CMFQuickInstaller. (In Plone, select "plone setup", click on "Add/Remove Products" and install TeachingSchedule.) You can also use the portal_quickinstaller tool from the ZMI to install the Product.
DERIVATIONS
This product is based on work done originally for GeologicTimeScale and for a presentation at the 2005 North American Plone Symposium in New Orleans. Other similar products will follow, including VacationPlanner.
Another obvious possibility would be something called ConferenceSchedule, which would be helpful for Plone conferences and symposia.
It should be easy to strip this product of all of its "teaching" accoutrements, to make a generic "EventSchedule" product.
TO DO
- Change the use of File to Image for png, jpg, gif, etc., and learn how to use ATImage, ATDocument that are in Plone 2.1.
- Don't show actual titles of the documents, e.g., drawing-directly-emitted.html, show the title of the schedule, e.g. Fall 2005
- Update the helper text that shows at the top of an SVG-containing html page to explain that usage varies by platform and browser, that right-clicking on Windows will give at least some useful info, and that key combinations can be used on certain platforms. Also, shorten and cram so that these instructions fit in minimal space at the top.
- Make fixes for Plone 2.1 (one is to get rid of suppressHiddenFiles in the templates, where folder_contents are used).
- SVG label items are a bit off, probably by 1/2 the day width, or other associated objects.
- Add labels for weeks and or months so it is easier to see where you are.
- Add image map or javascript rollover or tooltip effects.
- Beautify and add CSS defintions for use in the simple HTML rendering.
- Add a room info item to Event to show room use.
- Tie to the regular Plone event system to post events.
- Add what-if analysis to check for time conflicts on prospective events, and to find available holes in the teaching schedule for scheduling new events.
- Explore connection to more robust "calendaring" systems.
- Consider making a Course type. Course instances would be added to the TeachingSchedule folder by teachers or department personnel. Upon creation or recreation (by editing), the folder would be checked for course instances and the graphic would be rendered. The existing CSV style of data input could be retained as an alternative.
BUGS AND FEATURE REQUESTS
Please report bugs and feature requests to Jeff Pittman, who can be reached at jeff@geojeff.org. Jeff is often on the #plone irc channel as geojeff.
