From 9553fcef98df9e6a4a91015ce5d1c9d89befbfe9 Mon Sep 17 00:00:00 2001 From: Biplov Bhandari Date: Wed, 21 Feb 2018 13:32:49 +0545 Subject: [PATCH] Bulletin Form for OCD PH --- modules/s3cfg.py | 21 +++++ modules/s3db/cap.py | 54 ++++++++--- .../templates/SAMBRO/Demo/organisation.csv | 1 - modules/templates/SAMBRO/PH/config.py | 4 + modules/templates/SAMBRO/PH/controllers.py | 77 +++++++++++++++ .../SAMBRO/PH/views/bulletin_ocd.html | 89 ++++++++++++++++++ static/img/ndrrmc_logo.jpg | Bin 0 -> 36561 bytes 7 files changed, 233 insertions(+), 13 deletions(-) create mode 100644 modules/templates/SAMBRO/PH/views/bulletin_ocd.html create mode 100644 static/img/ndrrmc_logo.jpg diff --git a/modules/s3cfg.py b/modules/s3cfg.py index 6661c269e8..1ef5c76c13 100644 --- a/modules/s3cfg.py +++ b/modules/s3cfg.py @@ -2683,6 +2683,27 @@ def get_cap_area_default(self): return self.cap.get("area_default", ["geocode", "polygon"]) + def get_cap_bulletin_method(self): + """ + Name of the method that is used to generate the bulletin for this deployment + """ + + return self.cap.get("bulletin_method") + + def get_cap_bulletin_officer(self): + """ + Name of the officer who is responsible to issue the bulletin + """ + + return self.cap.get("bulletin_officer", "Name of Officer") + + def get_cap_bulltin_officer_designation(self): + """ + Designation of the officer who is responsible to issue the bulletin + """ + + return self.cap.get("bulletin_officer_designation", "Designation") + # ------------------------------------------------------------------------- # CMS: Content Management System # diff --git a/modules/s3db/cap.py b/modules/s3db/cap.py index 9da7e6e313..942cd927ee 100644 --- a/modules/s3db/cap.py +++ b/modules/s3db/cap.py @@ -3358,6 +3358,7 @@ def cap_rheader(r): db = current.db s3db = current.s3db tablename = r.tablename + settings = current.deployment_settings if tablename == "cap_alert": alert_id = record.id itable = s3db.cap_info @@ -3411,6 +3412,7 @@ def cap_rheader(r): else: action_btn = None msg_type_buttons = None + bulletin_btns = [] if not row: error = DIV(T("You need to create at least one alert information item in order to be able to broadcast this alert!"), _class="error") @@ -3424,26 +3426,50 @@ def cap_rheader(r): has_permission = current.auth.s3_has_permission # Display 'Submit for Approval', 'Publish Alert' or - # 'Review Alert' based on permission and deployment settings + # 'Review Alert' and Bulletin Form print button based + # on permission and deployment settings if not current.request.get_vars.get("_next") and \ - current.deployment_settings.get_cap_authorisation() and \ + settings.get_cap_authorisation() and \ record.approved_by is None: # Show these buttons only if there is atleast one area segment area_table = s3db.cap_area area_row = db(area_table.alert_id == alert_id).\ select(area_table.id, limitby=(0, 1)).first() - if area_row and has_permission("update", "cap_alert", + if area_row: + # Show these buttons only if there is at least one area segment + cap_bulletin_method = settings.get_cap_bulletin_method() + if cap_bulletin_method: + irows = db(itable.alert_id == alert_id).select(\ + itable.language) + for irow in irows: + language = irow.language + btn = A(T("%s Form" % (itable.language.represent(language))), + _href = URL(c = "default", + f = "index", + args = [cap_bulletin_method], + vars = {"lan": language, + "alert_id": alert_id, + } + ), + _class = "action-btn button tiny", + _target = "_blank", + ) + bulletin_btns.append(btn) + + # Display 'Submit for Approval', 'Publish Alert' or + # 'Review Alert' based on permission and deployment settings + if has_permission("update", "cap_alert", record_id=alert_id): - action_btn = A(T("Submit for Approval"), - _href = URL(f = "notify_approver", - vars = {"cap_alert.id": alert_id, - }, - ), - _class = "action-btn confirm-btn button tiny" - ) - current.response.s3.jquery_ready.append( -'''S3.confirmClick('.confirm-btn','%s')''' % T("Do you want to submit the alert for approval?")) + action_btn = A(T("Submit for Approval"), + _href = URL(f = "notify_approver", + vars = {"cap_alert.id": alert_id, + }, + ), + _class = "action-btn confirm-btn button tiny" + ) + current.response.s3.jquery_ready.append( + '''S3.confirmClick('.confirm-btn','%s')''' % T("Do you want to submit the alert for approval?")) # For Alert Approver if has_permission("approve", "cap_alert"): @@ -3555,6 +3581,10 @@ def cap_rheader(r): if msg_type_buttons is not None: rheader.insert(1, msg_type_buttons) + if len(bulletin_btns): + for bulletin_btn in bulletin_btns: + rheader.insert(1, bulletin_btn) + elif tablename == "cap_area": # Used only for Area Templates tabs = [(T("Area"), None), diff --git a/modules/templates/SAMBRO/Demo/organisation.csv b/modules/templates/SAMBRO/Demo/organisation.csv index ed195f3a11..ce889358cc 100644 --- a/modules/templates/SAMBRO/Demo/organisation.csv +++ b/modules/templates/SAMBRO/Demo/organisation.csv @@ -1,5 +1,4 @@ Organisation,KV:cap_oid,Acronym,Type,Country,Website,Twitter,Comments -Abteilung Wasserhaushal,2.49.0.0.40.1,Acronym,Type,Country,Website,Twitter,Comments Department of Hydrology and Meteorology,2.49.0.0.524.0,DHM,Government,NP,www.dhm.gov.np,, Department of Meteorology and Hydrology,2.49.0.0.428.0,DMH,Government,MM,www.dmh.gov.mm,, National Disaster Management Center,2.49.0.0.462.1,NDMC,Government,MV,ndmc.gov.mv,, diff --git a/modules/templates/SAMBRO/PH/config.py b/modules/templates/SAMBRO/PH/config.py index 1fc2cac902..7d02b7a45b 100644 --- a/modules/templates/SAMBRO/PH/config.py +++ b/modules/templates/SAMBRO/PH/config.py @@ -44,4 +44,8 @@ def config(settings): args = ["SAMBRO", "PH", "img", "pagasa.png"], ) + # Name of Method used to create bulletin + # This may vary according to organization implementing it + settings.cap.bulletin_method = "bulletin_ocd" + # END ========================================================================= diff --git a/modules/templates/SAMBRO/PH/controllers.py b/modules/templates/SAMBRO/PH/controllers.py index 7ad11a0b1e..fb31f64991 100644 --- a/modules/templates/SAMBRO/PH/controllers.py +++ b/modules/templates/SAMBRO/PH/controllers.py @@ -1,9 +1,86 @@ # -*- coding: utf-8 -*- +from gluon import current +from gluon.html import * + +from s3 import S3CustomController, s3_str + from templates.SAMBRO.controllers import index, subscriptions, user_info, alert_hub_cop +# ----------------------------------------------------------------------------- class alert_map(index): pass +# ----------------------------------------------------------------------------- class index(alert_hub_cop): pass + +# ----------------------------------------------------------------------------- +class bulletin_ocd(S3CustomController): + """ Generate the Bulletin for OCD """ + + def __call__(self): + """ Main entry point, configuration """ + + r = current.request + + alert_id = r.vars.get("alert_id") + if not alert_id: + return "alert id is required to generate report" + + language = r.vars.get("lan", "en-US") + current.response.view = "../modules/templates/SAMBRO/PH/views/bulletin_ocd.html" + s3db = current.s3db + table = s3db.cap_alert + itable = s3db.cap_info + atable = s3db.cap_area + ptable = s3db.cap_info_parameter + query = (table.id == alert_id) & \ + (table.deleted != True) & \ + (itable.alert_id == table.id) & \ + (itable.deleted != True) & \ + (itable.language == language) & \ + (atable.alert_id == table.id) & \ + (atable.deleted != True) & \ + (ptable.info_id == itable.id) & \ + (ptable.deleted != True) + + arows = current.db(query).select(table.status, + table.source, + itable.description, + itable.instruction, + itable.headline, + itable.contact, + ptable.name, + ptable.value) + parameter_table = TABLE(_style="width: 90%; margin:0 auto") + if len(arows): + settings = current.deployment_settings + parameters = {} + row_info = arows.first().cap_info + row_alert = arows.first().cap_alert + for arow in arows: + name = arow.cap_info_parameter.name + if "sahana:bulletin" in name: + parameter_table_row = TR(TD(B(name.split("sahana:bulletin:", 1)[1]), + _style="border: 1px solid grey", + ), + TD(arow.cap_info_parameter.value, + _style="border: 1px solid grey", + )) + parameter_table.append(parameter_table_row) + + output = dict(instruction=s3_str(row_info.instruction), + description=s3_str(row_info.description), + headline=s3_str(row_info.headline), + status=s3_str(row_alert.status), + time=s3_str(r.utcnow.strftime("%d %B %Y, %I:%M %p")), + source=s3_str(row_alert.source), + parameter_table=parameter_table, + contact=s3_str(row_info.contact), + releasing_officer=settings.get_cap_bulletin_officer(), + releasing_officer_designation=settings.get_cap_bulltin_officer_designation(), + ) + + return output + return "No parameter with sahana:bulletin:" diff --git a/modules/templates/SAMBRO/PH/views/bulletin_ocd.html b/modules/templates/SAMBRO/PH/views/bulletin_ocd.html new file mode 100644 index 0000000000..fa0ebebb3a --- /dev/null +++ b/modules/templates/SAMBRO/PH/views/bulletin_ocd.html @@ -0,0 +1,89 @@ + + + + + + Office of Civil Defense Bulletin + + + + + +
+
+
+ +
+
+ Republic of the Philippines +
+
+

National Disaster Risk Reduction and Management Council

+
+
+
+
National Disaster Risk Reduction and Management Center, Camp Aguinaldo, Quezon City, Philippines
+
+
+
+
+
+

NDRRMC {{=XML(status)}}

+
+
+ {{=XML(headline)}} +
+
+ Releasing Officer:


+ {{=XML(releasing_officer)}}
{{=XML(releasing_officer_designation)}} +
+
+
+
+
+
+ DATE: {{=XML(time)}} +
+
+
+ Source: {{=XML(source)}} +
+
+
+
+ I. Situational Overview

+
+ {{=XML(parameter_table)}} +
+ Description: {{=XML(description)}} +
+
+
+
+ II. Action/s Taken +
+ {{=XML(instruction)}} +
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/static/img/ndrrmc_logo.jpg b/static/img/ndrrmc_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..79cecf2f0dd2b3a948e07807138f738db8649b88 GIT binary patch literal 36561 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