wiki:Event/2012/GSoC/Rostering

Google Summer of Code 2012 Project

TranslatedPages

Description

This project aims to create a roster tool for the CERT service. This would involve a web interface where one could view time scheduling of volunteers. Volunteers could be reassigned using drag and drop features on the timetable as per need and requirement. The interface will highlight empty slots which require filling to the user. The client may then choose to fill these slots manually or take advantage of the autofill functionality of the application which will fill the slots for you.

https://google-melange.appspot.com/gsoc/proposal/review/google/gsoc2012/bhaavanmerchant/8005

Blueprint

http://eden.sahanafoundation.org/wiki/BluePrintRoster

Demo


The current instance of the demo is available at http://bhaavan.demo.gsoc.sahanafoundation.org/eden/roster/index. Feedback on this is appreciated.

Student Details


Bhaavan Merchant
bhaavanmerchant [at] gmail [dot[ com
0091-9552435405
Repo: https://github.com/bhaavanmerchant/eden

Mentor Details


Dominic König
dominic [at] nursix [dot[ org
Forked repo: https://github.com/nursix/eden

Summary


The Rostering tool was my first development contribution to Sahana, and open source community in general. For this, initially I established a workflow with git and my developing environment. After this, based on the feedback to my project, I realized the differential from my initial view of things. For this, I spent some significant time in re-assessing my plan and project to move forward. Simultaneously I spent some time reading and getting used to development in web2py. Subsequently I began coding for my project. I had weekly meetings with Dominic, my mentor and discussed my updates and progress. To start with, I began developing the views and worked on javascript for the tool. Once that was done, I set up corresponding models, and controllers for interaction. As I grew comfortable, my coding gained momentum. Towards the end, after numerous bugfixes, breaking of existing code, refactoring of mine already written code, I spent time on improving the eden integration of my tool. I also structured the code according to the PEP8 and Developer's Guidelines.


It has been a good learning experience, and I have gained insight into Sahana development. However, during my project, I tried to code as a web2py application instead of as a part of Sahana framework. I realized this only later, and because of this, I duplicated a lot of functionality by my code, which s3 APIs already handle elegantly. This reduced affected the productivity, and I have then tried to modify my code to make more use of s3. I plan to further improve my Sahana integration after the evaluations. After a break of a couple of weeks post-evaluation, I wish to also implement the tasks mentioned in Future Scope.

Future Scope


Ability for volunteers to raise a change request and admin approval and denial for the same. This feature is already partially implemented, with tables setup. Front end CRUD for this is currently missing.
PDF print of roster. Again, code for this was partially done. It requires styling and populating data improvements to be a presentable pdf.
Ability to shift from weekly view to daily view / other views.
Templating system
Day view

To Do

  • Change the label from 'Event' to 'Type' when selecting between

Project/Org/etc ('Event Name' -> 'Name')

  • Change the resource name from 'table' to 'roster' (at least for the

user-visible CRUD strings)

  • Rename 'Slots' as 'Shifts' (which also keeps consistency with the

use of Shifts elsewhere)

  • I don't understand what 'Start' & 'Over' are for here - I guess the

idea was to integrate with other calendars, e.g. a critical one being the reporting of volunteer hours (i.e. feeding into hrm_programme_hours)

  • I would hide the fields from the UI until implemented (can keep the

fields in code, perhaps commented out with an @ToDo (I'd also rename 'Over' as 'End' to be consistent with other usages.)

  • Does the People list on the left-hand side get filtered for people

already-assigned?

  • The 'Roles' menu link is incorrect (points to the same as 'People')
  • Like that list, I would have the HRM controllers that you use

available from the Roster module (keep users within your module when accessing these options, which may require moving functions to modules & then calling from the 2 controllers)

  • The code could use some style improvements: PEP8 spacing & Eden

comment lines between functions

Meeting Dates


5 June 2012 - Google Hangout
13 June 2012 - Google Hangout
20 June 2012 - Google Hangout (1900 UTC)
27 June 2012 - Google Hangout (1900 UTC)
6 July 2012 - #sahana-meeting (1900 UTC)
11 July 2012 - Google Hangout (1700 UTC)
11 July 2012 - Google Hangout (1900 UTC)
18 July 2012 - Google Hangout (1900 UTC)
1 August 2012 - Google Hangout (1900 UTC)
3 August 2012 - Google Hangout (1800 UTC)
6 August 2012 - Google Hangout (1800 UTC)
8 August 2012 - Google Hangout (1800 UTC)
10 August 2012 - Google Hangout (1800 UTC)
13 August 2012 - Google Hangout (1800 UTC)
15 August 2012 - Google Hangout (1800 UTC)
17 August 2012 - Google Hangout (1800 UTC)

Progress


Finalizing idea
Establishing contact with CERT members for review
Setting up a controller and view for the rostering tool
Building a UI similar to the one in blueprint
Creating a prototype of the rostering tool.
CSS to match the blueprint
Database structure finalized
Database definition done
CERT Review meeting for feedback
s3db for joining tables
Dataflow from model to controller, controller to view and in reverse order established.
Working roster tool
Creating other functions for table managements, slots, shifts etc.
Integrating into eden
Using the CERT template
Shifting to explicit declaration of tables
Changing to table instance specific roles instead of global
CRUD, and UI improvements
Code cleanup for readability, and improvement. Commenting code.
Bug fixes
Functional Roster tool

Project Goals and Timeline

DateGoalMeasureProgress
24th AprilGaining a better understanding of the eden codeFixing Bugsdone
27th AprilGaining a better understanding of the CERT code. Creating a skeletal module for implementing the full code. This will be accessible through a REST UriCode commit, accessible from demo.sahana.lkdone
1st MayModified Proposal in conformation with the feedback receivedInteraction with the community to finalize the project Goals, and feedback; Modification of timeline if needed; Finalizing the details; Prioritizing the tasksdone
17th MayImplementing their demo examples and ensure proper functioningComparing all the required jQuery plugins, weighing their individual pros and cons, and choosing the right plugindone
4th JuneAdmin can view admin panelAdmin manageable paneldone
10th JuneVolunteers' list populated from databasePopulate the volunteers list with volunteers which can be dragged and dropped to main griddone
18th JulySuccess message on submission of new rosterStoring new data into databasedone
20th JulyFix correct JSON parsingComplete roster write and readdone
24th JulyOption to search volunteers, and short list volunteers by filters Scaling of the volunteers list on the side panel done
31st JulyMaking Job roles + and - functionalWorking functionalitydone
3rd AugustPreliminary Admin panelbasic functionalitydone
7th AugustComplete table identification by drop downs on indexCompleted Roster frontenddone
9th AugustProfile ImprovementsFunctional Admin Paneldone
16th AugustBuffer periodFix bugsdone
18th AugustImproved code structureCode cleanup and commenting, shifting strings to T() etc., Eden integrationdone
20th AugustProject completionComplete documentation, and submit reportdone
Last modified 12 years ago Last modified on 08/23/12 06:37:19
Note: See TracWiki for help on using the wiki.