1
# -*- coding: utf-8 -*-
4
Request Management System - Controllers
7
module = request.controller
9
if module not in deployment_settings.modules:
10
session.error = T("Module disabled!")
11
redirect(URL(r=request, c="default", f="index"))
13
# Options Menu (available in all Functions' Views)
14
response.menu_options = [
15
[T("Home"), False, URL(r=request, f="index")],
16
[T("Request Aid"), False, URL(r=request, f="req", args="create")],
17
[T("View Requests & Pledge Aid"), False, URL(r=request, f="req")],
18
[T("View & Edit Pledges"),False, URL(r=request, f="pledge")]
21
# S3 framework functions
25
module_name = deployment_settings.modules[module].name_nice
27
return dict(module_name=module_name, a=1)
30
def req(): #aid requests
31
"RESTful CRUD controller"
33
resource = request.function # pulls from table of combined aid request feeds (sms, tweets, manual)
35
# Filter out non-actionable SMS requests:
36
# response.s3.filter = (db.rms_req.actionable == True) | (db.rms_req.source_type != 2) # disabled b/c Ushahidi no longer updating actionaable fielde
38
if request.args(0) and request.args(0) == "search_simple":
41
# Uncomment to enable Server-side pagination:
42
response.s3.pagination = True
44
if request.args(0) == "create" or request.args(0) == "update":
45
db.rms_req.pledge_status.readable = False
49
def req_postp(jr, output):
50
if jr.representation in ("html", "popup"):
52
response.s3.actions = [
53
dict(label=str(T("Edit")), _class="action-btn", url=str(URL(r=request, args=["update", "[id]"]))),
54
dict(label=str(T("Pledge")), _class="action-btn", url=str(URL(r=request, args=["[id]", "pledge"])))
56
elif jr.component_name == "pledge":
57
response.s3.actions = [
58
dict(label=str(T("Details")), _class="action-btn", url=str(URL(r=request, args=["pledge", "[id]"])))
61
response.s3.postp = req_postp
63
output = shn_rest_controller(module, resource,
66
rheader=shn_rms_rheader)
67
# call rheader to act as parent header for parent/child forms (layout defined below)
72
def pledge(): #pledges from agencies
73
"RESTful CRUD controller"
75
resource = request.function
77
# Uncomment to enable Server-side pagination:
78
#response.s3.pagination = True #commented due to display problems
83
#pledges = db(db.rms_pledge.status == 3).select() # changes the request status to completed when pledge delivered
84
# this is necessary to close the loop
85
#for pledge in pledges:
86
# req = db(db.rms_req.id == pledge.req_id).update(completion_status = True)
90
def pledge_postp(jr, output):
91
if jr.representation in ("html", "popup"):
93
response.s3.actions = [
94
dict(label=str(READ), _class="action-btn", url=str(URL(r=request, args=["[id]", "read"])))
97
response.s3.postp = pledge_postp
99
response.s3.pagination = True
100
return shn_rest_controller(module, resource, editable = True, listadd=False)
103
def shn_rms_rheader(jr):
105
if jr.representation == "html":
111
aid_request = jr.record
114
location = db(db.gis_location.id == aid_request.location_id).select(limitby=(0, 1)).first()
115
location_represent = shn_gis_location_represent(location.id)
117
location_represent = None
119
rheader = TABLE(TR(TH(T("Message: ")),
120
TD(aid_request.message, _colspan=3)),
121
TR(TH(T("Priority: ")),
122
aid_request.priority,
123
TH(T("Source Type: ")),
124
rms_req_source_type.get(aid_request.source_type, T("unknown"))),
125
TR(TH(T("Time of Request: ")),
126
aid_request.timestamp,
128
aid_request.verified),
129
TR(TH(T("Location: ")),
131
TH(T("Actionable: ")),
132
aid_request.actionable))
139
def sms_complete(): #contributes to RSS feed for closing the loop with Ushahidi
142
return "Sahana Record Number: " + str(record.id)
145
ush_id = db(db.rms_sms_request.id == record.id).select("ush_id")[0]["ush_id"]
146
smsrec = db(db.rms_sms_request.id == record.id).select("smsrec")[0]["smsrec"]
149
"Ushahidi Link: " + A(ush_id, _href=ush_id).xml() + "<br>" + \
150
"SMS Record: " + str(smsrec)
152
rss = { "title" : t , "description" : d }
153
response.s3.filter = (db.rms_req.completion_status == True) & (db.rms_req.source_type == 2)
154
return shn_rest_controller(module, "req", editable=False, listadd=False, rss=rss)
157
def tweet_complete(): #contributes to RSS feed for closing the loop with TtT
160
return "Sahana Record Number: " + str(record.id)
163
ttt_id = db(db.rms_tweet_request.id == record.id).select("ttt_id")[0]["ttt_id"]
164
return "Twitter: " + ttt_id
166
rss = { "title" : t , "description" : d }
167
response.s3.filter = (db.rms_req.completion_status == True) & (db.rms_req.source_type == 3)
168
return shn_rest_controller(module, "req", editable=False, listadd=False, rss = rss)