CSC/ECE 517 Fall 2014/OSS S1455 ajp

From Expertiza_Wiki
Revision as of 00:41, 28 October 2014 by Aakher (talk | contribs)
Jump to navigation Jump to search

Add filtering by date in search requests

This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation

Introduction

Sahana Eden is an Open Source Humanitarian Management Platform developed, managed and maintained by the Sahana Software foundation. The Sahana Software Foundation is dedicated to the mission of saving lives by providing information management solutions that enable organizations and communities to better prepare for and respond to disasters. They develop free and open source software and provide services that help solve concrete problems and bring efficiencies to disaster response coordination between governments, aid organizations, civil society and the survivors themselves.

Some of the services provided by the Sahana Software foundation are:

  • Reuniting separated families through registering missing and found persons.
  • Tracking and managing requests for help from individuals and organizations.
  • Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.
  • Enabling relevant sharing of information across organizations.


Objective of our project

Our aim is to enhance the functionality of the project search module in the Sahana Eden application by adding filtering by date in the search requests.

Project

Overview

The Eden project is developed using the web2py Web Application Framework. The web2py framework is written in python and development using this framework uses the python programming language. This framework follows the MVC architecture that is popularly used in Web Application Development.


Application

The main purpose of the application is to provide software services to organizations that are interested in helping disaster affected areas. This is achieved through the development of the Sahana Eden Humanitarian Management Platform development platform. The platform allows Organisations and Volunteers to register and add their details, along with any details about infrastructure facilities that they might have which will assist in providing help to the disaster affected areas. For example, the site administrator can add organizations and projects that that particular organization is responsible for along with the start and end dates. User can also add assets such as relief items that can be provided to victims of the disaster. Various other options are available in addition to these for coordination and communication between volunteers and organizations.


Our Assignment

Our assignment is to enhance the search functionality of the 'project' field search by adding an option to search by date and order the search as "to" and "from" a a range of dates. Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.

Before adding the S3DateWidget. Option to search by date is not present

Solution

Implementation

This requires an understanding of the application and a fairly detailed understanding of the web2py framework and the interaction of the modules. The Eden application uses special widgets known as S3 widgets for performing tasks such as date searching in addition to many other tasks. Adding an S3DateWidget into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The S3DateWidget had to be mapped to the correct database entry in the Date object.

{
    S3DateFilter("start_date",
    label = T("Start Date")
    ),
    S3DateFilter("end_date",
    label = T("End Date")
    )
}

Here "start_date" and "end_date" are the database fields which have to be mapped. The text after label is the text that appears on the web page

After adding the S3DateWidget and mapping with the database entry.

Testing

The code was manually tested with test data. The projects were being filtered properly based on the start and end dates provided. If a date was not provided while creating the project, the search was not returning that result when searched on that field. For example, if one does not enter the 'State Date' while creating the project, this project will not be displayed if the search for 'Start Date' is performed.


Challenges

The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the application/controller/action code flow, mapping the method calls to the particular separate modules for each controller was something that was not easy at first. Backtracking the code to obtain the database entry for the table mapping was also something that we found challenging.


Future Scope

This project can be further extended to make further enhancements in the application, not just limited to date widgets, but also to the Business Logic and other UI enhancements.

References

1. Web2py
2. Sahana Eden Demo Site
3. Sahana Software Foundation
4. Sahana Eden Google Forum