From 5356f65ca36c71352d0daaf16b12f91a22261f65 Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Tue, 10 Jul 2018 16:20:48 +0100 Subject: [PATCH] Much UI work, significant improvement. --- project.clj | 11 +- resources/sql/queries.auto.sql | 17 +- resources/sql/youyesyet.postgres.sql | 29 +- .../templates/auto/application-index.html | 9 +- .../auto/form-addresses-Address.html | 56 +- .../auto/form-authorities-Authority.html | 2 +- .../auto/form-canvassers-Canvasser.html | 194 +- .../auto/form-districts-District.html | 2 +- .../auto/form-dwellings-Dwelling.html | 56 +- .../templates/auto/form-electors-Elector.html | 64 +- .../templates/auto/form-events-Events.html | 36 +- .../form-followupactions-Followupaction.html | 102 +- .../form-followupmethods-Followupmethod.html | 2 +- ...form-followuprequests-Followuprequest.html | 133 +- .../templates/auto/form-genders-Gender.html | 2 +- .../auto/form-intentions-Intention.html | 125 +- .../templates/auto/form-issues-Issue.html | 24 +- .../templates/auto/form-options-Option.html | 2 +- resources/templates/auto/form-roles-Role.html | 31 +- resources/templates/auto/form-teams-Team.html | 178 +- .../templates/auto/form-visits-Visit.html | 113 +- .../auto/list-addresses-Addresses.html | 2 +- .../auto/list-authorities-Authorities.html | 2 +- .../auto/list-canvassers-Canvassers.html | 31 +- .../auto/list-districts-Districts.html | 2 +- .../auto/list-dwellings-Dwellings.html | 2 +- .../auto/list-electors-Electors.html | 2 +- .../templates/auto/list-events-Events.html | 2 +- .../list-followupactions-Followupactions.html | 11 +- .../list-followupmethods-Followupmethods.html | 2 +- ...ist-followuprequests-Followuprequests.html | 4 +- .../templates/auto/list-genders-Genders.html | 2 +- .../auto/list-intentions-Intentions.html | 4 +- .../templates/auto/list-issues-Issues.html | 2 +- .../templates/auto/list-options-Options.html | 2 +- .../templates/auto/list-roles-Roles.html | 2 +- .../templates/auto/list-teams-Teams.html | 2 +- .../templates/auto/list-visits-Visits.html | 2 +- resources/templates/base.html | 2 +- src/clj/youyesyet/layout.clj | 5 +- src/clj/youyesyet/routes/auto.clj | 1703 +++++++++++------ src/clj/youyesyet/routes/auto_json.clj | 2 +- youyesyet.adl.xml | 56 +- youyesyet.canonical.adl.xml | 46 +- 44 files changed, 1865 insertions(+), 1213 deletions(-) diff --git a/project.clj b/project.clj index f253f46..581b5d9 100644 --- a/project.clj +++ b/project.clj @@ -53,22 +53,15 @@ :main ^:skip-aot youyesyet.core :migratus {:store :database :db ~(get (System/getenv) "DATABASE_URL")} - :plugins [[lein-bower "0.5.1"] - [lein-cljsbuild "1.1.4"] + :plugins [[lein-cljsbuild "1.1.4"] [lein-codox "0.10.3"] [lein-cprop "1.0.1"] [lein-less "1.7.5"] [lein-npm "0.6.2"] [lein-uberwar "0.2.0"] [migratus-lein "0.4.2"] - [org.clojars.punkisdead/lein-cucumber "1.0.5"] - ] + [org.clojars.punkisdead/lein-cucumber "1.0.5"]] - :bower-dependencies [[leaflet "0.7.3"] - [jquery "3.3.1"] - [datatables.net "1.10.19"] - [datatables.net-dt "1.10.19"]] - :bower {:directory "resources/public/js/lib"} :cucumber-feature-paths ["test/clj/features"] diff --git a/resources/sql/queries.auto.sql b/resources/sql/queries.auto.sql index 2009302..fa45e72 100644 --- a/resources/sql/queries.auto.sql +++ b/resources/sql/queries.auto.sql @@ -1,7 +1,7 @@ ------------------------------------------------------------------------ -- File queries.sql -- --- autogenerated by adl.to-hugsql-queries at 2018-07-09T20:55:32.719Z +-- autogenerated by adl.to-hugsql-queries at 2018-07-10T15:25:22.228Z -- -- See [Application Description -- Language](https://github.com/simon-brooke/adl). @@ -343,9 +343,6 @@ ORDER BY dwellings.address_id, SELECT * FROM electors WHERE electors.id = :id ORDER BY electors.name, - electors.phone, - electors.email, - electors.gender, electors.id -- :name get-event :? :1 @@ -561,9 +558,6 @@ ORDER BY lv_dwellings.address_id, -- :doc lists all existing elector records SELECT DISTINCT * FROM lv_electors ORDER BY lv_electors.name, - lv_electors.phone, - lv_electors.email, - lv_electors.gender, lv_electors.id --~ (if (:offset params) "OFFSET :offset ") --~ (if (:limit params) "LIMIT :limit" "LIMIT 100") @@ -575,9 +569,6 @@ FROM lv_electors, electors WHERE lv_electors.id = electors.id AND electors.dwelling_id = :id ORDER BY lv_electors.name, - lv_electors.phone, - lv_electors.email, - lv_electors.gender, lv_electors.id -- :name list-electors-by-gender :? :* @@ -587,9 +578,6 @@ FROM lv_electors, electors WHERE lv_electors.id = electors.id AND electors.gender = :id ORDER BY lv_electors.name, - lv_electors.phone, - lv_electors.email, - lv_electors.gender, lv_electors.id -- :name list-events :? :* @@ -916,9 +904,6 @@ WHERE false --~ (if (:gender params) "OR gender LIKE '%:gender%'") --~ (if (:id params) "OR id = :id") ORDER BY lv_electors.name, - lv_electors.phone, - lv_electors.email, - lv_electors.gender, lv_electors.id --~ (if (:offset params) "OFFSET :offset ") --~ (if (:limit params) "LIMIT :limit" "LIMIT 100") diff --git a/resources/sql/youyesyet.postgres.sql b/resources/sql/youyesyet.postgres.sql index f092acb..da16031 100644 --- a/resources/sql/youyesyet.postgres.sql +++ b/resources/sql/youyesyet.postgres.sql @@ -5,7 +5,7 @@ -- -- auto-generated by [Application Description Language framework] -- --- (https://github.com/simon-brooke/adl) at 20180709T205533.789Z +-- (https://github.com/simon-brooke/adl) at 20180710T152523.324Z -- -- A web-app intended to be used by canvassers -- campaigning for a 'Yes' vote in the second independence @@ -281,6 +281,9 @@ GRANT DELETE ON followupactions TO admin ; ------------------------------------------------------------------------ -- primary table followupmethods for entity followupmethods +-- +-- Methods which may be used to follow up a followup request. Reference +-- data. ------------------------------------------------------------------------ CREATE TABLE followupmethods ( @@ -318,8 +321,8 @@ GRANT SELECT ON followuprequests TO admin, teamorganisers ; GRANT INSERT ON followuprequests TO admin, canvassers ; -GRANT UPDATE ON followuprequests TO admin ; -GRANT DELETE ON followuprequests TO admin ; + + ------------------------------------------------------------------------ -- primary table genders for entity genders @@ -360,8 +363,8 @@ GRANT SELECT ON intentions TO admin, canvassers ; GRANT INSERT ON intentions TO admin, canvassers ; -GRANT UPDATE ON intentions TO admin ; -GRANT DELETE ON intentions TO admin ; + + ------------------------------------------------------------------------ -- primary table issues for entity issues @@ -530,7 +533,7 @@ SELECT canvassers.username, canvassers.fullname, canvassers.avatar, canvassers.bio, - electors.name ||', '|| electors.phone ||', '|| electors.email ||', '|| genders.id AS elector_id_expanded, + electors.name AS elector_id_expanded, canvassers.elector_id, addresses.address ||', '|| addresses.postcode AS address_id_expanded, canvassers.address_id, @@ -540,7 +543,7 @@ SELECT canvassers.username, canvassers.authority_id, canvassers.authorised, canvassers.id -FROM canvassers, authorities, addresses, genders, electors +FROM canvassers, authorities, addresses, electors WHERE canvassers.elector_id = electors.id AND canvassers.address_id = addresses.id AND canvassers.authority_id = authorities.id @@ -633,7 +636,7 @@ GRANT SELECT ON lv_events TO admin, -- lists, et cetera ------------------------------------------------------------------------ CREATE VIEW lv_followupactions AS -SELECT electors.name ||', '|| electors.phone ||', '|| electors.email ||', '|| genders.id ||', '|| addresses.address ||', '|| addresses.postcode ||', '|| visits.date ||', '|| issues.id AS request_id_expanded, +SELECT electors.name ||', '|| addresses.address ||', '|| addresses.postcode ||', '|| visits.date ||', '|| issues.id AS request_id_expanded, followupactions.request_id, canvassers.username ||', '|| canvassers.fullname ||', '|| addresses.address ||', '|| addresses.postcode ||', '|| canvassers.phone ||', '|| canvassers.email AS actor_expanded, followupactions.actor, @@ -641,7 +644,7 @@ SELECT electors.name ||', '|| electors.phone ||', '|| electors.email ||', '|| ge followupactions.notes, followupactions.closed, followupactions.id -FROM followuprequests, visits, canvassers, addresses, followupactions, genders, issues, electors +FROM followuprequests, visits, canvassers, addresses, followupactions, issues, electors WHERE followupactions.request_id = followuprequests.id AND followupactions.actor = canvassers.id ; @@ -671,7 +674,7 @@ GRANT SELECT ON lv_followupmethods TO admin, -- lists, et cetera ------------------------------------------------------------------------ CREATE VIEW lv_followuprequests AS -SELECT electors.name ||', '|| electors.phone ||', '|| electors.email ||', '|| genders.id AS elector_id_expanded, +SELECT electors.name AS elector_id_expanded, followuprequests.elector_id, addresses.address ||', '|| addresses.postcode ||', '|| visits.date AS visit_id_expanded, followuprequests.visit_id, @@ -680,7 +683,7 @@ SELECT electors.name ||', '|| electors.phone ||', '|| electors.email ||', '|| ge followupmethods.id AS method_id_expanded, followuprequests.method_id, followuprequests.id -FROM followuprequests, visits, addresses, genders, issues, electors, followupmethods +FROM followuprequests, visits, addresses, issues, electors, followupmethods WHERE followuprequests.elector_id = electors.id AND followuprequests.visit_id = visits.id AND followuprequests.issue_id = issues.id @@ -714,13 +717,13 @@ GRANT SELECT ON lv_genders TO admin, CREATE VIEW lv_intentions AS SELECT addresses.address ||', '|| addresses.postcode ||', '|| visits.date AS visit_id_expanded, intentions.visit_id, - electors.name ||', '|| electors.phone ||', '|| electors.email ||', '|| genders.id AS elector_id_expanded, + electors.name AS elector_id_expanded, intentions.elector_id, options.id AS option_id_expanded, intentions.option_id, intentions.locality, intentions.id -FROM visits, intentions, addresses, genders, electors, options +FROM visits, intentions, addresses, electors, options WHERE intentions.visit_id = visits.id AND intentions.elector_id = electors.id AND intentions.option_id = options.id diff --git a/resources/templates/auto/application-index.html b/resources/templates/auto/application-index.html index 4f7b672..cc4b7c6 100644 --- a/resources/templates/auto/application-index.html +++ b/resources/templates/auto/application-index.html @@ -1,5 +1,5 @@ {% extends "base.html" %} - @@ -142,6 +142,9 @@ Followupmethod {% endifmemberof %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
+

+Methods which may be used to follow up a followup request. Reference data. +

{% endifmemberof %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -246,14 +249,14 @@ Team
{% endifmemberof %} -{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers %} +{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers admin %}
Visit
{% endifmemberof %} -{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers %} +{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers admin %}

All visits made by canvassers to dwellings in diff --git a/resources/templates/auto/form-addresses-Address.html b/resources/templates/auto/form-addresses-Address.html index 34336c2..47c154a 100644 --- a/resources/templates/auto/form-addresses-Address.html +++ b/resources/templates/auto/form-addresses-Address.html @@ -1,10 +1,12 @@ {% extends "base.html" %} - {% block extra-head %} + {% script "/js/lib/node_modules/selectize/dist/js/standalone/selectize.min.js" %} + {% style "/js/lib/node_modules/selectize/dist/css/selectize.css" %} {% endblock %} {% block content %}

@@ -119,13 +121,9 @@ District_id {% if {{record.district_id}} %} {% ifmemberof admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -139,13 +137,9 @@ You are not permitted to view district_id of addresses {% endifmemberof %} {% else %} {% ifmemberof admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -249,20 +243,34 @@ To delete this addresses record {% endblock %} {% block extra-tail %} diff --git a/resources/templates/auto/form-authorities-Authority.html b/resources/templates/auto/form-authorities-Authority.html index 5e537e5..ae00757 100644 --- a/resources/templates/auto/form-authorities-Authority.html +++ b/resources/templates/auto/form-authorities-Authority.html @@ -1,5 +1,5 @@ {% extends "base.html" %} - diff --git a/resources/templates/auto/form-canvassers-Canvasser.html b/resources/templates/auto/form-canvassers-Canvasser.html index e8d85ff..67341bb 100644 --- a/resources/templates/auto/form-canvassers-Canvasser.html +++ b/resources/templates/auto/form-canvassers-Canvasser.html @@ -1,11 +1,14 @@ {% extends "base.html" %} - {% block extra-head %} -{% script "js/lib/node_modules/simplemde/dist/simplemde.min.js" %} - {% style "js/lib/node_modules/simplemde/dist/simplemde.min.css" %} + + {% script "js/lib/node_modules/simplemde/dist/simplemde.min.js" %} + {% style "js/lib/node_modules/simplemde/dist/simplemde.min.css" %} + {% script "/js/lib/node_modules/selectize/dist/js/standalone/selectize.min.js" %} + {% style "/js/lib/node_modules/selectize/dist/css/selectize.css" %} {% endblock %} {% block content %}
@@ -81,18 +84,86 @@ You are not permitted to view fullname of canvassers {% endif %}

+ +{% if {{record.avatar}} %} +{% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %} + +{% else %} +{% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %} + +{{record.avatar}} + +{% else %} + +You are not permitted to view avatar of canvassers + +{% endifmemberof %} +{% endifmemberof %} +{% else %} +{% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %} + +{% else %} +{% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %} + +{{record.avatar}} + +{% else %} + +You are not permitted to view avatar of canvassers + +{% endifmemberof %} +{% endifmemberof %} +{% endif %} +

+

+ +{% if {{record.bio}} %} +{% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %} + +{% else %} +{% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %} + +{{record.bio}} + +{% else %} + +You are not permitted to view bio of canvassers + +{% endifmemberof %} +{% endifmemberof %} +{% else %} +{% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %} + +{% else %} +{% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %} + +{{record.bio}} + +{% else %} + +You are not permitted to view bio of canvassers + +{% endifmemberof %} +{% endifmemberof %} +{% endif %} +

+

{% if {{record.elector_id}} %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -106,13 +177,9 @@ You are not permitted to view elector_id of canvassers {% endifmemberof %} {% else %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -132,13 +199,9 @@ Address_id {% if {{record.address_id}} %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -152,13 +215,9 @@ You are not permitted to view address_id of canvassers {% endifmemberof %} {% else %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -246,13 +305,9 @@ Authority_id {% if {{record.authority_id}} %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -266,13 +321,9 @@ You are not permitted to view authority_id of canvassers {% endifmemberof %} {% else %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -326,11 +377,9 @@ Roles {% if {{record.roles}} %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %} - - {% else %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -344,11 +393,9 @@ You are not permitted to view roles of canvassers {% endifmemberof %} {% else %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %} - - {% else %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -384,20 +431,63 @@ To delete this canvassers record {% endblock %} {% block extra-tail %} diff --git a/resources/templates/auto/form-electors-Elector.html b/resources/templates/auto/form-electors-Elector.html index 33a6f7d..2a566f1 100644 --- a/resources/templates/auto/form-electors-Elector.html +++ b/resources/templates/auto/form-electors-Elector.html @@ -1,10 +1,12 @@ {% extends "base.html" %} - {% block extra-head %} + {% script "/js/lib/node_modules/selectize/dist/js/standalone/selectize.min.js" %} + {% style "/js/lib/node_modules/selectize/dist/css/selectize.css" %} {% endblock %} {% block content %}

@@ -51,13 +53,9 @@ Dwelling_id {% if {{record.dwelling_id}} %} {% ifmemberof admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -71,13 +69,9 @@ You are not permitted to view dwelling_id of electors {% endifmemberof %} {% else %} {% ifmemberof admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -165,11 +159,9 @@ Gender {% if {{record.gender}} %} {% ifmemberof admin %} - - {% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -183,11 +175,9 @@ You are not permitted to view gender of electors {% endifmemberof %} {% else %} {% ifmemberof admin %} - - {% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -223,20 +213,34 @@ To delete this electors record {% endblock %} {% block extra-tail %} diff --git a/resources/templates/auto/form-events-Events.html b/resources/templates/auto/form-events-Events.html index 186b51d..8238f02 100644 --- a/resources/templates/auto/form-events-Events.html +++ b/resources/templates/auto/form-events-Events.html @@ -1,11 +1,14 @@ {% extends "base.html" %} - {% block extra-head %} -{% script "js/lib/node_modules/simplemde/dist/simplemde.min.js" %} - {% style "js/lib/node_modules/simplemde/dist/simplemde.min.css" %} + + {% script "js/lib/node_modules/simplemde/dist/simplemde.min.js" %} + {% style "js/lib/node_modules/simplemde/dist/simplemde.min.css" %} + {% script "/js/lib/node_modules/selectize/dist/js/standalone/selectize.min.js" %} + {% style "/js/lib/node_modules/selectize/dist/css/selectize.css" %} {% endblock %} {% block content %}
@@ -52,13 +55,9 @@ Teams {% if {{record.teams}} %} {% ifmemberof teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -72,13 +71,9 @@ You are not permitted to view teams of events {% endifmemberof %} {% else %} {% ifmemberof teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %} @@ -254,21 +249,6 @@ To delete this events record {% endblock %} {% block extra-tail %} diff --git a/resources/templates/auto/form-genders-Gender.html b/resources/templates/auto/form-genders-Gender.html index 54b3900..0a0398b 100644 --- a/resources/templates/auto/form-genders-Gender.html +++ b/resources/templates/auto/form-genders-Gender.html @@ -1,5 +1,5 @@ {% extends "base.html" %} - diff --git a/resources/templates/auto/form-intentions-Intention.html b/resources/templates/auto/form-intentions-Intention.html index a9a93e8..421e196 100644 --- a/resources/templates/auto/form-intentions-Intention.html +++ b/resources/templates/auto/form-intentions-Intention.html @@ -1,10 +1,12 @@ {% extends "base.html" %} - {% block extra-head %} + {% script "/js/lib/node_modules/selectize/dist/js/standalone/selectize.min.js" %} + {% style "/js/lib/node_modules/selectize/dist/css/selectize.css" %} {% endblock %} {% block content %}
@@ -15,14 +17,10 @@ See [Application Description Language](https://github.com/simon-brooke/adl).--> Visit_id {% if {{record.visit_id}} %} -{% ifmemberof admin %} - - -
+{% ifmemberof %} -
{% else %} {% ifmemberof canvassers analysts admin %} @@ -35,14 +33,10 @@ You are not permitted to view visit_id of intentions {% endifmemberof %} {% endifmemberof %} {% else %} -{% ifmemberof admin %} - - -
+{% ifmemberof %} -
{% else %} {% ifmemberof canvassers analysts admin %} @@ -61,14 +55,10 @@ You are not permitted to view visit_id of intentions Elector_id {% if {{record.elector_id}} %} -{% ifmemberof admin %} - - -
+{% ifmemberof %} -
{% else %} {% ifmemberof canvassers analysts admin %} @@ -81,14 +71,10 @@ You are not permitted to view elector_id of intentions {% endifmemberof %} {% endifmemberof %} {% else %} -{% ifmemberof admin %} - - -
+{% ifmemberof %} -
{% else %} {% ifmemberof canvassers analysts admin %} @@ -107,12 +93,10 @@ You are not permitted to view elector_id of intentions Option_id {% if {{record.option_id}} %} -{% ifmemberof admin %} - +{% ifmemberof %} - {% else %} {% ifmemberof canvassers analysts admin %} @@ -125,12 +109,10 @@ You are not permitted to view option_id of intentions {% endifmemberof %} {% endifmemberof %} {% else %} -{% ifmemberof admin %} - +{% ifmemberof %} - {% else %} {% ifmemberof canvassers analysts admin %} @@ -149,7 +131,7 @@ You are not permitted to view option_id of intentions Locality {% if {{record.locality}} %} -{% ifmemberof admin %} +{% ifmemberof %} {% else %} {% ifmemberof canvassers analysts admin %} @@ -163,7 +145,7 @@ You are not permitted to view locality of intentions {% endifmemberof %} {% endifmemberof %} {% else %} -{% ifmemberof admin %} +{% ifmemberof %} {% else %} {% ifmemberof canvassers analysts admin %} @@ -178,7 +160,7 @@ You are not permitted to view locality of intentions {% endifmemberof %} {% endif %}

-{% ifmemberof admin %} +{% ifmemberof %}

{% endifmemberof %} -{% ifmemberof admin %} +{% ifmemberof %}

@@ -173,21 +176,6 @@ To delete this issues record {% endblock %} {% block extra-tail %} {% endblock %} diff --git a/resources/templates/auto/form-teams-Team.html b/resources/templates/auto/form-teams-Team.html index 60f17df..0e61dac 100644 --- a/resources/templates/auto/form-teams-Team.html +++ b/resources/templates/auto/form-teams-Team.html @@ -1,10 +1,12 @@ {% extends "base.html" %} - {% block extra-head %} + {% script "/js/lib/node_modules/selectize/dist/js/standalone/selectize.min.js" %} + {% style "/js/lib/node_modules/selectize/dist/css/selectize.css" %} {% endblock %} {% block content %}
@@ -51,13 +53,9 @@ District_id {% if {{record.district_id}} %} {% ifmemberof teamorganisers admin teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin teamorganisers admin %} @@ -71,13 +69,9 @@ You are not permitted to view district_id of teams {% endifmemberof %} {% else %} {% ifmemberof teamorganisers admin teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin teamorganisers admin %} @@ -131,13 +125,9 @@ Members {% if {{record.members}} %} {% ifmemberof teamorganisers admin teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin teamorganisers admin %} @@ -151,13 +141,9 @@ You are not permitted to view members of teams {% endifmemberof %} {% else %} {% ifmemberof teamorganisers admin teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin teamorganisers admin %} @@ -177,13 +163,9 @@ Organisers {% if {{record.organisers}} %} {% ifmemberof teamorganisers admin teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin teamorganisers admin %} @@ -197,13 +179,9 @@ You are not permitted to view organisers of teams {% endifmemberof %} {% else %} {% ifmemberof teamorganisers admin teamorganisers admin %} - - -
-
{% else %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin teamorganisers admin %} @@ -268,25 +246,137 @@ To delete this teams record

{% endifmemberof %} +
+

+Organisers +

+ + + + + + + + + + + +{% for record in organisers %} + + + + + + + +{% endfor %} + +
+Id + +Fullname + +Email + +Phone + +  +
+{{ record.id }} + +{{ record.fullname }} + +{{ record.email }} + +{{ record.phone }} + + +View + +
+
+
+

+Members +

+ + + + + + + + + + + +{% for record in members %} + + + + + + + +{% endfor %} + +
+Id + +Fullname + +Email + +Phone + +  +
+{{ record.id }} + +{{ record.fullname }} + +{{ record.email }} + +{{ record.phone }} + + +View + +
+
{% endblock %} {% block extra-tail %} diff --git a/resources/templates/auto/form-visits-Visit.html b/resources/templates/auto/form-visits-Visit.html index 6264d3e..054c475 100644 --- a/resources/templates/auto/form-visits-Visit.html +++ b/resources/templates/auto/form-visits-Visit.html @@ -1,10 +1,12 @@ {% extends "base.html" %} - {% block extra-head %} + {% script "/js/lib/node_modules/selectize/dist/js/standalone/selectize.min.js" %} + {% style "/js/lib/node_modules/selectize/dist/css/selectize.css" %} {% endblock %} {% block content %}
@@ -18,7 +20,7 @@ Id {% ifmemberof admin %} {% else %} -{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers %} +{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers admin %} {{record.id}} @@ -32,7 +34,7 @@ You are not permitted to view id of visits {% ifmemberof admin %} {% else %} -{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers %} +{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers admin %} {{record.id}} @@ -50,15 +52,11 @@ Address_id {% if {{record.address_id}} %} {% ifmemberof admin %} - - -
-
{% else %} -{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers %} +{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers admin %} {{record.address_id}} @@ -70,15 +68,11 @@ You are not permitted to view address_id of visits {% endifmemberof %} {% else %} {% ifmemberof admin %} - - -
-
{% else %} -{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers %} +{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers admin %} {{record.address_id}} @@ -96,15 +90,11 @@ Canvasser_id {% if {{record.canvasser_id}} %} {% ifmemberof admin %} - - -
-
{% else %} -{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers %} +{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers admin %} {{record.canvasser_id}} @@ -116,15 +106,11 @@ You are not permitted to view canvasser_id of visits {% endifmemberof %} {% else %} {% ifmemberof admin %} - - -
-
{% else %} -{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers %} +{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers admin %} {{record.canvasser_id}} @@ -144,7 +130,7 @@ Date {% ifmemberof admin %} {% else %} -{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers %} +{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers admin %} {{record.date}} @@ -158,7 +144,7 @@ You are not permitted to view date of visits {% ifmemberof admin %} {% else %} -{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers %} +{% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers admin %} {{record.date}} @@ -192,20 +178,63 @@ To delete this visits record {% endblock %} {% block extra-tail %} diff --git a/resources/templates/auto/list-addresses-Addresses.html b/resources/templates/auto/list-addresses-Addresses.html index 178130e..89859d6 100644 --- a/resources/templates/auto/list-addresses-Addresses.html +++ b/resources/templates/auto/list-addresses-Addresses.html @@ -1,5 +1,5 @@ {% extends "base.html" %} - diff --git a/resources/templates/auto/list-authorities-Authorities.html b/resources/templates/auto/list-authorities-Authorities.html index 4e44398..b270314 100644 --- a/resources/templates/auto/list-authorities-Authorities.html +++ b/resources/templates/auto/list-authorities-Authorities.html @@ -1,5 +1,5 @@ {% extends "base.html" %} - diff --git a/resources/templates/auto/list-canvassers-Canvassers.html b/resources/templates/auto/list-canvassers-Canvassers.html index c248fce..cd8b39d 100644 --- a/resources/templates/auto/list-canvassers-Canvassers.html +++ b/resources/templates/auto/list-canvassers-Canvassers.html @@ -1,5 +1,5 @@ {% extends "base.html" %} - @@ -54,18 +54,9 @@ Username Fullname -Elector_id - - Address_id -Phone - - -Email - - Authority_id @@ -86,18 +77,9 @@ Authorised - - - - - - - - - @@ -121,22 +103,11 @@ Authorised {{ record.fullname }} - -{{ record.elector_id_expanded }} - - - {{ record.address_id_expanded }} -{{ record.phone }} - - -{{ record.email }} - - {{ record.authority_id_expanded }} diff --git a/resources/templates/auto/list-districts-Districts.html b/resources/templates/auto/list-districts-Districts.html index f52b318..45f039e 100644 --- a/resources/templates/auto/list-districts-Districts.html +++ b/resources/templates/auto/list-districts-Districts.html @@ -1,5 +1,5 @@ {% extends "base.html" %} - diff --git a/resources/templates/auto/list-dwellings-Dwellings.html b/resources/templates/auto/list-dwellings-Dwellings.html index 7b96078..5874acc 100644 --- a/resources/templates/auto/list-dwellings-Dwellings.html +++ b/resources/templates/auto/list-dwellings-Dwellings.html @@ -1,5 +1,5 @@ {% extends "base.html" %} - diff --git a/resources/templates/auto/list-electors-Electors.html b/resources/templates/auto/list-electors-Electors.html index 23066a3..4d3db15 100644 --- a/resources/templates/auto/list-electors-Electors.html +++ b/resources/templates/auto/list-electors-Electors.html @@ -1,5 +1,5 @@ {% extends "base.html" %} - diff --git a/resources/templates/auto/list-events-Events.html b/resources/templates/auto/list-events-Events.html index 3f75ff3..0b864e8 100644 --- a/resources/templates/auto/list-events-Events.html +++ b/resources/templates/auto/list-events-Events.html @@ -1,5 +1,5 @@ {% extends "base.html" %} - diff --git a/resources/templates/auto/list-followupactions-Followupactions.html b/resources/templates/auto/list-followupactions-Followupactions.html index e80590e..2c20687 100644 --- a/resources/templates/auto/list-followupactions-Followupactions.html +++ b/resources/templates/auto/list-followupactions-Followupactions.html @@ -1,5 +1,5 @@ {% extends "base.html" %} - @@ -57,9 +57,6 @@ Actor Date -Notes - - Closed @@ -80,9 +77,6 @@ Closed - - - @@ -110,9 +104,6 @@ Closed {{ record.date }} -{{ record.notes }} - - {{ record.closed }} diff --git a/resources/templates/auto/list-followupmethods-Followupmethods.html b/resources/templates/auto/list-followupmethods-Followupmethods.html index 802c3ce..c0bf1bf 100644 --- a/resources/templates/auto/list-followupmethods-Followupmethods.html +++ b/resources/templates/auto/list-followupmethods-Followupmethods.html @@ -1,5 +1,5 @@ {% extends "base.html" %} - diff --git a/resources/templates/auto/list-followuprequests-Followuprequests.html b/resources/templates/auto/list-followuprequests-Followuprequests.html index 80dc44a..dacaf20 100644 --- a/resources/templates/auto/list-followuprequests-Followuprequests.html +++ b/resources/templates/auto/list-followuprequests-Followuprequests.html @@ -1,5 +1,5 @@ {% extends "base.html" %} - @@ -26,7 +26,7 @@ Previous Next
-{% ifmemberof admin %} +{% ifmemberof %} -{% ifmemberof admin %} +{% ifmemberof %} diff --git a/src/clj/youyesyet/layout.clj b/src/clj/youyesyet/layout.clj index 11ded3a..a1acac4 100644 --- a/src/clj/youyesyet/layout.clj +++ b/src/clj/youyesyet/layout.clj @@ -63,9 +63,12 @@ (defn render "renders the HTML `template` located relative to resources/templates in the context of this session and with these parameters." + ;; TODO: I'm passing `session` through into render. The default luminus + ;; setup doesn't do this, and Dmitri is an awful lot better at this stuff + ;; than me so there's almost certainly a reason it doesn't. [template session & [params]] (let [user (:user session)] - (log/debug (str "layout/render: template: '" template "'; user: '" user "'.")) + (log/debug (str "layout/render: template: '" template "'; user: '" (:username user))) (content-type (ok (parser/render-file diff --git a/src/clj/youyesyet/routes/auto.clj b/src/clj/youyesyet/routes/auto.clj index a7617e6..a36d14b 100644 --- a/src/clj/youyesyet/routes/auto.clj +++ b/src/clj/youyesyet/routes/auto.clj @@ -1,11 +1,12 @@ (ns youyesyet.routes.auto - "User interface routes for Youyesyet auto-generated by [Application Description Language framework](https://github.com/simon-brooke/adl) at 20180709T205534.030Z" + "User interface routes for Youyesyet auto-generated by [Application Description Language framework](https://github.com/simon-brooke/adl) at 20180710T152523.603Z" (:require [adl-support.core :as support] [clojure.java.io :as io] [clojure.set :refer [subset?]] [clojure.tools.logging :as log] + [clojure.walk :refer [keywordize-keys]] [compojure.core :refer [defroutes GET POST]] [hugsql.core :as hugsql] [noir.response :as nresponse] @@ -25,865 +26,1329 @@ (defn list-addresses-Addresses - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-addresses-Addresses.html") - (:session r) + (:session request) (merge - {:title "Addresses", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-addresses db/*db* p) - (db/list-addresses db/*db* {}))})))) + {:title "Addresses", :params params} + (let + [records + (if + (some + #{:locality :address :phone :postcode :longitude :district_id + :id :latitude} + (keys params)) + (support/do-or-log-error + (db/search-strings-addresses db/*db* params) + :message + "Error while searching address records" + :error-return + {:warnings ["Error while searching address records"]}) + (support/do-or-log-error + (db/list-addresses db/*db* {}) + :message + "Error while fetching address records" + :error-return + {:warnings ["Error while fetching address records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-addresses-Address - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-addresses-Address.html") - (:session r) + (:session request) (merge - {:title "Address", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do - (db/update-address! db/*db* p) - {:message "Updated record"}) - (do (db/create-address! db/*db* p) {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-address db/*db* p))}) - (list {:districts (db/list-districts db/*db*)})))))) + {:title "Address", :params params} + (let + [record + (support/do-or-log-error + (db/get-address db/*db* params) + :message + (str "Error while fetching address record " params) + :error-return + {:warnings + [(str "Error while fetching address record " params)]})] + {:error (:warnings record), + :record (dissoc record :warnings), + :district_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-district db/*db* {:id (:district_id record)}) + :message + "Error while fetching district record {:id (:district_id record)}") + (support/do-or-log-error + (db/list-districts db/*db*) + :message + "Error while fetching district list"))))}))))) (defn list-authorities-Authorities - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-authorities-Authorities.html") - (:session r) + (:session request) (merge - {:title "Authorities", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-authorities db/*db* p) - (db/list-authorities db/*db* {}))})))) + {:title "Authorities", :params params} + (let + [records + (if + (some + #{:access-token-uri :request-token-uri :authorize-uri :id + :consumer-secret :consumer-key} + (keys params)) + (support/do-or-log-error + (db/search-strings-authorities db/*db* params) + :message + "Error while searching authority records" + :error-return + {:warnings ["Error while searching authority records"]}) + (support/do-or-log-error + (db/list-authorities db/*db* {}) + :message + "Error while fetching authority records" + :error-return + {:warnings ["Error while fetching authority records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-authorities-Authority - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-authorities-Authority.html") - (:session r) + (:session request) (merge - {:title "Authority", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do - (db/update-authority! db/*db* p) - {:message "Updated record"}) - (do - (db/create-authority! db/*db* p) - {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-authority db/*db* p))}) - (list)))))) + {:title "Authority", :params params} + (let + [record + (support/do-or-log-error + (db/get-authority db/*db* params) + :message + (str "Error while fetching authority record " params) + :error-return + {:warnings + [(str "Error while fetching authority record " params)]})] + {:error (:warnings record), :record (dissoc record :warnings)}))))) (defn list-canvassers-Canvassers - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-canvassers-Canvassers.html") - (:session r) + (:session request) (merge - {:title "Canvassers", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-canvassers db/*db* p) - (db/list-canvassers db/*db* {}))})))) + {:title "Canvassers", :params params} + (let + [records + (if + (some + #{:email :phone :roles :username :fullname :bio :elector_id + :expertise :id :avatar :address_id :authority_id :authorised} + (keys params)) + (support/do-or-log-error + (db/search-strings-canvassers db/*db* params) + :message + "Error while searching canvasser records" + :error-return + {:warnings ["Error while searching canvasser records"]}) + (support/do-or-log-error + (db/list-canvassers db/*db* {}) + :message + "Error while fetching canvasser records" + :error-return + {:warnings ["Error while fetching canvasser records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-canvassers-Canvasser - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-canvassers-Canvasser.html") - (:session r) + (:session request) (merge - {:title "Canvasser", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do - (db/update-canvasser! db/*db* p) - {:message "Updated record"}) - (do - (db/create-canvasser! db/*db* p) - {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-canvasser db/*db* p))}) - (list - {:electors (db/list-electors db/*db*)} - {:addresses (db/list-addresses db/*db*)} - {:authorities (db/list-authorities db/*db*)} - {:roles (db/list-roles db/*db*)} - {:issues (db/list-issues db/*db*)})))))) + {:title "Canvasser", :params params} + (let + [record + (support/do-or-log-error + (db/get-canvasser db/*db* params) + :message + (str "Error while fetching canvasser record " params) + :error-return + {:warnings + [(str "Error while fetching canvasser record " params)]})] + {:error (:warnings record), + :record (dissoc record :warnings), + :elector_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-elector db/*db* {:id (:elector_id record)}) + :message + "Error while fetching elector record {:id (:elector_id record)}") + (support/do-or-log-error + (db/list-electors db/*db*) + :message + "Error while fetching elector list")))), + :address_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-address db/*db* {:id (:address_id record)}) + :message + "Error while fetching address record {:id (:address_id record)}") + (support/do-or-log-error + (db/list-addresses db/*db*) + :message + "Error while fetching address list")))), + :authority_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-authority db/*db* {:id (:authority_id record)}) + :message + "Error while fetching authority record {:id (:authority_id record)}") + (support/do-or-log-error + (db/list-authorities db/*db*) + :message + "Error while fetching authority list")))), + :roles + (flatten + (remove + nil? + (list + nil + (support/do-or-log-error + (db/list-roles db/*db*) + :message + "Error while fetching role list")))), + :expertise + (flatten + (remove + nil? + (list + nil + (support/do-or-log-error + (db/list-issues db/*db*) + :message + "Error while fetching issue list"))))}))))) (defn list-districts-Districts - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-districts-Districts.html") - (:session r) + (:session request) (merge - {:title "Districts", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-districts db/*db* p) - (db/list-districts db/*db* {}))})))) + {:title "Districts", :params params} + (let + [records + (if + (some #{:name :id} (keys params)) + (support/do-or-log-error + (db/search-strings-districts db/*db* params) + :message + "Error while searching district records" + :error-return + {:warnings ["Error while searching district records"]}) + (support/do-or-log-error + (db/list-districts db/*db* {}) + :message + "Error while fetching district records" + :error-return + {:warnings ["Error while fetching district records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-districts-District - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-districts-District.html") - (:session r) + (:session request) (merge - {:title "District", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do - (db/update-district! db/*db* p) - {:message "Updated record"}) - (do - (db/create-district! db/*db* p) - {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-district db/*db* p))}) - (list)))))) + {:title "District", :params params} + (let + [record + (support/do-or-log-error + (db/get-district db/*db* params) + :message + (str "Error while fetching district record " params) + :error-return + {:warnings + [(str "Error while fetching district record " params)]})] + {:error (:warnings record), :record (dissoc record :warnings)}))))) (defn list-dwellings-Dwellings - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-dwellings-Dwellings.html") - (:session r) + (:session request) (merge - {:title "Dwellings", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-dwellings db/*db* p) - (db/list-dwellings db/*db* {}))})))) + {:title "Dwellings", :params params} + (let + [records + (if + (some #{:id :address_id :sub-address} (keys params)) + (support/do-or-log-error + (db/search-strings-dwellings db/*db* params) + :message + "Error while searching dwelling records" + :error-return + {:warnings ["Error while searching dwelling records"]}) + (support/do-or-log-error + (db/list-dwellings db/*db* {}) + :message + "Error while fetching dwelling records" + :error-return + {:warnings ["Error while fetching dwelling records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-dwellings-Dwelling - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-dwellings-Dwelling.html") - (:session r) + (:session request) (merge - {:title "Dwelling", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do - (db/update-dwelling! db/*db* p) - {:message "Updated record"}) - (do - (db/create-dwelling! db/*db* p) - {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-dwelling db/*db* p))}) - (list {:addresses (db/list-addresses db/*db*)})))))) + {:title "Dwelling", :params params} + (let + [record + (support/do-or-log-error + (db/get-dwelling db/*db* params) + :message + (str "Error while fetching dwelling record " params) + :error-return + {:warnings + [(str "Error while fetching dwelling record " params)]})] + {:error (:warnings record), + :record (dissoc record :warnings), + :address_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-address db/*db* {:id (:address_id record)}) + :message + "Error while fetching address record {:id (:address_id record)}") + (support/do-or-log-error + (db/list-addresses db/*db*) + :message + "Error while fetching address list"))))}))))) (defn list-electors-Electors - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-electors-Electors.html") - (:session r) + (:session request) (merge - {:title "Electors", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-electors db/*db* p) - (db/list-electors db/*db* {}))})))) + {:title "Electors", :params params} + (let + [records + (if + (some + #{:email :phone :name :dwelling_id :id :gender} + (keys params)) + (support/do-or-log-error + (db/search-strings-electors db/*db* params) + :message + "Error while searching elector records" + :error-return + {:warnings ["Error while searching elector records"]}) + (support/do-or-log-error + (db/list-electors db/*db* {}) + :message + "Error while fetching elector records" + :error-return + {:warnings ["Error while fetching elector records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-electors-Elector - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-electors-Elector.html") - (:session r) + (:session request) (merge - {:title "Elector", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do - (db/update-elector! db/*db* p) - {:message "Updated record"}) - (do (db/create-elector! db/*db* p) {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-elector db/*db* p))}) - (list - {:dwellings (db/list-dwellings db/*db*)} - {:genders (db/list-genders db/*db*)})))))) + {:title "Elector", :params params} + (let + [record + (support/do-or-log-error + (db/get-elector db/*db* params) + :message + (str "Error while fetching elector record " params) + :error-return + {:warnings + [(str "Error while fetching elector record " params)]})] + {:error (:warnings record), + :record (dissoc record :warnings), + :dwelling_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-dwelling db/*db* {:id (:dwelling_id record)}) + :message + "Error while fetching dwelling record {:id (:dwelling_id record)}") + (support/do-or-log-error + (db/list-dwellings db/*db*) + :message + "Error while fetching dwelling list")))), + :gender + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-gender db/*db* {:id (:gender record)}) + :message + "Error while fetching gender record {:id (:gender record)}") + (support/do-or-log-error + (db/list-genders db/*db*) + :message + "Error while fetching gender list"))))}))))) (defn form-events-Events - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-events-Events.html") - (:session r) + (:session request) (merge - {:title "Events", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do (db/update-event! db/*db* p) {:message "Updated record"}) - (do (db/create-event! db/*db* p) {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-event db/*db* p))}) - (list {:teams (db/list-teams db/*db*)})))))) + {:title "Events", :params params} + (let + [record + (support/do-or-log-error + (db/get-event db/*db* params) + :message + (str "Error while fetching event record " params) + :error-return + {:warnings + [(str "Error while fetching event record " params)]})] + {:error (:warnings record), + :record (dissoc record :warnings), + :teams + (flatten + (remove + nil? + (list + nil + (support/do-or-log-error + (db/list-teams db/*db*) + :message + "Error while fetching team list"))))}))))) (defn list-events-Events - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-events-Events.html") - (:session r) + (:session request) (merge - {:title "Events", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-events db/*db* p) - (db/list-events db/*db* {}))})))) + {:title "Events", :params params} + (let + [records + (if + (some + #{:date :name :time :teams :cancelled :decription :id} + (keys params)) + (support/do-or-log-error + (db/search-strings-events db/*db* params) + :message + "Error while searching event records" + :error-return + {:warnings ["Error while searching event records"]}) + (support/do-or-log-error + (db/list-events db/*db* {}) + :message + "Error while fetching event records" + :error-return + {:warnings ["Error while fetching event records"]}))] + (if (:warnings records) records {:records records})))))) (defn list-followupactions-Followupactions - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-followupactions-Followupactions.html") - (:session r) + (:session request) (merge - {:title "Followupactions", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-followupactions db/*db* p) - (db/list-followupactions db/*db* {}))})))) + {:title "Followupactions", :params params} + (let + [records + (if + (some + #{:closed :date :id :notes :request_id :actor} + (keys params)) + (support/do-or-log-error + (db/search-strings-followupactions db/*db* params) + :message + "Error while searching followupaction records" + :error-return + {:warnings ["Error while searching followupaction records"]}) + (support/do-or-log-error + (db/list-followupactions db/*db* {}) + :message + "Error while fetching followupaction records" + :error-return + {:warnings ["Error while fetching followupaction records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-followupactions-Followupaction - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-followupactions-Followupaction.html") - (:session r) + (:session request) (merge - {:title "Followupaction", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do - (db/update-followupaction! db/*db* p) - {:message "Updated record"}) - (do - (db/create-followupaction! db/*db* p) - {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-followupaction db/*db* p))}) - (list - {:followuprequests (db/list-followuprequests db/*db*)} - {:canvassers (db/list-canvassers db/*db*)})))))) + {:title "Followupaction", :params params} + (let + [record + (support/do-or-log-error + (db/get-followupaction db/*db* params) + :message + (str "Error while fetching followupaction record " params) + :error-return + {:warnings + [(str "Error while fetching followupaction record " params)]})] + {:error (:warnings record), + :record (dissoc record :warnings), + :request_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-followuprequest db/*db* {:id (:request_id record)}) + :message + "Error while fetching followuprequest record {:id (:request_id record)}") + (support/do-or-log-error + (db/list-followuprequests db/*db*) + :message + "Error while fetching followuprequest list")))), + :actor + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-canvasser db/*db* {:id (:actor record)}) + :message + "Error while fetching canvasser record {:id (:actor record)}") + (support/do-or-log-error + (db/list-canvassers db/*db*) + :message + "Error while fetching canvasser list"))))}))))) (defn list-followupmethods-Followupmethods - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-followupmethods-Followupmethods.html") - (:session r) + (:session request) (merge - {:title "Followupmethods", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-followupmethods db/*db* p) - (db/list-followupmethods db/*db* {}))})))) + {:title "Followupmethods", :params params} + (let + [records + (if + (some #{:id} (keys params)) + (support/do-or-log-error + (db/search-strings-followupmethods db/*db* params) + :message + "Error while searching followupmethod records" + :error-return + {:warnings ["Error while searching followupmethod records"]}) + (support/do-or-log-error + (db/list-followupmethods db/*db* {}) + :message + "Error while fetching followupmethod records" + :error-return + {:warnings ["Error while fetching followupmethod records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-followupmethods-Followupmethod - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-followupmethods-Followupmethod.html") - (:session r) + (:session request) (merge - {:title "Followupmethod", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do - (db/update-followupmethod! db/*db* p) - {:message "Updated record"}) - (do - (db/create-followupmethod! db/*db* p) - {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-followupmethod db/*db* p))}) - (list)))))) + {:title "Followupmethod", :params params} + (let + [record + (support/do-or-log-error + (db/get-followupmethod db/*db* params) + :message + (str "Error while fetching followupmethod record " params) + :error-return + {:warnings + [(str "Error while fetching followupmethod record " params)]})] + {:error (:warnings record), :record (dissoc record :warnings)}))))) (defn list-followuprequests-Followuprequests - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-followuprequests-Followuprequests.html") - (:session r) + (:session request) (merge - {:title "Followuprequests", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-followuprequests db/*db* p) - (db/list-followuprequests db/*db* {}))})))) + {:title "Followuprequests", :params params} + (let + [records + (if + (some + #{:issue_id :visit_id :elector_id :id :method_id} + (keys params)) + (support/do-or-log-error + (db/search-strings-followuprequests db/*db* params) + :message + "Error while searching followuprequest records" + :error-return + {:warnings ["Error while searching followuprequest records"]}) + (support/do-or-log-error + (db/list-followuprequests db/*db* {}) + :message + "Error while fetching followuprequest records" + :error-return + {:warnings ["Error while fetching followuprequest records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-followuprequests-Followuprequest - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-followuprequests-Followuprequest.html") - (:session r) + (:session request) (merge - {:title "Followuprequest", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do - (db/update-followuprequest! db/*db* p) - {:message "Updated record"}) - (do - (db/create-followuprequest! db/*db* p) - {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-followuprequest db/*db* p))}) - (list - {:electors (db/list-electors db/*db*)} - {:visits (db/list-visits db/*db*)} - {:issues (db/list-issues db/*db*)} - {:followupmethods (db/list-followupmethods db/*db*)})))))) + {:title "Followuprequest", :params params} + (let + [record + (support/do-or-log-error + (db/get-followuprequest db/*db* params) + :message + (str "Error while fetching followuprequest record " params) + :error-return + {:warnings + [(str + "Error while fetching followuprequest record " + params)]})] + {:error (:warnings record), + :record (dissoc record :warnings), + :elector_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-elector db/*db* {:id (:elector_id record)}) + :message + "Error while fetching elector record {:id (:elector_id record)}") + (support/do-or-log-error + (db/list-electors db/*db*) + :message + "Error while fetching elector list")))), + :visit_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-visit db/*db* {:id (:visit_id record)}) + :message + "Error while fetching visit record {:id (:visit_id record)}") + (support/do-or-log-error + (db/list-visits db/*db*) + :message + "Error while fetching visit list")))), + :issue_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-issue db/*db* {:id (:issue_id record)}) + :message + "Error while fetching issue record {:id (:issue_id record)}") + (support/do-or-log-error + (db/list-issues db/*db*) + :message + "Error while fetching issue list")))), + :method_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-followupmethod db/*db* {:id (:method_id record)}) + :message + "Error while fetching followupmethod record {:id (:method_id record)}") + (support/do-or-log-error + (db/list-followupmethods db/*db*) + :message + "Error while fetching followupmethod list"))))}))))) (defn list-genders-Genders - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-genders-Genders.html") - (:session r) + (:session request) (merge - {:title "Genders", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-genders db/*db* p) - (db/list-genders db/*db* {}))})))) + {:title "Genders", :params params} + (let + [records + (if + (some #{:id} (keys params)) + (support/do-or-log-error + (db/search-strings-genders db/*db* params) + :message + "Error while searching gender records" + :error-return + {:warnings ["Error while searching gender records"]}) + (support/do-or-log-error + (db/list-genders db/*db* {}) + :message + "Error while fetching gender records" + :error-return + {:warnings ["Error while fetching gender records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-genders-Gender - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-genders-Gender.html") - (:session r) + (:session request) (merge - {:title "Gender", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do (db/update-gender! db/*db* p) {:message "Updated record"}) - (do (db/create-gender! db/*db* p) {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-gender db/*db* p))}) - (list)))))) + {:title "Gender", :params params} + (let + [record + (support/do-or-log-error + (db/get-gender db/*db* params) + :message + (str "Error while fetching gender record " params) + :error-return + {:warnings + [(str "Error while fetching gender record " params)]})] + {:error (:warnings record), :record (dissoc record :warnings)}))))) (defn list-intentions-Intentions - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-intentions-Intentions.html") - (:session r) + (:session request) (merge - {:title "Intentions", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-intentions db/*db* p) - (db/list-intentions db/*db* {}))})))) + {:title "Intentions", :params params} + (let + [records + (if + (some + #{:locality :option_id :visit_id :elector_id :id} + (keys params)) + (support/do-or-log-error + (db/search-strings-intentions db/*db* params) + :message + "Error while searching intention records" + :error-return + {:warnings ["Error while searching intention records"]}) + (support/do-or-log-error + (db/list-intentions db/*db* {}) + :message + "Error while fetching intention records" + :error-return + {:warnings ["Error while fetching intention records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-intentions-Intention - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-intentions-Intention.html") - (:session r) + (:session request) (merge - {:title "Intention", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do - (db/update-intention! db/*db* p) - {:message "Updated record"}) - (do - (db/create-intention! db/*db* p) - {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-intention db/*db* p))}) - (list - {:visits (db/list-visits db/*db*)} - {:electors (db/list-electors db/*db*)} - {:options (db/list-options db/*db*)})))))) + {:title "Intention", :params params} + (let + [record + (support/do-or-log-error + (db/get-intention db/*db* params) + :message + (str "Error while fetching intention record " params) + :error-return + {:warnings + [(str "Error while fetching intention record " params)]})] + {:error (:warnings record), + :record (dissoc record :warnings), + :visit_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-visit db/*db* {:id (:visit_id record)}) + :message + "Error while fetching visit record {:id (:visit_id record)}") + (support/do-or-log-error + (db/list-visits db/*db*) + :message + "Error while fetching visit list")))), + :elector_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-elector db/*db* {:id (:elector_id record)}) + :message + "Error while fetching elector record {:id (:elector_id record)}") + (support/do-or-log-error + (db/list-electors db/*db*) + :message + "Error while fetching elector list")))), + :option_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-option db/*db* {:id (:option_id record)}) + :message + "Error while fetching option record {:id (:option_id record)}") + (support/do-or-log-error + (db/list-options db/*db*) + :message + "Error while fetching option list"))))}))))) (defn list-issues-Issues - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-issues-Issues.html") - (:session r) + (:session request) (merge - {:title "Issues", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-issues db/*db* p) - (db/list-issues db/*db* {}))})))) + {:title "Issues", :params params} + (let + [records + (if + (some #{:experts :brief :id :current :url} (keys params)) + (support/do-or-log-error + (db/search-strings-issues db/*db* params) + :message + "Error while searching issue records" + :error-return + {:warnings ["Error while searching issue records"]}) + (support/do-or-log-error + (db/list-issues db/*db* {}) + :message + "Error while fetching issue records" + :error-return + {:warnings ["Error while fetching issue records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-issues-Issue - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-issues-Issue.html") - (:session r) + (:session request) (merge - {:title "Issue", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do (db/update-issue! db/*db* p) {:message "Updated record"}) - (do (db/create-issue! db/*db* p) {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-issue db/*db* p))}) - (list {:canvassers (db/list-canvassers db/*db*)})))))) + {:title "Issue", :params params} + (let + [record + (support/do-or-log-error + (db/get-issue db/*db* params) + :message + (str "Error while fetching issue record " params) + :error-return + {:warnings + [(str "Error while fetching issue record " params)]})] + {:error (:warnings record), + :record (dissoc record :warnings), + :experts + (flatten + (remove + nil? + (list + nil + (support/do-or-log-error + (db/list-canvassers db/*db*) + :message + "Error while fetching canvasser list"))))}))))) (defn list-options-Options - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-options-Options.html") - (:session r) + (:session request) (merge - {:title "Options", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-options db/*db* p) - (db/list-options db/*db* {}))})))) + {:title "Options", :params params} + (let + [records + (if + (some #{:id} (keys params)) + (support/do-or-log-error + (db/search-strings-options db/*db* params) + :message + "Error while searching option records" + :error-return + {:warnings ["Error while searching option records"]}) + (support/do-or-log-error + (db/list-options db/*db* {}) + :message + "Error while fetching option records" + :error-return + {:warnings ["Error while fetching option records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-options-Option - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-options-Option.html") - (:session r) + (:session request) (merge - {:title "Option", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do (db/update-option! db/*db* p) {:message "Updated record"}) - (do (db/create-option! db/*db* p) {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-option db/*db* p))}) - (list)))))) + {:title "Option", :params params} + (let + [record + (support/do-or-log-error + (db/get-option db/*db* params) + :message + (str "Error while fetching option record " params) + :error-return + {:warnings + [(str "Error while fetching option record " params)]})] + {:error (:warnings record), :record (dissoc record :warnings)}))))) (defn list-roles-Roles - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-roles-Roles.html") - (:session r) + (:session request) (merge - {:title "Roles", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-roles db/*db* p) - (db/list-roles db/*db* {}))})))) + {:title "Roles", :params params} + (let + [records + (if + (some #{:name :id :members} (keys params)) + (support/do-or-log-error + (db/search-strings-roles db/*db* params) + :message + "Error while searching role records" + :error-return + {:warnings ["Error while searching role records"]}) + (support/do-or-log-error + (db/list-roles db/*db* {}) + :message + "Error while fetching role records" + :error-return + {:warnings ["Error while fetching role records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-roles-Role - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-roles-Role.html") - (:session r) + (:session request) (merge - {:title "Role", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do (db/update-role! db/*db* p) {:message "Updated record"}) - (do (db/create-role! db/*db* p) {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-role db/*db* p))}) - (list {:canvassers (db/list-canvassers db/*db*)})))))) + {:title "Role", :params params} + (let + [record + (support/do-or-log-error + (db/get-role db/*db* params) + :message + (str "Error while fetching role record " params) + :error-return + {:warnings [(str "Error while fetching role record " params)]})] + {:error (:warnings record), + :record (dissoc record :warnings), + :members + (flatten + (remove + nil? + (list + nil + (support/do-or-log-error + (db/list-canvassers db/*db*) + :message + "Error while fetching canvasser list"))))}))))) (defn list-teams-Teams - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-teams-Teams.html") - (:session r) + (:session request) (merge - {:title "Teams", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-teams db/*db* p) - (db/list-teams db/*db* {}))})))) + {:title "Teams", :params params} + (let + [records + (if + (some + #{:name :organisers :longitude :district_id :id :latitude + :members} + (keys params)) + (support/do-or-log-error + (db/search-strings-teams db/*db* params) + :message + "Error while searching team records" + :error-return + {:warnings ["Error while searching team records"]}) + (support/do-or-log-error + (db/list-teams db/*db* {}) + :message + "Error while fetching team records" + :error-return + {:warnings ["Error while fetching team records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-teams-Team - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-teams-Team.html") - (:session r) + (:session request) (merge - {:title "Team", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do (db/update-team! db/*db* p) {:message "Updated record"}) - (do (db/create-team! db/*db* p) {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-team db/*db* p))}) - (list - {:districts (db/list-districts db/*db*)} - {:canvassers (db/list-canvassers db/*db*)} - {:canvassers (db/list-canvassers db/*db*)})))))) + {:title "Team", :params params} + (let + [record + (support/do-or-log-error + (db/get-team db/*db* params) + :message + (str "Error while fetching team record " params) + :error-return + {:warnings [(str "Error while fetching team record " params)]})] + {:error (:warnings record), + :record (dissoc record :warnings), + :district_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-district db/*db* {:id (:district_id record)}) + :message + "Error while fetching district record {:id (:district_id record)}") + (support/do-or-log-error + (db/list-districts db/*db*) + :message + "Error while fetching district list")))), + :members + (flatten + (remove + nil? + (list + nil + (support/do-or-log-error + (db/list-canvassers db/*db*) + :message + "Error while fetching canvasser list")))), + :organisers + (flatten + (remove + nil? + (list + nil + (support/do-or-log-error + (db/list-canvassers db/*db*) + :message + "Error while fetching canvasser list"))))}))))) (defn list-visits-Visits - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "list-visits-Visits.html") - (:session r) + (:session request) (merge - {:title "Visits", :params p} - {:records - (if - (not (empty? (remove nil? (vals p)))) - (db/search-strings-visits db/*db* p) - (db/list-visits db/*db* {}))})))) + {:title "Visits", :params params} + (let + [records + (if + (some #{:canvasser_id :date :id :address_id} (keys params)) + (support/do-or-log-error + (db/search-strings-visits db/*db* params) + :message + "Error while searching visit records" + :error-return + {:warnings ["Error while searching visit records"]}) + (support/do-or-log-error + (db/list-visits db/*db* {}) + :message + "Error while fetching visit records" + :error-return + {:warnings ["Error while fetching visit records"]}))] + (if (:warnings records) records {:records records})))))) (defn form-visits-Visit - [r] + [request] (let - [p (support/massage-params (:params r) (:form-params r) #{"id"})] + [params + (support/massage-params + (keywordize-keys (:params request)) + (keywordize-keys (:form-params request)) + #{:id})] (l/render (support/resolve-template "form-visits-Visit.html") - (:session r) + (:session request) (merge - {:title "Visit", :params p} - (reduce - merge - (merge - (cond - (:save-button p) - (try - (if - (some #{"id"} (map name (keys p))) - (do (db/update-visit! db/*db* p) {:message "Updated record"}) - (do (db/create-visit! db/*db* p) {:message "Saved record"})) - (catch - java.lang.Exception - any__2085__auto__ - {:error (.getMessage any__2085__auto__)}))) - {:record - (if - (empty? (remove nil? (vals p))) - [] - (db/get-visit db/*db* p))}) - (list - {:addresses (db/list-addresses db/*db*)} - {:canvassers (db/list-canvassers db/*db*)})))))) + {:title "Visit", :params params} + (let + [record + (support/do-or-log-error + (db/get-visit db/*db* params) + :message + (str "Error while fetching visit record " params) + :error-return + {:warnings + [(str "Error while fetching visit record " params)]})] + {:error (:warnings record), + :record (dissoc record :warnings), + :address_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-address db/*db* {:id (:address_id record)}) + :message + "Error while fetching address record {:id (:address_id record)}") + (support/do-or-log-error + (db/list-addresses db/*db*) + :message + "Error while fetching address list")))), + :canvasser_id + (flatten + (remove + nil? + (list + (support/do-or-log-error + (db/get-canvasser db/*db* {:id (:canvasser_id record)}) + :message + "Error while fetching canvasser record {:id (:canvasser_id record)}") + (support/do-or-log-error + (db/list-canvassers db/*db*) + :message + "Error while fetching canvasser list"))))}))))) (defn raw-resolve-handler diff --git a/src/clj/youyesyet/routes/auto_json.clj b/src/clj/youyesyet/routes/auto_json.clj index a9ca15f..b6a33eb 100644 --- a/src/clj/youyesyet/routes/auto_json.clj +++ b/src/clj/youyesyet/routes/auto_json.clj @@ -1,6 +1,6 @@ (ns youyesyet.routes.auto-json - "JSON routes for youyesyet auto-generated by [Application Description Language framework](https://github.com/simon-brooke/adl) at 20180709T205532.861Z" + "JSON routes for youyesyet auto-generated by [Application Description Language framework](https://github.com/simon-brooke/adl) at 20180710T152522.387Z" (:require [adl-support.core :as support] [clojure.core.memoize :as memo] diff --git a/youyesyet.adl.xml b/youyesyet.adl.xml index a284309..884879d 100644 --- a/youyesyet.adl.xml +++ b/youyesyet.adl.xml @@ -82,16 +82,14 @@ version="0.1.1"> column="dwelling_id" entity="dwellings" farkey="id"> - + - + + entity="genders" farkey="id" default="Unknown"> @@ -170,9 +168,7 @@ version="0.1.1"> - + All dwellings within addresses in the system; a @@ -229,9 +225,7 @@ version="0.1.1"> - + Addresses of all buildings which contain @@ -263,6 +257,7 @@ version="0.1.1"> + Locality indexing; see issue #44. Note that this property should be generated automatically from the @@ -320,6 +315,9 @@ version="0.1.1"> + + + @@ -341,6 +339,7 @@ version="0.1.1"> + @@ -362,7 +361,7 @@ version="0.1.1"> - + @@ -542,7 +541,7 @@ version="0.1.1"> - + @@ -608,12 +607,12 @@ version="0.1.1"> - + - + @@ -658,17 +657,8 @@ version="0.1.1"> - - - - - - - - - - + @@ -687,11 +677,13 @@ version="0.1.1"> + + - + - + @@ -786,7 +778,7 @@ version="0.1.1"> - + @@ -913,7 +905,7 @@ version="0.1.1"> - + @@ -927,7 +919,7 @@ version="0.1.1"> - + @@ -1062,9 +1054,6 @@ version="0.1.1"> - - - @@ -1134,6 +1123,7 @@ version="0.1.1"> --> + Methods which may be used to follow up a followup request. Reference data. diff --git a/youyesyet.canonical.adl.xml b/youyesyet.canonical.adl.xml index 57e96b4..11e2031 100644 --- a/youyesyet.canonical.adl.xml +++ b/youyesyet.canonical.adl.xml @@ -87,13 +87,13 @@ - + - + - + @@ -254,6 +254,7 @@ + Locality indexing; see issue #44. Note that this property should be generated automatically from the @@ -311,6 +312,9 @@ + + + @@ -330,6 +334,7 @@ + @@ -347,7 +352,7 @@ - + @@ -518,7 +523,7 @@ - + @@ -581,10 +586,10 @@ - + - + @@ -625,17 +630,8 @@ - - - - - - - - - - + @@ -654,11 +650,13 @@ + + - + - + @@ -748,7 +746,7 @@ - + + Methods which may be used to follow up a followup request. Reference data.