Version 42 (modified by Bhaavan Merchant, 11 years ago) ( diff )


Google Summer of Code 2012 Project



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.


Student Details

Bhaavan Merchant
bhaavanmerchant [at] gmail [dot[ com

Mentor Details

Dominic König
dominic [at] nursix [dot[ org
Forked repo:


The current instance of the demo is available at Feedback on this is appreciated.


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.

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)


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

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
Note: See TracWiki for help on using the wiki.