<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aakher</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aakher"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Aakher"/>
	<updated>2026-08-07T00:21:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_S1455&amp;diff=92553</id>
		<title>CSC/ECE 517 Fall 2014/final S1455</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_S1455&amp;diff=92553"/>
		<updated>2014-12-15T23:58:17Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please read the &amp;quot;README&amp;quot; file provided in expertiza. This wiki page contains design details for the project for Sahana Eden Humanitarian Platform, on their Central African Republic deployment.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:{{{align|right}}}&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; |[[File:SahanaLogo.png|center|Sahana]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
== Background Information ==&lt;br /&gt;
====About Sahana Eden====&lt;br /&gt;
Sahana Eden is an Open Source Humanitarian Platform, which can be used to provide solutions for Disaster Management, Development, and Environmental Management sectors. It is supported by the  Sahana Software Foundation, Used in many Deployments, such as Ebola, Kashmir Floods, Hurricane Sandy, just to name a few. It is highly configurable so that it can be used in a wide variety of different contexts and is easy to modify to build custom solutions. Different levels of support are available from both the voluntary Sahana Eden community and professional companies. Sahana focuses on Community and Professional Support.&lt;br /&gt;
&lt;br /&gt;
====Getting to know the domain====&lt;br /&gt;
&lt;br /&gt;
Their [http://eden.sahanafoundation.org/wiki/Domain domain] page elaborately describes various major management projects and deployments that are done in the past or are ongoing. Spending some time to understand goals and purposes of Sahana before starting with actual development might help making the code better and more sensible from Sahana's perspective.&lt;br /&gt;
&lt;br /&gt;
====Installation &amp;amp; tutorials====&lt;br /&gt;
&lt;br /&gt;
Anyone who wishes to contribute their development skill to Sahana, can do so with the help of an elaborate guide they have provided, that covers everything from [http://eden.sahanafoundation.org/wiki/InstallationGuidelines installation] to [http://eden.sahanafoundation.org/wiki/Book tutorials] on Python. Once the installations are complete, you can simply identify a task you are interested in, and start working on it. You may also want to sign their [https://docs.google.com/a/ncsu.edu/spreadsheet/viewform?formkey=dEp5czdPYThPY2htX2pNM1JGaTBrRGc6MQ#gid=0 Contributor's License Agreement] before making any pull request.&lt;br /&gt;
&lt;br /&gt;
Below is a high level overview to begin contributing to Sahana-&lt;br /&gt;
&lt;br /&gt;
The code is in the folder: web2py/applications/eden&lt;br /&gt;
&lt;br /&gt;
Inside that folder are folders for Models (define the data structure), Controllers (provide URLs to enable access to the data) &amp;amp; Views (HTML templates).&lt;br /&gt;
&lt;br /&gt;
Each module within Sahana Eden will normally consist of one of each of these files:&lt;br /&gt;
&lt;br /&gt;
    Model: modules/s3db/modulename.py&lt;br /&gt;
    Controller: controllers/modulename.py&lt;br /&gt;
    View: views/modulename/index.html&lt;br /&gt;
&lt;br /&gt;
In order to know which file to edit in order to change a particular function, you need to look at the URL. The Web2Py web framework maps URLs as follows:&lt;br /&gt;
&lt;br /&gt;
    http://host/application/controller/function&lt;br /&gt;
&lt;br /&gt;
So, if you want to edit the Home page with the URL:&lt;br /&gt;
&lt;br /&gt;
    http://host/eden/default/index&lt;br /&gt;
&lt;br /&gt;
This implies that you should look at the file eden/controllers/default.py and the index function within it which can be found by searching for the function title &amp;quot;def index():&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Tip: Sahana Eden makes heavy use of integrated resource controllers so the typical mapping is:&lt;br /&gt;
&lt;br /&gt;
    http://host/eden/module/resource&lt;br /&gt;
&lt;br /&gt;
The resource refers to a table with the name module_resource in the file modules/s3db/&amp;lt;module&amp;gt;.py&lt;br /&gt;
&lt;br /&gt;
==Introduction to project==&lt;br /&gt;
&lt;br /&gt;
====Overview====&lt;br /&gt;
In the Central African Republic page, some data needs new models, and some models need tweaking. The purpose of this project is to identify any such requirement and make necessary changes. The general steps to follow in Sahana development are mentioned below-&lt;br /&gt;
&lt;br /&gt;
1. Add/modify the core models in modules/s3db&lt;br /&gt;
&lt;br /&gt;
2. Add REST controllers for new models&lt;br /&gt;
&lt;br /&gt;
3. Check basic operations using automatic CRUD interface- tweak list_fields to the most-relevant fields perhaps &lt;br /&gt;
&lt;br /&gt;
4. Add menu entries (modules/s3menus.py)&lt;br /&gt;
&lt;br /&gt;
5. Develop XSLT &amp;amp; CSV templates (static/formats/s3csv) to bulk import the data&lt;br /&gt;
&lt;br /&gt;
6. Convert the data to these CSV templates- use ogr2ogr for this &lt;br /&gt;
&lt;br /&gt;
7. Add layers to the map (private/templates/&amp;lt;TEMPLATE&amp;gt;/gis_layer_feature.csv. Look at default for now) including Markers and tooltips (popup_format)&lt;br /&gt;
&lt;br /&gt;
8. Provide some report_options to make a meaningful report&lt;br /&gt;
&lt;br /&gt;
====Scope====&lt;br /&gt;
Four modules related to this deployment are-&lt;br /&gt;
&lt;br /&gt;
1. Health - modules/s3db/hms.py&lt;br /&gt;
&lt;br /&gt;
2. Transport - modules/s3db/transport.py&lt;br /&gt;
&lt;br /&gt;
3. Water - modules/s3db/water.py&lt;br /&gt;
&lt;br /&gt;
4. School - There is no separate module for education. &lt;br /&gt;
&lt;br /&gt;
====Reference Material====&lt;br /&gt;
&lt;br /&gt;
[http://www.humanitarianresponse.info/operations/central-african-republic/dataset/central-african-republic-health Hospital Model]&lt;br /&gt;
&lt;br /&gt;
[http://geonode.wfp.org/layers/geonode:wld_poi_bcp_wfp Border Control Points], [http://www.humanitarianresponse.info/operations/central-african-republic/dataset/central-african-republic-roads Roads], [http://geonode.wfp.org/layers/geonode:wld_trs_supplyroutes_wfp Routes], [http://www.humanitarianresponse.info/operations/central-african-republic/dataset/central-african-republic-aerodromes-airports-airfields Airports]&lt;br /&gt;
&lt;br /&gt;
[http://www.humanitarianresponse.info/operations/central-african-republic/dataset/central-african-republic-water-bodies Water Bodies], [http://www.humanitarianresponse.info/operations/central-african-republic/dataset/central-african-republic-water-bodies-0 Water Points], [http://www.humanitarianresponse.info/operations/central-african-republic/dataset/central-african-republic-water-courses Rivers]&lt;br /&gt;
&lt;br /&gt;
[http://www.humanitarianresponse.info/operations/central-african-republic/dataset/central-african-republic-education Education]&lt;br /&gt;
&lt;br /&gt;
==System Overview==&lt;br /&gt;
&lt;br /&gt;
Sahana Eden Framework:&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid Application Development (RAD) Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, CSV, JSON and EXtensible Stylesheet Language (XSL) transforms are supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden Framework has flexible authorization policies which can be configured to grant permissions for different modules, tables as well as the ability to have multiple Organizations control their own data on a single Sahana Eden installation.&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be downloaded and run locally from a flash drive. Synchronization functionality allows data to be entered then keep up to date between different installations, including online servers and local flash drive installations. The Sahana Eden Framework also includes a scheduler for running tasks at a specific time, in regular intervals or as asynchronous tasks which are triggered by users. &lt;br /&gt;
&lt;br /&gt;
Sahana Eden is mainly implemented using Python, web2py, CSS and foundation. When you open the code in Eclipse, you can see that web2py is very much like Ruby on Rails. Analyze the screenshots below-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: workspace.png]][[File: workspace2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our focus is on Controllers, Models, Modules and views. For every action on various pages on Sahana Humanitarian website, there are set of controllers defined. As mentioned above, we want to focus on 4 models- health, transport, water and school.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Unicef Key&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Unicef value (number)&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; OSM tag&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; all objects&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/wiki/Key:amenity&amp;quot; title=&amp;quot;Key:amenity&amp;quot;&amp;gt;amenity&amp;lt;/a&amp;gt;=&amp;lt;a href=&amp;quot;/wiki/Tag:amenity%3Dhospital&amp;quot; title=&amp;quot;Tag:amenity=hospital&amp;quot;&amp;gt;hospital&amp;lt;/a&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; all objects&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/wiki/Key:source&amp;quot; title=&amp;quot;Key:source&amp;quot;&amp;gt;source&amp;lt;/a&amp;gt;=&amp;lt;a href=&amp;quot;/w/index.php?title=Tag:source%3DUNICEF&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Tag:source=UNICEF (page does not exist)&amp;quot;&amp;gt;UNICEF&amp;lt;/a&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; ID&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; WPT&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; CODE&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FOSA_CODE&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; LAT_DD&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; LONG_DD&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PAYS&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; PREF, SOUS_PREF, COMM, VILLE_VILL, QUARTIER&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/w/index.php?title=Key:addr%CB%90full&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Key:addrːfull (page does not exist)&amp;quot;&amp;gt;addrːfull&amp;lt;/a&amp;gt;=*&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; VILLE_VILL&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/wiki/Key:addr:city&amp;quot; title=&amp;quot;Key:addr:city&amp;quot; class=&amp;quot;mw-redirect&amp;quot;&amp;gt;addr:city&amp;lt;/a&amp;gt;=*&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; POP_VILLE&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; STATUT_FOS&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Public (306)&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/wiki/Key:operator:type&amp;quot; title=&amp;quot;Key:operator:type&amp;quot;&amp;gt;operator:type&amp;lt;/a&amp;gt;=&amp;lt;a href=&amp;quot;/w/index.php?title=Tag:operator:type%3Dgovernment&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Tag:operator:type=government (page does not exist)&amp;quot;&amp;gt;government&amp;lt;/a&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; STATUT_FOS&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Prive (37)&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/wiki/Key:operator:type&amp;quot; title=&amp;quot;Key:operator:type&amp;quot;&amp;gt;operator:type&amp;lt;/a&amp;gt;=&amp;lt;a href=&amp;quot;/w/index.php?title=Tag:operator:type%3Dprivate&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Tag:operator:type=private (page does not exist)&amp;quot;&amp;gt;private&amp;lt;/a&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TYPE_FOSA&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Poste de sante (204)&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/w/index.php?title=Key:health_facility:type&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Key:health facility:type (page does not exist)&amp;quot;&amp;gt;health_facility:type&amp;lt;/a&amp;gt;=&amp;lt;a href=&amp;quot;/w/index.php?title=Tag:health_facility:type%3Ddispensary&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Tag:health facility:type=dispensary (page does not exist)&amp;quot;&amp;gt;dispensary&amp;lt;/a&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TYPE_FOSA&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Centre de sante (with beds) (118)&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/w/index.php?title=Key:health_facility:type&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Key:health facility:type (page does not exist)&amp;quot;&amp;gt;health_facility:type&amp;lt;/a&amp;gt;=&amp;lt;a href=&amp;quot;/w/index.php?title=Tag:health_facility:type%3Dhealth_center&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Tag:health facility:type=health center (page does not exist)&amp;quot;&amp;gt;health_center&amp;lt;/a&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TYPE_FOSA&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hopital prefectoral (7)&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/w/index.php?title=Key:health_facility:type&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Key:health facility:type (page does not exist)&amp;quot;&amp;gt;health_facility:type&amp;lt;/a&amp;gt;=&amp;lt;a href=&amp;quot;/w/index.php?title=Tag:health_facility:type%3Dprefectoral_hospital&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Tag:health facility:type=prefectoral hospital (page does not exist)&amp;quot;&amp;gt;prefectoral_hospital&amp;lt;/a&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TYPE_FOSA&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hopital regional (3)&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/w/index.php?title=Key:health_facility:type&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Key:health facility:type (page does not exist)&amp;quot;&amp;gt;health_facility:type&amp;lt;/a&amp;gt;=&amp;lt;a href=&amp;quot;/w/index.php?title=Tag:health_facility:type%3Dregional_hospital&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Tag:health facility:type=regional hospital (page does not exist)&amp;quot;&amp;gt;regional_hospital&amp;lt;/a&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TYPE_FOSA&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Clinique privee (1)&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/w/index.php?title=Key:health_facility:type&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Key:health facility:type (page does not exist)&amp;quot;&amp;gt;health_facility:type&amp;lt;/a&amp;gt;=&amp;lt;a href=&amp;quot;/w/index.php?title=Tag:health_facility:type%3Dprivate_hospital&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Tag:health facility:type=private hospital (page does not exist)&amp;quot;&amp;gt;private_hospital&amp;lt;/a&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TYPE_FOSA&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; No attribut (1)&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not to upload&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; NOM_FOSA&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/wiki/Key:name&amp;quot; title=&amp;quot;Key:name&amp;quot;&amp;gt;name&amp;lt;/a&amp;gt;=*&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; NB_LITS&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; numbers 0-179&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/w/index.php?title=Key:capacity:beds&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Key:capacity:beds (page does not exist)&amp;quot;&amp;gt;capacity:beds&amp;lt;/a&amp;gt;=*&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; NB_PERS_SO&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because unknown meaning&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; NB_PATIENT&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; COMITE_WAS&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Oui/Non&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; NB_PERS_WA&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; LTA&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because unknown meaning&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; VIP&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because unknown meaning&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; VIP_PLEIN&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because unknown meaning&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; LATRINES_S&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; LAVE_MAINS&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Oui/Non&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; INCINERATE&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; BAC_A_ORDU&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Oui/Non&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; not tagged because not relevant&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TOTAL_LATR&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; numbers 0-23&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;tt style=&amp;quot;background-color:#dde; white-space:pre;&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/w/index.php?title=Key:toilets:number&amp;amp;amp;action=edit&amp;amp;amp;redlink=1&amp;quot; class=&amp;quot;new&amp;quot; title=&amp;quot;Key:toilets:number (page does not exist)&amp;quot;&amp;gt;toilets:number&amp;lt;/a&amp;gt;=*&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==System Architecture==&lt;br /&gt;
The basic Sahana Eden architecture is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border: 1px dotted rgb(0, 0, 0); border-collapse: collapse;&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Web Server&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;Apache&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;Other web servers can also be used, such as Cherokee.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Application&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;Sahana Eden&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Web Application Framework&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;Web2Py&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Programming Language&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;Python &amp;amp;amp; Java Script&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Database&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;MySQL, PostgreSQL, or SQLite&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;&amp;lt;p&amp;gt;MySQL, PostgreSQL, and SQLite are supported.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Other databases should be usable without major additional work since Web2Py supplies many connectors.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Operating System&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;Linux (Debian recommended)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border: 1px dotted rgb(0, 0, 0);&amp;quot;&amp;gt;Windows and Mac OS X are possible, but only recommended for single-user environments.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requirement Analysis==&lt;br /&gt;
&lt;br /&gt;
The requirements state that some of the data needs new models. Also, the school database states that there is no module for education. Even on the [http://www.humanitarianresponse.info/operations/central-african-republic/dataset/central-african-republic-education education website] of Central African Republic, it says that the data is incomplete. Addition of new module, say edu.py in s3db module, will solve this problem.&lt;br /&gt;
&lt;br /&gt;
For the purpose of this project, we will need to follow these steps-&lt;br /&gt;
&lt;br /&gt;
1. Installation and setup- Follow the installation guidelines provided by Sahana to build the system on individual machines. Then, do the setup for Git repository, i.e. forking Sahana eden repo and adding the original as remote branch.&lt;br /&gt;
&lt;br /&gt;
2. Identify properties for &amp;quot;edu.py&amp;quot; and define the basic data model in the models/ folder.&lt;br /&gt;
&lt;br /&gt;
3. Add corresponding controller which provides access to this resource. Create another new file, this time in the controllers/ folder.&lt;br /&gt;
&lt;br /&gt;
4. Define Field Types- By default fields are created with type string, however we may wish to use other data types. All fields have both client-side widgets &amp;amp; server-side validation automatically added based on their data type. &lt;br /&gt;
&lt;br /&gt;
5. Customize and Internationalize field labels- Field labels are automatically generated from the field names, however we are able to customize these by adding a 'label' attribute. &lt;br /&gt;
&lt;br /&gt;
6. Add Links to other Resources.&lt;br /&gt;
&lt;br /&gt;
7. Override default CRUD Strings.&lt;br /&gt;
&lt;br /&gt;
8. Update the Menus- There are two levels of menu within the system: The top-level 'Modules Menu' is visible in all modules. Underneath that, each module has its own menu for for module-specific navigation.&lt;br /&gt;
&lt;br /&gt;
9. Test the changes.&lt;br /&gt;
&lt;br /&gt;
=== GIS Requirements === &lt;br /&gt;
==== Understanding OpenLayers &amp;amp; GeoExt ====&lt;br /&gt;
OpenLayers is an open source, client side JavaScript library for making interactive web maps, viewable in nearly any web browser. Since it is a client side library, it requires no special server side so beware or settings—you can use it without even downloading anything.Originally developed by Metacarta, as a response, in part, to Google Maps, it has grown into a mature, popular framework with many passionate developers and a very helpful community.&lt;br /&gt;
*OpenLayers.Map&lt;br /&gt;
Here is an example that will create a page containing a full screen OpenLayers map. This is not the most basic of maps, but will work if you copy and paste the html content.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;iso-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &lt;br /&gt;
 &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; lang=&amp;quot;EN&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
   &amp;lt;style&amp;gt;&lt;br /&gt;
    html,body {&lt;br /&gt;
     height: 99%;&lt;br /&gt;
     width: 99%;&lt;br /&gt;
     }&lt;br /&gt;
    #map {&lt;br /&gt;
     width: 100%;&lt;br /&gt;
     height: 100%;&lt;br /&gt;
     border: 1px solid black;&lt;br /&gt;
     }	&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
    &amp;lt;script src='http://openlayers.org/api/OpenLayers.js'&amp;gt;&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
   &amp;lt;/head&amp;gt;&lt;br /&gt;
   &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt; div id=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/ div&amp;gt;&lt;br /&gt;
      &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       var map = new OpenLayers.Map('map',{maxResolution: 0.703125} );&lt;br /&gt;
       var wmscURL = [&lt;br /&gt;
        &amp;quot;http://wmsc1.terrapages.net/getmap?&amp;quot;,&lt;br /&gt;
        &amp;quot;http://wmsc2.terrapages.net/getmap?&amp;quot;,&lt;br /&gt;
        &amp;quot;http://wmsc3.terrapages.net/getmap?&amp;quot;,&lt;br /&gt;
        &amp;quot;http://wmsc4.terrapages.net/getmap?&amp;quot;&lt;br /&gt;
         ];&lt;br /&gt;
       var terrapagesStreetLayer = new OpenLayers.Layer.WMS( 'TerraPages Street',wmscURL, {layers: 'UnprojectedStreet', format: 'image/jpeg' }, {buffer: 1, isBaseLayer: true} );&lt;br /&gt;
       map.addLayer(terrapagesStreetLayer);&lt;br /&gt;
       map.zoomToMaxExtent();		&lt;br /&gt;
      &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*OpenLayers.Layer.Markers&lt;br /&gt;
&lt;br /&gt;
Below is an example of how to create a Markers Layer, and add a single marker on that layer at the specified lon and lat. This will also apply an offest to the icon image, so that it can be aligned horizontally centered, vertically bottom over the position.&lt;br /&gt;
&lt;br /&gt;
  var markersLayer = new OpenLayers.Layer.Markers(&amp;quot;My Marker Layer&amp;quot;);&lt;br /&gt;
  var iconSize =  new OpenLayers.Size(20,20);&lt;br /&gt;
  var iconOffset = new OpenLayers.Pixel(-(iconSize.w/2), -iconSize.h);&lt;br /&gt;
  var marker = new OpenLayers.Marker(&lt;br /&gt;
  new OpenLayers.LonLat(&amp;lt;&amp;lt;lon&amp;gt;&amp;gt;,&amp;lt;&amp;lt;lat&amp;gt;&amp;gt;),&lt;br /&gt;
  new OpenLayers.Icon(&amp;lt;&amp;lt;iconURL&amp;gt;&amp;gt;,iconSize,iconOffset)&lt;br /&gt;
  );&lt;br /&gt;
  markersLayer.setVisibility(true);&lt;br /&gt;
  markersLayer.addMarker(marker);&lt;br /&gt;
  map.addLayer(markersLayer);&lt;br /&gt;
&lt;br /&gt;
==== Add layers to the map ====&lt;br /&gt;
Sahana Eden makes use of Openlayers and GeoExt for its GIS module. A map is basically a combination of several stitched tiles which are rendered on the web page upon request. The overall map functionalities include displaying various hospital types, locations, heliports and other map related data.We are focusing on adding a new overlay layer to the existing map layers and as well using a customised image icon for displaying marker symbol for our overlay layer.&lt;br /&gt;
&lt;br /&gt;
[[File:Map-screen.png]]&lt;br /&gt;
&lt;br /&gt;
==Design Principles==&lt;br /&gt;
&lt;br /&gt;
For our project, the best design principle applicable is &amp;quot;Open Close Principle&amp;quot;. Since we are introducing a new module, there will definitely be extensions to it, but very few modifications.&lt;br /&gt;
&lt;br /&gt;
The common features/functions will be encapsulated to ensure that the code is &amp;quot;DRY&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Proposed Test Cases==&lt;br /&gt;
&lt;br /&gt;
For end-user performance gains, Sahana Eden minimizes and compresses the CSS and JavaScript. While this approach works well for optimized end-user performance, to debug the CSS and JavaScript we shall enable debug mode in models/000_config.py  in our Sahana Eden server with the following setting:&lt;br /&gt;
&lt;br /&gt;
  settings.base.debug = True&lt;br /&gt;
&lt;br /&gt;
Once any changes to the CSS and JavaScript are working, then we can minimizes and compresses the CSS and JavaScript using:&lt;br /&gt;
&lt;br /&gt;
  static/scripts/tools/build.sahana.py&lt;br /&gt;
&lt;br /&gt;
Although this uses a web service, you get better results by downloading a local version of the Closure Compiler (a tool for making JavaScript download and run faster) to static/scripts/tools. It is also possible to quickly view a single page in debug mode by adding the ?debug=1 variable to the end of a URL.&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
[https://groups.google.com/forum/#!forum/sahana-eden Public Google Forum to discuss any development issues]&lt;br /&gt;
&lt;br /&gt;
[http://sahanafoundation.org/sahana-launches-eurosha-humanitarian-data-site/ Sahana Launches EUROSHA Humanitarian Data Site]&lt;br /&gt;
&lt;br /&gt;
[http://sahanafoundation.org/eurosha-volunteer-diary/ A EUROSHA Volunteer Diary]&lt;br /&gt;
&lt;br /&gt;
[http://en.flossmanuals.net/sahana-eden/user-stories/ User stories]&lt;br /&gt;
&lt;br /&gt;
[http://www.un.org/apps/news/story.asp?NewsID=49300#.VGLHHo_wbK8 Central African Republic: UN urges support to meet basic needs in hard-hit province]&lt;br /&gt;
&lt;br /&gt;
[https://www.packtpub.com/books/content/what-openlayers OpenLayers]&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Central_African_Republic Wiki Page]&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=VoQAxQgevEA War in the Central African Republic (Full Length Documentary)]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90101</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90101"/>
		<updated>2014-10-28T20:20:59Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article provides an introduction to Sahana Eden Framework and describes our work on fixing a bug in the Open Source Sahana Eden Software Foundation. Initially we had chosen ticket #[http://eden.sahanafoundation.org/ticket/1511 1511] but our mentors' recommendation, we looked into a different open bug. We then chose ticket #[http://eden.sahanafoundation.org/ticket/1225 1225] as our project.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a [http://en.wikipedia.org/wiki/Rapid_application_development Rapid Application Development (RAD)] Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, [http://en.wikipedia.org/wiki/Comma-separated_values CSV], JSON and [http://en.wikipedia.org/wiki/XSL EXtensible Stylesheet Language (XSL)] transforms are supported to produce other data standards. The development is primarily done using Python, HTML, CSS and Javascript.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. The documentation for the S3 Widgets used in the application can be found [http://pub.nursix.org/eden/s3/ here]. This contains all the S3 Widgets. Only a subset of these are used in the application. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is. In interactive view formats, this is a &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; of view variables.&lt;br /&gt;
&lt;br /&gt;
==== Basic Options ====&lt;br /&gt;
The options are set using the syntax,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s3mgr.configure(table, key=value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where,&lt;br /&gt;
* &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; is the respective database table&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; is the setting key&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is the configuration value&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5. [http://eden.sahanafoundation.org/wiki/DeveloperGuidelines Sahana Eden Developer Guidelines]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90099</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90099"/>
		<updated>2014-10-28T20:20:02Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article provides an introduction to Sahana Eden Framework and describes our work on fixing a bug in the Open Source Sahana Eden Software Foundation. Initially we had chosen ticket #[http://eden.sahanafoundation.org/ticket/1511 1511] but on our mentors advised us to look into a different open bug. We then chose ticket #[http://eden.sahanafoundation.org/ticket/1225 1225] as our project.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a [http://en.wikipedia.org/wiki/Rapid_application_development Rapid Application Development (RAD)] Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, [http://en.wikipedia.org/wiki/Comma-separated_values CSV], JSON and [http://en.wikipedia.org/wiki/XSL EXtensible Stylesheet Language (XSL)] transforms are supported to produce other data standards. The development is primarily done using Python, HTML, CSS and Javascript.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. The documentation for the S3 Widgets used in the application can be found [http://pub.nursix.org/eden/s3/ here]. This contains all the S3 Widgets. Only a subset of these are used in the application. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is. In interactive view formats, this is a &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; of view variables.&lt;br /&gt;
&lt;br /&gt;
==== Basic Options ====&lt;br /&gt;
The options are set using the syntax,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s3mgr.configure(table, key=value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where,&lt;br /&gt;
* &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; is the respective database table&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; is the setting key&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is the configuration value&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5. [http://eden.sahanafoundation.org/wiki/DeveloperGuidelines Sahana Eden Developer Guidelines]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90098</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90098"/>
		<updated>2014-10-28T20:13:14Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation. Initially we had chosen ticket #[http://eden.sahanafoundation.org/ticket/1511 1511] but on our mentors advised us to look into a different open bug. We then chose ticket #[http://eden.sahanafoundation.org/ticket/1225 1225] as our project.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a [http://en.wikipedia.org/wiki/Rapid_application_development Rapid Application Development (RAD)] Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, [http://en.wikipedia.org/wiki/Comma-separated_values CSV], JSON and [http://en.wikipedia.org/wiki/XSL EXtensible Stylesheet Language (XSL)] transforms are supported to produce other data standards. The development is primarily done using Python, HTML, CSS and Javascript.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. The documentation for the S3 Widgets used in the application can be found [http://pub.nursix.org/eden/s3/ here]. This contains all the S3 Widgets. Only a subset of these are used in the application. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is. In interactive view formats, this is a &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; of view variables.&lt;br /&gt;
&lt;br /&gt;
==== Basic Options ====&lt;br /&gt;
The options are set using the syntax,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s3mgr.configure(table, key=value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where,&lt;br /&gt;
* &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; is the respective database table&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; is the setting key&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is the configuration value&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5. [http://eden.sahanafoundation.org/wiki/DeveloperGuidelines Sahana Eden Developer Guidelines]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90095</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90095"/>
		<updated>2014-10-28T20:11:03Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation. Initially we had chosen ticket #[http://eden.sahanafoundation.org/ticket/1511 1511] but on our mentors advised us to look into a different open bug. We then chose ticket #[http://eden.sahanafoundation.org/ticket/1225 1225] as our project.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a [http://en.wikipedia.org/wiki/Rapid_application_development Rapid Application Development (RAD)] Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, [http://en.wikipedia.org/wiki/Comma-separated_values CSV], JSON and [http://en.wikipedia.org/wiki/XSL EXtensible Stylesheet Language (XSL)] transforms are supported to produce other data standards. The development is primarily done using Python, HTML, CSS and Javascript.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. The documentation for the S3 Widgets used in the application can be found [http://pub.nursix.org/eden/s3/ here]. This contains all the S3 Widgets. Only a subset of these are used in the application. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is. In interactive view formats, this is a &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; of view variables.&lt;br /&gt;
&lt;br /&gt;
==== Basic Options ====&lt;br /&gt;
The options are set using the syntax,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s3mgr.configure(table, key=value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where,&lt;br /&gt;
* &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; is the respective database table&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; is the setting key&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is the configuration value&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Running Sahana Eden =&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5. [http://eden.sahanafoundation.org/wiki/DeveloperGuidelines Sahana Eden Developer Guidelines]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90094</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90094"/>
		<updated>2014-10-28T20:10:39Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation. Initially we had chosen ticket #[http://eden.sahanafoundation.org/ticket/1511 1511] but on our mentors advised us to look into a different open bug. We then chose ticket #[http://eden.sahanafoundation.org/ticket/1225 1225] as our project.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a [http://en.wikipedia.org/wiki/Rapid_application_development Rapid Application Development (RAD)] Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, [http://en.wikipedia.org/wiki/Comma-separated_values CSV], JSON and [http://en.wikipedia.org/wiki/XSL EXtensible Stylesheet Language (XSL)] transforms are supported to produce other data standards. The development is primarily done using Python, HTML, CSS and Javascript.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. The documentation for the S3 Widgets used in the application can be found [http://pub.nursix.org/eden/s3/ here]. This contains all the S3 Widgets. Only s subset of these are used in the application. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is. In interactive view formats, this is a &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; of view variables.&lt;br /&gt;
&lt;br /&gt;
==== Basic Options ====&lt;br /&gt;
The options are set using the syntax,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s3mgr.configure(table, key=value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where,&lt;br /&gt;
* &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; is the respective database table&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; is the setting key&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is the configuration value&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Running Sahana Eden =&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5. [http://eden.sahanafoundation.org/wiki/DeveloperGuidelines Sahana Eden Developer Guidelines]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90091</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90091"/>
		<updated>2014-10-28T20:05:19Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation. Initially we had chosen ticket #[http://eden.sahanafoundation.org/ticket/1511 1511] but on our mentors advised us to look into a different open bug. We then chose ticket #[http://eden.sahanafoundation.org/ticket/1225 1225] as our project.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a [http://en.wikipedia.org/wiki/Rapid_application_development Rapid Application Development (RAD)] Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, [http://en.wikipedia.org/wiki/Comma-separated_values CSV], JSON and [http://en.wikipedia.org/wiki/XSL EXtensible Stylesheet Language (XSL)] transforms are supported to produce other data standards. The development is primarily done using Python, HTML, CSS and Javascript.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is. In interactive view formats, this is a &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; of view variables.&lt;br /&gt;
&lt;br /&gt;
==== Basic Options ====&lt;br /&gt;
The options are set using the syntax,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s3mgr.configure(table, key=value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where,&lt;br /&gt;
* &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; is the respective database table&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; is the setting key&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is the configuration value&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Running Sahana Eden =&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
5. [http://eden.sahanafoundation.org/wiki/DeveloperGuidelines Sahana Eden Developer Guidelines]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90089</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90089"/>
		<updated>2014-10-28T19:59:36Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation. Initially we had chosen ticket #[http://eden.sahanafoundation.org/ticket/1511 1511] but on our mentors advised us to look into a different open bug. We then chose ticket #[http://eden.sahanafoundation.org/ticket/1225 1225] as our project.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a [http://en.wikipedia.org/wiki/Rapid_application_development Rapid Application Development (RAD)] Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, [http://en.wikipedia.org/wiki/Comma-separated_values CSV], JSON and [http://en.wikipedia.org/wiki/XSL EXtensible Stylesheet Language (XSL)] transforms are supported to produce other data standards. The development is primarily done using Python, HTML, CSS and Javascript.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is. In interactive view formats, this is a &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; of view variables.&lt;br /&gt;
&lt;br /&gt;
==== Basic Options ====&lt;br /&gt;
The options are set using the syntax,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s3mgr.configure(table, key=value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where,&lt;br /&gt;
* &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; is the respective database table&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; is the setting key&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is the configuration value&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Running Sahana Eden =&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90088</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90088"/>
		<updated>2014-10-28T19:57:59Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation. Initially we had chosen ticket #[http://eden.sahanafoundation.org/ticket/1511 1511] but on our mentors advised us to look into a different open bug. We then chose ticket #[http://eden.sahanafoundation.org/ticket/1225 1225] as our project.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a [http://en.wikipedia.org/wiki/Rapid_application_development Rapid Application Development (RAD)] Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, CSV, JSON and EXtensible Stylesheet Language (XSL) transforms are supported to produce other data standards. The development is primarily done using Python, HTML, CSS and Javascript.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is. In interactive view formats, this is a &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; of view variables.&lt;br /&gt;
&lt;br /&gt;
==== Basic Options ====&lt;br /&gt;
The options are set using the syntax,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s3mgr.configure(table, key=value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where,&lt;br /&gt;
* &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; is the respective database table&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; is the setting key&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is the configuration value&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Running Sahana Eden =&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90087</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90087"/>
		<updated>2014-10-28T19:56:18Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation. Initially we had chosen ticket #[http://eden.sahanafoundation.org/ticket/1511 1511] but on our mentors advised us to look into a different open bug. We then chose ticket #[http://eden.sahanafoundation.org/ticket/1225 1225] as our project.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid Application Development (RAD) Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, CSV, JSON and EXtensible Stylesheet Language (XSL) transforms are supported to produce other data standards. The development is primarily done using Python, HTML, CSS and Javascript.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is. In interactive view formats, this is a &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; of view variables.&lt;br /&gt;
&lt;br /&gt;
==== Basic Options ====&lt;br /&gt;
The options are set using the syntax,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s3mgr.configure(table, key=value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where,&lt;br /&gt;
* &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; is the respective database table&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; is the setting key&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is the configuration value&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Running Sahana Eden =&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90086</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90086"/>
		<updated>2014-10-28T19:45:21Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid Application Development (RAD) Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, CSV, JSON and EXtensible Stylesheet Language (XSL) transforms are supported to produce other data standards. The development is primarily done using Python, HTML, CSS and Javascript.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is. In interactive view formats, this is a &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; of view variables.&lt;br /&gt;
&lt;br /&gt;
==== Basic Options ====&lt;br /&gt;
The options are set using the syntax,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s3mgr.configure(table, key=value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where,&lt;br /&gt;
* &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; is the respective database table&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; is the setting key&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is the configuration value&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90083</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90083"/>
		<updated>2014-10-28T19:38:27Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid Application Development (RAD) Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, CSV, JSON and EXtensible Stylesheet Language (XSL) transforms are supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is. In interactive view formats, this is a &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; of view variables.&lt;br /&gt;
&lt;br /&gt;
==== Basic Options ====&lt;br /&gt;
The options are set using the syntax,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s3mgr.configure(table, key=value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where,&lt;br /&gt;
* &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; is the respective database table&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; is the setting key&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is the configuration value&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90082</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90082"/>
		<updated>2014-10-28T19:37:33Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid Application Development (RAD) Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, CSV, JSON and EXtensible Stylesheet Language (XSL) transforms are supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is. In interactive view formats, this is a &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; of view variables.&lt;br /&gt;
&lt;br /&gt;
==== Basic Options ====&lt;br /&gt;
The options are set using the syntax,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
s3mgr.configure(table, key=value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where,&lt;br /&gt;
* &amp;lt;code&amp;gt;table is the respective database table&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; is the setting key&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is the configuration value&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90081</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90081"/>
		<updated>2014-10-28T19:33:50Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid Application Development (RAD) Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, CSV, JSON and EXtensible Stylesheet Language (XSL) transforms are supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is. In interactive view formats, this is a &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; of view variables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90080</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90080"/>
		<updated>2014-10-28T19:33:03Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid Application Development (RAD) Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, CSV, JSON and EXtensible Stylesheet Language (XSL) transforms are supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt; contains the result of the request and can be returned from the controller as-is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90079</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90079"/>
		<updated>2014-10-28T19:32:21Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid Application Development (RAD) Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, CSV, JSON and EXtensible Stylesheet Language (XSL) transforms are supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output = s3_rest_controller(prefix, resourcename)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90078</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90078"/>
		<updated>2014-10-28T19:31:24Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid Application Development (RAD) Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, CSV, JSON and EXtensible Stylesheet Language (XSL) transforms are supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
==== Basic Syntax ====&lt;br /&gt;
&amp;lt;code&amp;gt;output = s3_rest_controller(prefix, resourcename)&amp;lt;/code&amp;gt;&lt;br /&gt;
In this example,&lt;br /&gt;
* &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is the application prefix of the resource&lt;br /&gt;
* &amp;lt;code&amp;gt;resourcename&amp;lt;/code&amp;gt; is the name of the resource (without prefix)&lt;br /&gt;
* &amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90077</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90077"/>
		<updated>2014-10-28T19:27:20Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid Application Development (RAD) Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, CSV, JSON and EXtensible Stylesheet Language (XSL) transforms are supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90076</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90076"/>
		<updated>2014-10-28T19:26:47Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid Application Development (RAD) Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, CSV, JSON and EXtensible Stylesheet Language (XSL) transforms are supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of the main tasks of the S3 REST Controller include:&lt;br /&gt;
* Parse and execute the incoming HTTP request on the specified resource&lt;br /&gt;
* Populate and hand-over view variables&lt;br /&gt;
* Choose and set the responsive view template&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90075</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90075"/>
		<updated>2014-10-28T19:25:06Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Sahana Eden Framework =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid Application Development (RAD) Framework. This provides a high level of automation to ensure that new solutions can be quickly and effectively developed. Once a database table is defined, the Sahana Eden Framework automatically generates HTML pages to handle CRUD (Create, Read, Update, Delete) as well as Search, Map and Pivot Reports. Web Services are available to import and export in XML, CSV, JSON and EXtensible Stylesheet Language (XSL) transforms are supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
=== S3 API ===&lt;br /&gt;
The Sahana Eden modules are developed using the S3 Framework Extension for web2py. The S3 Framework provides a generic [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] API for many of the Eden data resources. All the S3 Widgets that are used in the application are defined here. All S3 framework extensions for web2py reside as a Python package in &amp;lt;code&amp;gt;modules/s3&amp;lt;/code&amp;gt;. The core classes of the S3 API that are used are&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
* S3Request&lt;br /&gt;
* S3Resource&lt;br /&gt;
* SeResourceFilter&lt;br /&gt;
* FieldSelector&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S3 REST Controller ===&lt;br /&gt;
The REST Controller function s3_rest_controller() is a helper function to easily apply the RESTful API of the S3Resource to the controller&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90038</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90038"/>
		<updated>2014-10-28T00:41:50Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    S3DateFilter(&amp;quot;start_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;Start Date&amp;quot;)&lt;br /&gt;
    ),&lt;br /&gt;
    S3DateFilter(&amp;quot;end_date&amp;quot;,&lt;br /&gt;
    label = T(&amp;quot;End Date&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here &amp;quot;&amp;lt;code&amp;gt;start_date&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;end_date&amp;lt;/code&amp;gt;&amp;quot; are the database fields which have to be mapped. The text after &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; is the text that appears on the web page&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90037</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90037"/>
		<updated>2014-10-28T00:35:15Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
4. [https://groups.google.com/forum/#!forum/sahana-eden Sahana Eden Google Forum]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90035</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90035"/>
		<updated>2014-10-28T00:34:16Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90034</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90034"/>
		<updated>2014-10-28T00:29:35Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The code was 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.&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.web2py.com/ Web2py]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. [http://demo.eden.sahanafoundation.org/eden/default/index Sahana Eden Demo Site]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3. [http://sahanafoundation.org/ Sahana Software Foundation]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90032</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90032"/>
		<updated>2014-10-28T00:22:08Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py Web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;. Option to search by date is not present]]&lt;br /&gt;
&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from. The &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; had to be mapped to the correct database entry in the Date object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The code was 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.&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry.]]&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
The biggest challenge we faced was understanding the flow of code using the Web2py framework. In addition to the &amp;lt;code&amp;gt;application/controller/action&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90031</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90031"/>
		<updated>2014-10-28T00:08:04Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Add filtering by date in search requests =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
= Introduction =&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Objective of our project =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py Web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|center|480 px|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
= Solution =&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The code was 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.&lt;br /&gt;
[[File:AfterV1.JPG|thumb|center|466 px|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Future Scope ===&lt;br /&gt;
&lt;br /&gt;
This project can be further extended to&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90030</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90030"/>
		<updated>2014-10-27T23:37:25Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== '''Add filtering by date in search requests''' ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objective of our project ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py Web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Solution ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The code was 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.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|480 px|left|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;]]&lt;br /&gt;
[[File:AfterV1.JPG|thumb|466 px|right|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry]]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90029</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90029"/>
		<updated>2014-10-27T23:33:35Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== '''Add filtering by date in search requests''' ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Sahana Eden is an [http://en.wikipedia.org/wiki/Open-source_software 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objective of our project ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the [http://en.wikipedia.org/wiki/Web2py Web2py] Web Application Framework. The web2py framework is written in [http://en.wikipedia.org/wiki/Python_(programming_language) python] and development using this framework uses the python programming language. This framework follows the [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC architecture] that is popularly used in [http://en.wikipedia.org/wiki/Web_application_development Web Application Development].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Solution ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from.&lt;br /&gt;
The code was 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.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|480 px|left|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;]]&lt;br /&gt;
[[File:AfterV1.JPG|thumb|466 px|right|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry]]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90028</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90028"/>
		<updated>2014-10-27T23:25:38Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== '''Add filtering by date in search requests''' ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Sahana Eden is a 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objective of our project ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the Web2py Web Application Framework. The web2py framework is 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Solution ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from.&lt;br /&gt;
The code was 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.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|480 px|left|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;]]&lt;br /&gt;
[[File:AfterV1.JPG|thumb|466 px|right|After adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; and mapping with the database entry]]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:AfterV1.JPG&amp;diff=90027</id>
		<title>File:AfterV1.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:AfterV1.JPG&amp;diff=90027"/>
		<updated>2014-10-27T23:18:00Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90024</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90024"/>
		<updated>2014-10-27T22:42:04Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== '''Add filtering by date in search requests''' ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Sahana Eden is a 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objective of our project ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the Web2py Web Application Framework. The web2py framework is 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:BeforeV1.JPG|thumb|480 px|right|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=== Solution ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from.&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:BeforeV1.JPG&amp;diff=90023</id>
		<title>File:BeforeV1.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:BeforeV1.JPG&amp;diff=90023"/>
		<updated>2014-10-27T22:40:52Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90018</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90018"/>
		<updated>2014-10-27T22:38:29Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== '''Add filtering by date in search requests''' ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Sahana Eden is a 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objective of our project ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the Web2py Web Application Framework. The web2py framework is 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
[[File:Before.jpg|thumb|239 px|right|Before adding the &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=== Solution ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from.&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Before.jpg&amp;diff=90011</id>
		<title>File:Before.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Before.jpg&amp;diff=90011"/>
		<updated>2014-10-27T22:34:21Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90002</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=90002"/>
		<updated>2014-10-27T22:14:06Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== '''Add filtering by date in search requests''' ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Sahana Eden is a 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objective of our project ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the Web2py Web Application Framework. The web2py framework is 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Solution ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;S3DateWidget&amp;lt;/code&amp;gt; into the module associated with the projects page display incorporated the search functionality to specify a range of dates to search from.&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Before.JPG&amp;diff=90000</id>
		<title>File:Before.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Before.JPG&amp;diff=90000"/>
		<updated>2014-10-27T22:08:01Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89998</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89998"/>
		<updated>2014-10-27T21:57:40Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== '''Add filtering by date in search requests''' ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Sahana Eden is a 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objective of our project ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the Web2py Web Application Framework. The web2py framework is 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Our Assignment ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;to&amp;quot; and &amp;quot;from&amp;quot; a a range of dates.&lt;br /&gt;
Addition of these filters will help the user narrow her search, thereby improving the ergonomic functionality of the application.&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89996</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89996"/>
		<updated>2014-10-27T21:53:23Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== '''Add filtering by date in search requests''' ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Sahana Eden is a 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objective of our project ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
'''Overview'''&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the Web2py Web Application Framework. The web2py framework is 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Application'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89988</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89988"/>
		<updated>2014-10-27T20:53:21Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== '''Add filtering by date in search requests''' ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Sahana Eden is a 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objective of our project ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
'''Overview'''&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the Web2py Web Application Framework. The web2py framework is 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.&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89987</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89987"/>
		<updated>2014-10-27T20:51:17Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Add filtering by date in search requests''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Sahana Eden is a 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objective of our project ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
'''Overview'''&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the Web2py Web Application Framework. The web2py framework is 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.&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014&amp;diff=89986</id>
		<title>CSC/ECE 517 Fall 2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014&amp;diff=89986"/>
		<updated>2014-10-27T20:50:06Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[CSC/ECE_517_Fall_2014/sample_page]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a 22 as]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 19 mx]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 3 zq]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 4 lf]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 4 wl]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a a7 ch]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 25 rs]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 25 jf]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 8 os]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 8 sn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 15 gs]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 10 hu]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 20 kv]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 21 as]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 24 sa]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 26 sn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 6 rl]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 2 ss]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 16 av]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 1 rm]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 1 sj]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 23 ss]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 20 rn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 22 sp]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 26 gn]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 13 va]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 9 aa]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 9 kn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 11 ap]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 25 ks]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 7 kz]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a_6_bn]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a 10 zz]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a 16 va]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a F1415 rv]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a_3_cp]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1b 26 sa]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b_28_cg]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b 29 ry]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b 30 cs]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b_33_jy]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b_27_js]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss E1465 oak]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss_M1456_kdv]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss_M1453_sst]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss_E1456_akk]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_M1455_asa]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1458_sst]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1457_ags]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_E1466_gjf]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_M1452_jns]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1467_nms]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_S1455_ajp]]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89985</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89985"/>
		<updated>2014-10-27T20:48:54Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Add filtering by date in search requests'''&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Sahana Eden is a 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objective of our project ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
'''Overview'''&lt;br /&gt;
&lt;br /&gt;
The Eden project is developed using the Web2py Web Application Framework. The web2py framework is 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.&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89984</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89984"/>
		<updated>2014-10-27T20:46:51Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Add filtering by date in search requests'''&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Sahana Eden is a 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objective of our project ==&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89983</id>
		<title>CSC/ECE 517 Fall 2014/OSS S1455 ajp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/OSS_S1455_ajp&amp;diff=89983"/>
		<updated>2014-10-27T20:44:58Z</updated>

		<summary type="html">&lt;p&gt;Aakher: Created page with &amp;quot;'''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...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Add filtering by date in search requests'''&lt;br /&gt;
&lt;br /&gt;
This article is related to our work on fixing a bug in the Open Source Sahana Eden Software Foundation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Sahana Eden is a 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.&lt;br /&gt;
&lt;br /&gt;
Some of the services provided by the Sahana Software foundation are:&lt;br /&gt;
* Reuniting separated families through registering missing and found persons.&lt;br /&gt;
* Tracking and managing requests for help from individuals and organizations.&lt;br /&gt;
* Tracking organizations and programs responding to the disaster, including the coverage and balance in the distribution of aid, providing transparency in the response effort.&lt;br /&gt;
* Enabling relevant sharing of information across organizations.&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014&amp;diff=89982</id>
		<title>CSC/ECE 517 Fall 2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014&amp;diff=89982"/>
		<updated>2014-10-27T20:34:15Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[CSC/ECE_517_Fall_2014/sample_page]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a 22 as]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 19 mx]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 3 zq]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 4 lf]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 4 wl]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a a7 ch]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 25 rs]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 25 jf]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 8 os]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 8 sn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 15 gs]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 10 hu]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 20 kv]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 21 as]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 24 sa]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 26 sn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 6 rl]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 2 ss]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 16 av]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 1 rm]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 1 sj]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 23 ss]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 20 rn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 22 sp]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 26 gn]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 13 va]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 9 aa]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 9 kn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 11 ap]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 25 ks]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 7 kz]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a_6_bn]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a 10 zz]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a 16 va]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a F1415 rv]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a_3_cp]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1b 26 sa]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b_28_cg]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b 29 ry]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b 30 cs]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b_33_jy]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b_27_js]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss E1465 oak]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss_M1456_kdv]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss_M1453_sst]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss_E1456_akk]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_M1455_asa]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1458_sst]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1457_ags]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_E1466_gjf]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_M1452_jns]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1467_nms]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/OSS_S1455_ajp]]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_24_sa&amp;diff=87800</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 24 sa</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_24_sa&amp;diff=87800"/>
		<updated>2014-09-20T03:39:28Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Active Model Serializers=&lt;br /&gt;
&lt;br /&gt;
[[File:ClientServer.png‎|right|]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails] offers strong features to write API based server applications, which expose data through a well designed API and serve data in various formats as requested. One of these features is '''[http://github.com/rails-api/active_model_serializers Active Model Serializers]''' which help the API designer to have fine control over the response generated by the API to a data request. '''Active Model Serializers''' help programmers do this very easily and cleanly without breaking separation of concerns in a rails application. They promote [http://en.wikipedia.org/wiki/Convention_over_configuration convention over configuration], thus reducing code bloat and increasing code scalibility and readability.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Let us familiarize ourselves with a few terms before getting to the usage of '''Active Model Serializers'''.&lt;br /&gt;
;Active Model&lt;br /&gt;
:'''[http://railscasts.com/episodes/219-active-model Active Model]''' is closely related to the widely used concept of '''[http://en.wikibooks.org/wiki/Ruby_on_Rails/ActiveRecord Active Record]''' in the Rails world. '''Active Record''' is an object that maps directly to the data in our database. An '''Active Record''' takes care of fetching and saving data to the database. For example, in an employee records application an Employee Active Record helps to persist a newly created/edited Employee. So how is an '''Active Model''' different? It may not always be the case that we want our Employee model to be backed by a database. But we might want to have all the functionality that an Active Record provides (for example, validations on the Employee model to check if name is present on the Employee Active Record before persisting it or checking if the active record got dirtied because of an attribute change etc. ). An example of this is, as and when an Employee create form is submitted, we might want to just send an email to the admin with the new employee data once we validate that data. An '''Active Model''' does just this. Infact, the rails developers segregated all the non database functionality out of an '''Active Record''' into an '''Active Model'''.&lt;br /&gt;
&lt;br /&gt;
;Serializer&lt;br /&gt;
:Serializer is a small program that takes an object residing in program memory (for example: could be a C# object in an ASP.NET application, or an ActiveModel object in a Rails application) and converts this information into format that is transferrable over the wire, for example, JSON and XML. This is required because the client may be written in Java and there is no way for it to read an Active Model Ruby Object that exists in memory on the server side.&lt;br /&gt;
&lt;br /&gt;
;API Server Application&lt;br /&gt;
:API Server application is an application which serves data requests coming from a variety of clients (for example: mobile, desktop) in various formats such as JSON, XML. For example, An employee data web service which returns employee age and name in both JSON and XML&lt;br /&gt;
&lt;br /&gt;
=Why Active Model Serializers?=&lt;br /&gt;
&lt;br /&gt;
* '''Custom response attributes:''' It is not always the case that an API application serves a request by responding with data as it is stored on the server. The API designer has a task of exposing just the right data to the clients and hence needs fine control over exactly what part of the data on the server is returned in a response. An Active Model Serializer could help return just the Employee age and name to the client as JSON and ignore all the other attributes set on an Employee Model.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Separation of Concerns:''' The response data could also be customized in the respond_to method of the rails controller action or for example, by implementing a custom as_json method on the model class. However this breaks the separation of concerns principle as we let something like formatting the response data venture into the controller and model layer. With Active Model Serializers we can keep this functionality segregated from the application.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*'''Maintainability:''' Client needs keep changing. Let's say a Client requests some changes to the API response data, only the Active Model Serializer would get affected and there are no side effects on the Controller or the Model itself.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=How Active Model Serializer Works?=&lt;br /&gt;
[[File:Active-Model-Serializer2.png‎|right]]&lt;br /&gt;
&lt;br /&gt;
Active Model Serializers work with the help of two components namely '''Serializer''' and '''Adapter'''. Let's say we wanted to write an Active Model Serializer for customizing an API that returns Employee data as json. We would have to write an '''EmployeeSerializer''' which is configured to use a '''JsonApiAdapter'''. The '''Serializer''' Component would specify which attributes and relationships of Employee to other models would be captured in the response data. For example, it might choose to return the Employee name, age and the data about the employee's family members which are different models. The '''Adapter''' component specifies how to format this selected Employee data in the correct format as required by the client. A JsonApiAdapter would format it as JSON and is the default adapter used by an Active Model Serializer. However you can always supply your own Adapter for the serializer to use.&lt;br /&gt;
&lt;br /&gt;
Assume the Employee data API scenario cited above and Refer to the figure. &lt;br /&gt;
#The Controller receives the request for json data and routes it to a specific action method&lt;br /&gt;
#The action method has a respond_to method that returns Employee model as JSON. When Rails encounters this line, it looks for an EmployeeSerializer in the project specifically in a file employee_serializer to get the exact data to be put into the response.&lt;br /&gt;
#The EmployeeSerializer is by default configured to use a JsonApiAdapter and formats the specified attributes and relationships in the JSON format. This forms the final customized response.&lt;br /&gt;
&lt;br /&gt;
As you can see, instead of returning the default JSON conversion of the Employee model from the respond_to method, that Rails does automatically for us, we were able to customize our API response data through the use of Active Model Serializers in a non-intrusive way maintaining separation from the controller and the model layers.&lt;br /&gt;
&lt;br /&gt;
=Using Active Model Serializer=&lt;br /&gt;
&lt;br /&gt;
Let us see some code now.&lt;br /&gt;
&lt;br /&gt;
'''Step 1:''' Active Model Serializer is available as a gem. Add to the gem file the following line :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gem 'active_model_serializers'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step 2:''' Run the following command at the terminal window to install the gem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bundle update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step 3:''' This gem provides a serializer generator for the selected Active Model. For example, if employee was your Active Model run :&lt;br /&gt;
rails g serializer employee&lt;br /&gt;
&lt;br /&gt;
This would create a file employee_serializer.rb containing the following code in the newly created app/serializers directory of your project:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class EmployeeSerializer &amp;lt; ActiveModel::Serializer&lt;br /&gt;
  attributes :id&lt;br /&gt;
 &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step 4:''' Add your custom attributes and any other customizations to this file. For example: We are adding a url attribute to get details of this employee although the Employee Active Model does not have any such attribute. We add it because the client might be interested in it. That is the power of Active Model Serializer. It does not require us to define another property on the Employee Active Model to return its Url.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class EmployeeSerializer &amp;lt; ActiveModel::Serializer&lt;br /&gt;
  attributes :id, :name, :age, :url &lt;br /&gt;
 &lt;br /&gt;
  def url&lt;br /&gt;
    employee_url(object)&lt;br /&gt;
  end  &lt;br /&gt;
 &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step 5:''' That's it! Whenever an Employee is requested the custom EmployeeSerializer does the task of serializing the employee to json and will now include a url key value pair to view the Employee.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#[http://railscasts.com/episodes/409-active-model-serializers Railcast on Active Model Serializers]&lt;br /&gt;
#[https://github.com/rails-api/active_model_serializers Active Model Serializer module on github]&lt;br /&gt;
#[http://asciicasts.com/episodes/409-active-model-serializers Active Model Serializer Asciicast]&lt;br /&gt;
#[https://www.youtube.com/watch?v=G6ipU6AiEXY Active Model Serializer Video Tutorial]&lt;br /&gt;
#[http://yehudakatz.com/2010/01/10/activemodel-make-any-ruby-object-feel-like-activerecord/ Active Model]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/Serialization Serialization wiki]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/JSON JSON wiki]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/RubyGems RubyGems wiki]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_24_sa&amp;diff=87795</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 24 sa</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_24_sa&amp;diff=87795"/>
		<updated>2014-09-20T03:36:56Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Active Model Serializers=&lt;br /&gt;
&lt;br /&gt;
[[File:ClientServer.png‎|right|]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails] offers strong features to write API based server applications, which expose data through a well designed API and serve data in various formats as requested. One of these features is '''[http://github.com/rails-api/active_model_serializers Active Model Serializers]''' which help the API designer to have fine control over the response generated by the API to a data request. '''Active Model Serializers''' help programmers do this very easily and cleanly without breaking separation of concerns in a rails application. They promote [http://en.wikipedia.org/wiki/Convention_over_configuration convention over configuration], thus reducing code bloat and increasing code scalibility and readability.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Let us familiarize ourselves with a few terms before getting to the usage of '''Active Model Serializers'''.&lt;br /&gt;
;Active Model&lt;br /&gt;
:'''[http://railscasts.com/episodes/219-active-model Active Model]''' is closely related to the widely used concept of '''[http://en.wikibooks.org/wiki/Ruby_on_Rails/ActiveRecord Active Record]''' in the Rails world. '''Active Record''' is an object that maps directly to the data in our database. An '''Active Record''' takes care of fetching and saving data to the database. For example, in an employee records application an Employee Active Record helps to persist a newly created/edited Employee. So how is an '''Active Model''' different? It may not always be the case that we want our Employee model to be backed by a database. But we might want to have all the functionality that an Active Record provides (for example, validations on the Employee model to check if name is present on the Employee Active Record before persisting it or checking if the active record got dirtied because of an attribute change etc. ). An example of this is, as and when an Employee create form is submitted, we might want to just send an email to the admin with the new employee data once we validate that data. An '''Active Model''' does just this. Infact, the rails developers segregated all the non database functionality out of an '''Active Record''' into an '''Active Model'''.&lt;br /&gt;
&lt;br /&gt;
;Serializer&lt;br /&gt;
:Serializer is a small program that takes an object residing in program memory (for example: could be a C# object in an ASP.NET application, or an ActiveModel object in a Rails application) and converts this information into format that is transferrable over the wire, for example, JSON and XML. This is required because the client may be written in Java and there is no way for it to read an Active Model Ruby Object that exists in memory on the server side.&lt;br /&gt;
&lt;br /&gt;
;API Server Application&lt;br /&gt;
:API Server application is an application which serves data requests coming from a variety of clients (for example: mobile, desktop) in various formats such as JSON, XML. For example, An employee data web service which returns employee age and name in both JSON and XML&lt;br /&gt;
&lt;br /&gt;
=Why Active Model Serializers?=&lt;br /&gt;
&lt;br /&gt;
* '''Custom response attributes:''' It is not always the case that an API application serves a request by responding with data as it is stored on the server. The API designer has a task of exposing just the right data to the clients and hence needs fine control over exactly what part of the data on the server is returned in a response. An Active Model Serializer could help return just the Employee age and name to the client as JSON and ignore all the other attributes set on an Employee Model.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Separation of Concerns:''' The response data could also be customized in the respond_to method of the rails controller action or for example, by implementing a custom as_json method on the model class. However this breaks the separation of concerns principle as we let something like formatting the response data venture into the controller and model layer. With Active Model Serializers we can keep this functionality segregated from the application.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*'''Maintainability:''' Client needs keep changing. Let's say a Client requests some changes to the API response data, only the Active Model Serializer would get affected and there are no side effects on the Controller or the Model itself.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=How Active Model Serializer Works?=&lt;br /&gt;
[[File:Active-Model-Serializer2.png‎|right]]&lt;br /&gt;
&lt;br /&gt;
Active Model Serializers work with the help of two components namely '''Serializer''' and '''Adapter'''. Let's say we wanted to write an Active Model Serializer for customizing an API that returns Employee data as json. We would have to write an '''EmployeeSerializer''' which is configured to use a '''JsonApiAdapter'''. The '''Serializer''' Component would specify which attributes and relationships of Employee to other models would be captured in the response data. For example, it might choose to return the Employee name, age and the data about the employee's family members which are different models. The '''Adapter''' component specifies how to format this selected Employee data in the correct format as required by the client. A JsonApiAdapter would format it as JSON and is the default adapter used by an Active Model Serializer. However you can always supply your own Adapter for the serializer to use.&lt;br /&gt;
&lt;br /&gt;
Assume the Employee data API scenario cited above and Refer to the figure. &lt;br /&gt;
#The Controller receives the request for json data and routes it to a specific action method&lt;br /&gt;
#The action method has a respond_to method that returns Employee model as JSON. When Rails encounters this line, it looks for an EmployeeSerializer in the project specifically in a file employee_serializer to get the exact data to be put into the response.&lt;br /&gt;
#The EmployeeSerializer is by default configured to use a JsonApiAdapter and formats the specified attributes and relationships in the JSON format. This forms the final customized response.&lt;br /&gt;
&lt;br /&gt;
As you can see, instead of returning the default JSON conversion of the Employee model from the respond_to method, that Rails does automatically for us, we were able to customize our API response data through the use of Active Model Serializers in a non-intrusive way maintaining separation from the controller and the model layers.&lt;br /&gt;
&lt;br /&gt;
=Using Active Model Serializer=&lt;br /&gt;
&lt;br /&gt;
Let us see some code now.&lt;br /&gt;
&lt;br /&gt;
'''Step 1:''' Active Model Serializer is available as a gem. Add to the gem file the following line :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gem 'active_model_serializers'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step 2:''' Run the following command at the terminal window to install the gem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bundle update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step 3:''' This gem provides a serializer generator for the selected Active Model. For example, if employee was your Active Model run :&lt;br /&gt;
rails g serializer employee&lt;br /&gt;
&lt;br /&gt;
This would create a file employee_serializer.rb containing the following code in the newly created app/serializers directory of your project:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class EmployeeSerializer &amp;lt; ActiveModel::Serializer&lt;br /&gt;
  attributes :id&lt;br /&gt;
 &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step 4:''' Add your custom attributes and any other customizations to this file. For example: We are adding a url attribute to get details of this employee although the Employee Active Model does not have any such attribute. We add it because the client might be interested in it. That is the power of Active Model Serializer. It does not require us to define another property on the Employee Active Model to return its Url.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class EmployeeSerializer &amp;lt; ActiveModel::Serializer&lt;br /&gt;
  attributes :id, :name, :age, :url &lt;br /&gt;
 &lt;br /&gt;
  def url&lt;br /&gt;
    employee_url(object)&lt;br /&gt;
  end  &lt;br /&gt;
 &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step 5:''' Thats it! Whenever an Employee is requested the custom EmployeeSerializer does the task of serializing the employee to json and will now include a url key value pair to view the Employee.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#[http://railscasts.com/episodes/409-active-model-serializers Railcast on Active Model Serializers]&lt;br /&gt;
#[https://github.com/rails-api/active_model_serializers Active Model Serializer module on github]&lt;br /&gt;
#[http://asciicasts.com/episodes/409-active-model-serializers Active Model Serializer Asciicast]&lt;br /&gt;
#[https://www.youtube.com/watch?v=G6ipU6AiEXY Active Model Serializer Video Tutorial]&lt;br /&gt;
#[http://yehudakatz.com/2010/01/10/activemodel-make-any-ruby-object-feel-like-activerecord/ Active Model]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/Serialization Serialization wiki]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/JSON JSON wiki]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/RubyGems RubyGems wiki]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_24_sa&amp;diff=87793</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 24 sa</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_24_sa&amp;diff=87793"/>
		<updated>2014-09-20T03:36:19Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Active Model Serializers=&lt;br /&gt;
&lt;br /&gt;
[[File:ClientServer.png‎|right|]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails] offers strong features to write API based server applications, which expose data through a well designed API and serve data in various formats as requested. One of these features is '''[http://github.com/rails-api/active_model_serializers Active Model Serializers]''' which help the API designer to have fine control over the response generated by the API to a data request. '''Active Model Serializers''' help programmers do this very easily and cleanly without breaking separation of concerns in a rails application. They promote [http://en.wikipedia.org/wiki/Convention_over_configuration convention over configuration], thus reducing code bloat and increasing code scalibility and readability.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Let us familiarize ourselves with a few terms before getting to the usage of '''Active Model Serializers'''.&lt;br /&gt;
;Active Model&lt;br /&gt;
:'''[http://railscasts.com/episodes/219-active-model Active Model]''' is closely related to the widely used concept of '''[http://en.wikibooks.org/wiki/Ruby_on_Rails/ActiveRecord Active Record]''' in the Rails world. '''Active Record''' is an object that maps directly to the data in our database. An '''Active Record''' takes care of fetching and saving data to the database. For example, in an employee records application an Employee Active Record helps to persist a newly created/edited Employee. So how is an '''Active Model''' different? It may not always be the case that we want our Employee model to be backed by a database. But we might want to have all the functionality that an Active Record provides (for example, validations on the Employee model to check if name is present on the Employee Active Record before persisting it or checking if the active record got dirtied because of an attribute change etc. ). An example of this is, as and when an Employee create form is submitted, we might want to just send an email to the admin with the new employee data once we validate that data. An '''Active Model''' does just this. Infact, the rails developers segregated all the non database functionality out of an '''Active Record''' into an '''Active Model'''.&lt;br /&gt;
&lt;br /&gt;
;Serializer&lt;br /&gt;
:Serializer is a small program that takes an object residing in program memory (for example: could be a C# object in an ASP.NET application, or an ActiveModel object in a Rails application) and converts this information into format that is transferrable over the wire, for example, JSON and XML. This is required because the client may be written in Java and there is no way for it to read an Active Model Ruby Object that exists in memory on the server side.&lt;br /&gt;
&lt;br /&gt;
;API Server Application&lt;br /&gt;
:API Server application is an application which serves data requests coming from a variety of clients (for example: mobile, desktop) in various formats such as JSON, XML. For example, An employee data web service which returns employee age and name in both JSON and XML&lt;br /&gt;
&lt;br /&gt;
=Why Active Model Serializers?=&lt;br /&gt;
&lt;br /&gt;
* '''Custom response attributes:''' It is not always the case that an API application serves a request by responding with data as it is stored on the server. The API designer has a task of exposing just the right data to the clients and hence needs fine control over exactly what part of the data on the server is returned in a response. An Active Model Serializer could help return just the Employee age and name to the client as JSON and ignore all the other attributes set on an Employee Model.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Separation of Concerns:''' The response data could also be customized in the respond_to method of the rails controller action or for example, by implementing a custom as_json method on the model class. However this breaks the separation of concerns principle as we let something like formatting the response data venture into the controller and model layer. With Active Model Serializers we can keep this functionality segregated from the application.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*'''Maintainability:''' Client needs keep changing. Let's say a Client requests some changes to the API response data, only the Active Model Serializer would get affected and there are no side effects on the Controller or the Model itself.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=How Active Model Serializer Works?=&lt;br /&gt;
[[File:Active-Model-Serializer2.png‎|right]]&lt;br /&gt;
&lt;br /&gt;
Active Model Serializers work with the help of two components namely '''Serializer''' and '''Adapter'''. Let's say we wanted to write an Active Model Serializer for customizing an API that returns Employee data as json. We would have to write an '''EmployeeSerializer''' which is configured to use a '''JsonApiAdapter'''. The '''Serializer''' Component would specify which attributes and relationships of Employee to other models would be captured in the response data. For example, it might choose to return the Employee name, age and the data about the employee's family members which are different models. The '''Adapter''' component specifies how to format this selected Employee data in the correct format as required by the client. A JsonApiAdapter would format it as JSON and is the default adapter used by an Active Model Serializer. However you can always supply your own Adapter for the serializer to use.&lt;br /&gt;
&lt;br /&gt;
Assume the Employee data API scenario cited above and Refer to the figure. &lt;br /&gt;
#The Controller receives the request for json data and routes it to a specific action method&lt;br /&gt;
#The action method has a respond_to method that returns Employee model as JSON. When Rails encounters this line, it looks for an EmployeeSerializer in the project specifically in a file employee_serializer to get the exact data to be put into the response.&lt;br /&gt;
#The EmployeeSerializer is by default configured to use a JsonApiAdapter and formats the specified attributes and relationships in the JSON format. This forms the final customized response.&lt;br /&gt;
&lt;br /&gt;
As you can see, instead of returning the default JSON conversion of the Employee model from the respond_to method, that Rails does automatically for us, we were able to customize our API response data through the use of Active Model Serializers in a non-intrusive way maintaining separation from the controller and the model layers.&lt;br /&gt;
&lt;br /&gt;
=Using Active Model Serializer=&lt;br /&gt;
&lt;br /&gt;
Let us see some code now.&lt;br /&gt;
&lt;br /&gt;
'''Step1:''' Active Model Serializer is available as a gem. Add to the gem file the following line :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gem 'active_model_serializers'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step2:''' Run the following command at the terminal window to install the gem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bundle update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step3:''' This gem provides a serializer generator for the selected Active Model. For example, if employee was your Active Model run :&lt;br /&gt;
rails g serializer employee&lt;br /&gt;
&lt;br /&gt;
This would create a file employee_serializer.rb containing the following code in the newly created app/serializers directory of your project:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class EmployeeSerializer &amp;lt; ActiveModel::Serializer&lt;br /&gt;
  attributes :id&lt;br /&gt;
 &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step 4:''' Add your custom attributes and any other customizations to this file. For example: We are adding a url attribute to get details of this employee although the Employee Active Model does not have any such attribute. We add it because the client might be interested in it. That is the power of Active Model Serializer. It does not require us to define another property on the Employee Active Model to return its Url.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class EmployeeSerializer &amp;lt; ActiveModel::Serializer&lt;br /&gt;
  attributes :id, :name, :age, :url &lt;br /&gt;
 &lt;br /&gt;
  def url&lt;br /&gt;
    employee_url(object)&lt;br /&gt;
  end  &lt;br /&gt;
 &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step 5:''' Thats it! Whenever an Employee is requested the custom EmployeeSerializer does the task of serializing the employee to json and will now include a url key value pair to view the Employee.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#[http://railscasts.com/episodes/409-active-model-serializers Railcast on Active Model Serializers]&lt;br /&gt;
#[https://github.com/rails-api/active_model_serializers Active Model Serializer module on github]&lt;br /&gt;
#[http://asciicasts.com/episodes/409-active-model-serializers Active Model Serializer Asciicast]&lt;br /&gt;
#[https://www.youtube.com/watch?v=G6ipU6AiEXY Active Model Serializer Video Tutorial]&lt;br /&gt;
#[http://yehudakatz.com/2010/01/10/activemodel-make-any-ruby-object-feel-like-activerecord/ Active Model]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/Serialization Serialization wiki]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/JSON JSON wiki]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/RubyGems RubyGems wiki]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_24_sa&amp;diff=87786</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 24 sa</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_24_sa&amp;diff=87786"/>
		<updated>2014-09-20T03:33:34Z</updated>

		<summary type="html">&lt;p&gt;Aakher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Active Model Serializers=&lt;br /&gt;
&lt;br /&gt;
[[File:ClientServer.png‎|right|]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails] offers strong features to write API based server applications, which expose data through a well designed API and serve data in various formats as requested. One of these features is '''[http://github.com/rails-api/active_model_serializers Active Model Serializers]''' which help the API designer to have fine control over the response generated by the API to a data request. '''Active Model Serializers''' help programmers do this very easily and cleanly without breaking separation of concerns in a rails application. They promote [http://en.wikipedia.org/wiki/Convention_over_configuration convention over configuration], thus reducing code bloat and increasing code scalibility and readability.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Let us familiarize ourselves with a few terms before getting to the usage of '''Active Model Serializers'''.&lt;br /&gt;
;Active Model&lt;br /&gt;
:'''[http://railscasts.com/episodes/219-active-model Active Model]''' is closely related to the widely used concept of '''[http://en.wikibooks.org/wiki/Ruby_on_Rails/ActiveRecord Active Record]''' in the Rails world. '''Active Record''' is an object that maps directly to the data in our database. An '''Active Record''' takes care of fetching and saving data to the database. For example, in an employee records application an Employee Active Record helps to persist a newly created/edited Employee. So how is an '''Active Model''' different? It may not always be the case that we want our Employee model to be backed by a database. But we might want to have all the functionality that an Active Record provides (for example, validations on the Employee model to check if name is present on the Employee Active Record before persisting it or checking if the active record got dirtied because of an attribute change etc. ). An example of this is, as and when an Employee create form is submitted, we might want to just send an email to the admin with the new employee data once we validate that data. An '''Active Model''' does just this. Infact, the rails developers segregated all the non database functionality out of an '''Active Record''' into an '''Active Model'''.&lt;br /&gt;
&lt;br /&gt;
;Serializer&lt;br /&gt;
:Serializer is a small program that takes an object residing in program memory (for example: could be a C# object in an ASP.NET application, or an ActiveModel object in a Rails application) and converts this information into format that is transferrable over the wire, for example, JSON and XML. This is required because the client may be written in Java and there is no way for it to read an Active Model Ruby Object that exists in memory on the server side.&lt;br /&gt;
&lt;br /&gt;
;API Server Application&lt;br /&gt;
:API Server application is an application which serves data requests coming from a variety of clients (for example: mobile, desktop) in various formats such as JSON, XML. For example, An employee data web service which returns employee age and name in both JSON and XML&lt;br /&gt;
&lt;br /&gt;
=Why Active Model Serializers?=&lt;br /&gt;
&lt;br /&gt;
* '''Custom response attributes''': It is not always the case that an API application serves a request by responding with data as it is stored on the server. The API designer has a task of exposing just the right data to the clients and hence needs fine control over exactly what part of the data on the server is returned in a response. An Active Model Serializer could help return just the Employee age and name to the client as JSON and ignore all the other attributes set on an Employee Model.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Separation of Concerns''': The response data could also be customized in the respond_to method of the rails controller action or for example, by implementing a custom as_json method on the model class. However this breaks the separation of concerns principle as we let something like formatting the response data venture into the controller and model layer. With Active Model Serializers we can keep this functionality segregated from the application.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*'''Maintainability''': Client needs keep changing. Let's say a Client requests some changes to the API response data, only the Active Model Serializer would get affected and there are no side effects on the Controller or the Model itself.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=How Active Model Serializer Works?=&lt;br /&gt;
[[File:Active-Model-Serializer2.png‎|right]]&lt;br /&gt;
&lt;br /&gt;
Active Model Serializers work with the help of two components namely '''Serializer''' and '''Adapter'''. Let's say we wanted to write an Active Model Serializer for customizing an API that returns Employee data as json. We would have to write an '''EmployeeSerializer''' which is configured to use a '''JsonApiAdapter'''. The '''Serializer''' Component would specify which attributes and relationships of Employee to other models would be captured in the response data. For example, it might choose to return the Employee name, age and the data about the employee's family members which are different models. The '''Adapter''' component specifies how to format this selected Employee data in the correct format as required by the client. A JsonApiAdapter would format it as JSON and is the default adapter used by an Active Model Serializer. However you can always supply your own Adapter for the serializer to use.&lt;br /&gt;
&lt;br /&gt;
Assume the Employee data API scenario cited above and Refer to the figure. &lt;br /&gt;
#The Controller receives the request for json data and routes it to a specific action method&lt;br /&gt;
#The action method has a respond_to method that returns Employee model as JSON. When Rails encounters this line, it looks for an EmployeeSerializer in the project specifically in a file employee_serializer to get the exact data to be put into the response.&lt;br /&gt;
#The EmployeeSerializer is by default configured to use a JsonApiAdapter and formats the specified attributes and relationships in the JSON format. This forms the final customized response.&lt;br /&gt;
&lt;br /&gt;
As you can see, instead of returning the default JSON conversion of the Employee model from the respond_to method, that Rails does automatically for us, we were able to customize our API response data through the use of Active Model Serializers in a non-intrusive way maintaining separation from the controller and the model layers.&lt;br /&gt;
&lt;br /&gt;
=Using Active Model Serializer=&lt;br /&gt;
&lt;br /&gt;
Let us see some code now.&lt;br /&gt;
&lt;br /&gt;
'''Step1''': Active Model Serializer is available as a gem. Add to the gem file the following line :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gem 'active_model_serializers'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step2''': Run the following command at the terminal window to install the gem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bundle update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step3''': This gem provides a serializer generator for the selected Active Model. For example, if employee was your Active Model run :&lt;br /&gt;
rails g serializer employee&lt;br /&gt;
&lt;br /&gt;
This would create a file employee_serializer.rb containing the following code in the newly created app/serializers directory of your project:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class EmployeeSerializer &amp;lt; ActiveModel::Serializer&lt;br /&gt;
  attributes :id&lt;br /&gt;
 &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step 4''': Add your custom attributes and any other customizations to this file. For example: We are adding a url attribute to get details of this employee although the Employee Active Model does not have any such attribute. We add it because the client might be interested in it. That is the power of Active Model Serializer. It does not require us to define another property on the Employee Active Model to return its Url.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class EmployeeSerializer &amp;lt; ActiveModel::Serializer&lt;br /&gt;
  attributes :id, :name, :age, :url &lt;br /&gt;
 &lt;br /&gt;
  def url&lt;br /&gt;
    employee_url(object)&lt;br /&gt;
  end  &lt;br /&gt;
 &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step 5''': Thats it! Whenever an Employee is requested the custom EmployeeSerializer does the task of serializing the employee to json and will now include a url key value pair to view the Employee.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#[http://railscasts.com/episodes/409-active-model-serializers Railcast on Active Model Serializers]&lt;br /&gt;
#[https://github.com/rails-api/active_model_serializers Active Model Serializer module on github]&lt;br /&gt;
#[http://asciicasts.com/episodes/409-active-model-serializers Active Model Serializer Asciicast]&lt;br /&gt;
#[https://www.youtube.com/watch?v=G6ipU6AiEXY Active Model Serializer Video Tutorial]&lt;br /&gt;
#[http://yehudakatz.com/2010/01/10/activemodel-make-any-ruby-object-feel-like-activerecord/ Active Model]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/Serialization Serialization wiki]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/JSON JSON wiki]&lt;br /&gt;
#[http://en.wikipedia.org/wiki/RubyGems RubyGems wiki]&lt;/div&gt;</summary>
		<author><name>Aakher</name></author>
	</entry>
</feed>