More detail work. An awful lot is working now.

This commit is contained in:
Simon Brooke 2018-06-29 23:33:23 +01:00
parent 635d1830d3
commit 78365f8c8b
12 changed files with 178 additions and 144 deletions

View file

@ -1,7 +1,7 @@
------------------------------------------------------------------------
-- File queries.sql
--
-- autogenerated by adl.to-hugsql-queries at 2018-06-29T16:36:18.648Z
-- autogenerated by adl.to-hugsql-queries at 2018-06-29T22:21:53.869Z
--
-- See [Application Description
-- Language](https://github.com/simon-brooke/adl).
@ -392,7 +392,7 @@ ORDER BY visits.address_id,
-- :name list-addresses :? :*
-- :doc lists all existing address records
SELECT * FROM lv_addresses
SELECT DISTINCT * FROM lv_addresses
ORDER BY lv_addresses.address,
lv_addresses.postcode,
lv_addresses.id
@ -411,13 +411,13 @@ ORDER BY lv_addresses.address,
-- :name list-authorities :? :*
-- :doc lists all existing authority records
SELECT * FROM lv_authorities
SELECT DISTINCT * FROM lv_authorities
--~ (if (:offset params) "OFFSET :offset ")
--~ (if (:limit params) "LIMIT :limit" "LIMIT 100")
-- :name list-canvassers :? :*
-- :doc lists all existing canvasser records
SELECT * FROM lv_canvassers
SELECT DISTINCT * FROM lv_canvassers
ORDER BY lv_canvassers.username,
lv_canvassers.fullname,
lv_canvassers.email,
@ -471,7 +471,7 @@ ORDER BY canvassers.username,
-- :name list-districts :? :*
-- :doc lists all existing district records
SELECT * FROM lv_districts
SELECT DISTINCT * FROM lv_districts
ORDER BY lv_districts.name,
lv_districts.id
--~ (if (:offset params) "OFFSET :offset ")
@ -479,7 +479,7 @@ ORDER BY lv_districts.name,
-- :name list-dwellings :? :*
-- :doc lists all existing dwelling records
SELECT * FROM lv_dwellings
SELECT DISTINCT * FROM lv_dwellings
ORDER BY lv_dwellings.address_id,
lv_dwellings.sub_address,
lv_dwellings.id
@ -498,7 +498,7 @@ ORDER BY lv_dwellings.address_id,
-- :name list-electors :? :*
-- :doc lists all existing elector records
SELECT * FROM lv_electors
SELECT DISTINCT * FROM lv_electors
ORDER BY lv_electors.name,
lv_electors.phone,
lv_electors.email,
@ -533,7 +533,7 @@ ORDER BY lv_electors.name,
-- :name list-followupactions :? :*
-- :doc lists all existing followupaction records
SELECT * FROM lv_followupactions
SELECT DISTINCT * FROM lv_followupactions
ORDER BY lv_followupactions.date,
lv_followupactions.notes,
lv_followupactions.id
@ -562,13 +562,13 @@ ORDER BY lv_followupactions.date,
-- :name list-followupmethods :? :*
-- :doc lists all existing followupmethod records
SELECT * FROM lv_followupmethods
SELECT DISTINCT * FROM lv_followupmethods
--~ (if (:offset params) "OFFSET :offset ")
--~ (if (:limit params) "LIMIT :limit" "LIMIT 100")
-- :name list-followuprequests :? :*
-- :doc lists all existing followuprequest records
SELECT * FROM lv_followuprequests
SELECT DISTINCT * FROM lv_followuprequests
ORDER BY lv_followuprequests.elector_id,
lv_followuprequests.visit_id,
lv_followuprequests.issue_id,
@ -622,13 +622,13 @@ ORDER BY lv_followuprequests.elector_id,
-- :name list-genders :? :*
-- :doc lists all existing gender records
SELECT * FROM lv_genders
SELECT DISTINCT * FROM lv_genders
--~ (if (:offset params) "OFFSET :offset ")
--~ (if (:limit params) "LIMIT :limit" "LIMIT 100")
-- :name list-intentions :? :*
-- :doc lists all existing intention records
SELECT * FROM lv_intentions
SELECT DISTINCT * FROM lv_intentions
--~ (if (:offset params) "OFFSET :offset ")
--~ (if (:limit params) "LIMIT :limit" "LIMIT 100")
@ -655,19 +655,19 @@ WHERE lv_intentions.Id = intentions.Id
-- :name list-issues :? :*
-- :doc lists all existing issue records
SELECT * FROM lv_issues
SELECT DISTINCT * FROM lv_issues
--~ (if (:offset params) "OFFSET :offset ")
--~ (if (:limit params) "LIMIT :limit" "LIMIT 100")
-- :name list-options :? :*
-- :doc lists all existing option records
SELECT * FROM lv_options
SELECT DISTINCT * FROM lv_options
--~ (if (:offset params) "OFFSET :offset ")
--~ (if (:limit params) "LIMIT :limit" "LIMIT 100")
-- :name list-roles :? :*
-- :doc lists all existing role records
SELECT * FROM lv_roles
SELECT DISTINCT * FROM lv_roles
ORDER BY lv_roles.name,
lv_roles.id
--~ (if (:offset params) "OFFSET :offset ")
@ -684,7 +684,7 @@ ORDER BY roles.name,
-- :name list-teams :? :*
-- :doc lists all existing team records
SELECT * FROM lv_teams
SELECT DISTINCT * FROM lv_teams
ORDER BY lv_teams.name,
lv_teams.id
--~ (if (:offset params) "OFFSET :offset ")
@ -710,7 +710,7 @@ ORDER BY lv_teams.name,
-- :name list-visits :? :*
-- :doc lists all existing visit records
SELECT * FROM lv_visits
SELECT DISTINCT * FROM lv_visits
ORDER BY lv_visits.address_id,
lv_visits.date,
lv_visits.id
@ -739,7 +739,7 @@ ORDER BY lv_visits.address_id,
-- :name search-strings-address :? :1
-- :doc selects existing address records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_addresses
SELECT DISTINCT * FROM lv_addresses
WHERE false
--~ (if (:address params) "OR address LIKE '%:address%'")
--~ (if (:postcode params) "OR postcode LIKE '%:postcode%'")
@ -757,7 +757,7 @@ ORDER BY lv_addresses.address,
-- :name search-strings-authority :? :1
-- :doc selects existing authority records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_authorities
SELECT DISTINCT * FROM lv_authorities
WHERE false
--~ (if (:request-token-uri params) "OR request_token_uri LIKE '%:request-token-uri%'")
--~ (if (:access-token-uri params) "OR access_token_uri LIKE '%:access-token-uri%'")
@ -770,7 +770,7 @@ WHERE false
-- :name search-strings-canvasser :? :1
-- :doc selects existing canvasser records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_canvassers
SELECT DISTINCT * FROM lv_canvassers
WHERE false
--~ (if (:username params) "OR username LIKE '%:username%'")
--~ (if (:fullname params) "OR fullname LIKE '%:fullname%'")
@ -778,7 +778,7 @@ WHERE false
--~ (if (:address_id params) "OR address_id = :address_id")
--~ (if (:phone params) "OR phone LIKE '%:phone%'")
--~ (if (:email params) "OR email LIKE '%:email%'")
--~ (if (:authority_id params) "OR authority_id = :authority_id")
--~ (if (:authority_id params) "OR authority_id LIKE '%:authority_id%'")
--~ (if (:authorised params) "OR authorised = :authorised")
--~ (if (:id params) "OR id = :id")
ORDER BY lv_canvassers.username,
@ -790,7 +790,7 @@ ORDER BY lv_canvassers.username,
-- :name search-strings-district :? :1
-- :doc selects existing district records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_districts
SELECT DISTINCT * FROM lv_districts
WHERE false
--~ (if (:name params) "OR name LIKE '%:name%'")
--~ (if (:id params) "OR id = :id")
@ -801,7 +801,7 @@ ORDER BY lv_districts.name,
-- :name search-strings-dwelling :? :1
-- :doc selects existing dwelling records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_dwellings
SELECT DISTINCT * FROM lv_dwellings
WHERE false
--~ (if (:address_id params) "OR address_id = :address_id")
--~ (if (:sub-address params) "OR sub_address LIKE '%:sub-address%'")
@ -814,13 +814,13 @@ ORDER BY lv_dwellings.address_id,
-- :name search-strings-elector :? :1
-- :doc selects existing elector records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_electors
SELECT DISTINCT * FROM lv_electors
WHERE false
--~ (if (:name params) "OR name LIKE '%:name%'")
--~ (if (:dwelling_id params) "OR dwelling_id = :dwelling_id")
--~ (if (:phone params) "OR phone LIKE '%:phone%'")
--~ (if (:email params) "OR email LIKE '%:email%'")
--~ (if (:gender params) "OR gender = :gender")
--~ (if (:gender params) "OR gender LIKE '%:gender%'")
--~ (if (:id params) "OR id = :id")
ORDER BY lv_electors.name,
lv_electors.phone,
@ -832,7 +832,7 @@ ORDER BY lv_electors.name,
-- :name search-strings-followupaction :? :1
-- :doc selects existing followupaction records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_followupactions
SELECT DISTINCT * FROM lv_followupactions
WHERE false
--~ (if (:request_id params) "OR request_id = :request_id")
--~ (if (:actor params) "OR actor = :actor")
@ -848,7 +848,7 @@ ORDER BY lv_followupactions.date,
-- :name search-strings-followupmethod :? :1
-- :doc selects existing followupmethod records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_followupmethods
SELECT DISTINCT * FROM lv_followupmethods
WHERE false
--~ (if (:id params) "OR id LIKE '%:id%'")
--~ (if (:offset params) "OFFSET :offset ")
@ -856,12 +856,12 @@ WHERE false
-- :name search-strings-followuprequest :? :1
-- :doc selects existing followuprequest records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_followuprequests
SELECT DISTINCT * FROM lv_followuprequests
WHERE false
--~ (if (:elector_id params) "OR elector_id = :elector_id")
--~ (if (:visit_id params) "OR visit_id = :visit_id")
--~ (if (:issue_id params) "OR issue_id = :issue_id")
--~ (if (:method_id params) "OR method_id = :method_id")
--~ (if (:issue_id params) "OR issue_id LIKE '%:issue_id%'")
--~ (if (:method_id params) "OR method_id LIKE '%:method_id%'")
--~ (if (:id params) "OR id = :id")
ORDER BY lv_followuprequests.elector_id,
lv_followuprequests.visit_id,
@ -872,7 +872,7 @@ ORDER BY lv_followuprequests.elector_id,
-- :name search-strings-gender :? :1
-- :doc selects existing gender records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_genders
SELECT DISTINCT * FROM lv_genders
WHERE false
--~ (if (:id params) "OR id LIKE '%:id%'")
--~ (if (:offset params) "OFFSET :offset ")
@ -880,11 +880,11 @@ WHERE false
-- :name search-strings-intention :? :1
-- :doc selects existing intention records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_intentions
SELECT DISTINCT * FROM lv_intentions
WHERE false
--~ (if (:visit_id params) "OR visit_id = :visit_id")
--~ (if (:elector_id params) "OR elector_id = :elector_id")
--~ (if (:option_id params) "OR option_id = :option_id")
--~ (if (:option_id params) "OR option_id LIKE '%:option_id%'")
--~ (if (:locality params) "OR locality = :locality")
--~ (if (:Id params) "OR Id = :Id")
--~ (if (:offset params) "OFFSET :offset ")
@ -892,7 +892,7 @@ WHERE false
-- :name search-strings-issue :? :1
-- :doc selects existing issue records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_issues
SELECT DISTINCT * FROM lv_issues
WHERE false
--~ (if (:url params) "OR url LIKE '%:url%'")
--~ (if (:current params) "OR current = :current")
@ -902,7 +902,7 @@ WHERE false
-- :name search-strings-option :? :1
-- :doc selects existing option records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_options
SELECT DISTINCT * FROM lv_options
WHERE false
--~ (if (:id params) "OR id LIKE '%:id%'")
--~ (if (:offset params) "OFFSET :offset ")
@ -910,7 +910,7 @@ WHERE false
-- :name search-strings-role :? :1
-- :doc selects existing role records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_roles
SELECT DISTINCT * FROM lv_roles
WHERE false
--~ (if (:name params) "OR name LIKE '%:name%'")
--~ (if (:id params) "OR id = :id")
@ -921,7 +921,7 @@ ORDER BY lv_roles.name,
-- :name search-strings-team :? :1
-- :doc selects existing team records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_teams
SELECT DISTINCT * FROM lv_teams
WHERE false
--~ (if (:name params) "OR name LIKE '%:name%'")
--~ (if (:district_id params) "OR district_id = :district_id")
@ -935,7 +935,7 @@ ORDER BY lv_teams.name,
-- :name search-strings-visit :? :1
-- :doc selects existing visit records having any string field matching the parameter of the same name by substring match
SELECT * FROM lv_visits
SELECT DISTINCT * FROM lv_visits
WHERE false
--~ (if (:address_id params) "OR address_id = :address_id")
--~ (if (:canvasser_id params) "OR canvasser_id = :canvasser_id")

View file

@ -1,5 +1,5 @@
{% extends "base.html" %}
<!-- File application-index.html generated 2018-06-29T16:36:20.140Z by adl.to-selmer-templates.
<!-- File application-index.html generated 2018-06-29T22:21:55.471Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -23,23 +23,43 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block content %}
<dl class='index'>
<dt>
<a href='list-electors-Electors'>
Elector
<a href='list-addresses-Addresses'>
Address
</a>
</dt>
<dd>
<p>
All electors known to the system; electors are people believed to be entitled to vote in the current campaign.
Addresses of all buildings which contain dwellings.
</p>
</dd>
<dt>
<a href='list-genders-Genders'>
Gender
<a href='list-authorities-Authorities'>
Authority
</a>
</dt>
<dd>
<p>
All genders which may be assigned to electors.
Authorities which may authenticate canvassers to the system.
</p>
</dd>
<dt>
<a href='list-canvassers-Canvassers'>
Canvasser
</a>
</dt>
<dd>
<p>
Primary users of the system: those actually interviewing electors.
</p>
</dd>
<dt>
<a href='list-districts-Districts'>
District
</a>
</dt>
<dd>
<p>
Electoral districts: TODO: Shape (polygon) information will need to be added, for use in maps.
</p>
</dd>
<dt>
@ -58,43 +78,50 @@ All dwellings within addresses in the system; a dwelling is a
</p>
</dd>
<dt>
<a href='list-addresses-Addresses'>
Address
<a href='list-electors-Electors'>
Elector
</a>
</dt>
<dd>
<p>
Addresses of all buildings which contain dwellings.
All electors known to the system; electors are people believed to be entitled to vote in the current campaign.
</p>
</dd>
<dt>
<a href='list-visits-Visits'>
Visit
<a href='list-followupactions-Followupactions'>
Followupaction
</a>
</dt>
<dd>
<p>
All visits made by canvassers to dwellings in which opinions were recorded.
Actions taken on followup requests.
</p>
</dd>
<dt>
<a href='list-authorities-Authorities'>
Authority
<a href='list-followupmethods-Followupmethods'>
Followupmethod
</a>
</dt>
<dd>
</dd>
<dt>
<a href='list-followuprequests-Followuprequests'>
Followuprequest
</a>
</dt>
<dd>
<p>
Authorities which may authenticate canvassers to the system.
Requests for a followup with an issue expert
</p>
</dd>
<dt>
<a href='list-issues-Issues'>
Issue
<a href='list-genders-Genders'>
Gender
</a>
</dt>
<dd>
<p>
Issues believed to be of interest to electors, about which they may have questions.
All genders which may be assigned to electors.
</p>
</dd>
<dt>
@ -108,23 +135,23 @@ Intentions of electors to vote for options elicited in visits.
</p>
</dd>
<dt>
<a href='list-canvassers-Canvassers'>
Canvasser
<a href='list-issues-Issues'>
Issue
</a>
</dt>
<dd>
<p>
Primary users of the system: those actually interviewing electors.
Issues believed to be of interest to electors, about which they may have questions.
</p>
</dd>
<dt>
<a href='list-followuprequests-Followuprequests'>
Followuprequest
<a href='list-options-Options'>
Option
</a>
</dt>
<dd>
<p>
Requests for a followup with an issue expert
Options in the election or referendum being canvassed on
</p>
</dd>
<dt>
@ -145,42 +172,15 @@ Team
<dd>
</dd>
<dt>
<a href='list-districts-Districts'>
District
<a href='list-visits-Visits'>
Visit
</a>
</dt>
<dd>
<p>
Electoral districts: TODO: Shape (polygon) information will need to be added, for use in maps.
All visits made by canvassers to dwellings in which opinions were recorded.
</p>
</dd>
<dt>
<a href='list-followupactions-Followupactions'>
Followupaction
</a>
</dt>
<dd>
<p>
Actions taken on followup requests.
</p>
</dd>
<dt>
<a href='list-options-Options'>
Option
</a>
</dt>
<dd>
<p>
Options in the election or referendum being canvassed on
</p>
</dd>
<dt>
<a href='list-followupmethods-Followupmethods'>
Followupmethod
</a>
</dt>
<dd>
</dd>
</dl>
{% endblock %}

View file

@ -34,6 +34,9 @@
</header>
{% endblock %}
<div id="main-container" class="container">
<div id="back-link-container">
<a href="javascript:history.back()" id="back-link">Back</a>
</div>
<div id="big-links">
{% block big-links %}
{% endblock %}
@ -43,9 +46,6 @@
{% endblock %}
</div>
<br clear="both"/>
<div id="back-link-container">
<a href="javascript:history.back()" id="back-link">Back</a>
</div>
</div>
{% block foot %}
<footer>

View file

@ -43,8 +43,6 @@
:start ((or (:init defaults) identity))
:stop ((or (:stop defaults) identity)))
;;(mount/start db/*db*)
(defn init
"init will be called once when
app is deployed as a servlet on

View file

@ -2,13 +2,15 @@
:author "Simon Brooke"}
youyesyet.layout
(:require [adl-support.tags :as tags]
[clojure.string :refer [lower-case]]
[clojure.tools.logging :as log]
[markdown.core :refer [md-to-html-string]]
[noir.session :as session]
[ring.util.http-response :refer [content-type ok]]
[ring.util.anti-forgery :refer [anti-forgery-field]]
[ring.middleware.anti-forgery :refer [*anti-forgery-token*]]
[selmer.parser :as parser]
[selmer.filters :as filters]
[youyesyet.db.core :as db]
))
@ -17,18 +19,25 @@
(parser/set-resource-path! (clojure.java.io/resource "templates"))
(parser/add-tag! :csrf-field (fn [_ _] (anti-forgery-field)))
(filters/add-filter! :markdown (fn [content] [:safe (md-to-html-string content)]))
(tags/add-tags)
(defn raw-get-user-roles [user]
"Return, as a set, the names of the roles of which this user is a member."
(if
user
(do
(log/debug (str "seeking roles for user " user))
(set (map #(lower-case (:name %)) (db/list-roles-by-canvasser db/*db* user))))))
(defn raw-get-user-roles [_]
#{"admin" "canvassers"})
;; role assignments change only rarely.
(def get-user-roles (memoize raw-get-user-roles))
(defn render
"renders the HTML template located relative to resources/templates"
[template & [params]]
(let [user (try session/get :user)]
[template session & [params]]
(let [user (:user session)]
(content-type
(ok
(parser/render-file

View file

@ -1,5 +1,4 @@
(ns ^{:doc "Plumbing, mainly boilerplate from Luminus."
:author "Simon Brooke"}
(ns ^{:doc "Plumbing, mainly boilerplate from Luminus."}
youyesyet.middleware
(:require [youyesyet.env :refer [defaults]]
[clojure.tools.logging :as log]

View file

@ -1,11 +0,0 @@
(ns ^{:doc "Routes/pages available to administrators, only."
:author "Simon Brooke"}
youyesyet.routes.administrator
(:require [clojure.java.io :as io]
[clojure.walk :refer [keywordize-keys]]
[compojure.core :refer [defroutes GET POST]]
[noir.response :as nresponse]
[noir.util.route :as route]
[ring.util.http-response :as response]
[youyesyet.layout :as layout]
[youyesyet.db.core :as db]))

View file

@ -54,6 +54,7 @@
))]
(layout/render
"canvasser.html"
(:session request)
{:title (if canvasser
(str
"Edit canvasser "
@ -66,10 +67,10 @@
(defn routing-page
"Render the routing page, which offers routes according to the user's roles"
[]
(layout/render "routing.html"))
[request]
(layout/render "routing.html" (:session request)))
(defroutes authenticated-routes
(GET "/edit-canvasser" request (canvasser-page request))
(POST "/edit-canvasser" request (canvasser-page request))
(GET "/routing" [] (routing-page)))
(GET "/routing" [request] (routing-page request)))

View file

@ -1,6 +1,6 @@
(ns
youyesyet.routes.auto
"User interface routes for Youyesyet auto-generated by [Application Description Language framework](https://github.com/simon-brooke/adl) at 20180629T141538.443Z"
"User interface routes for Youyesyet auto-generated by [Application Description Language framework](https://github.com/simon-brooke/adl) at 20180629T222155.170Z"
(:require
[adl-support.core :as support]
[clojure.java.io :as io]
@ -27,6 +27,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "list-addresses-Addresses.html")
(:session r)
{:title "Addresses",
:params p,
:records
@ -42,6 +43,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "form-addresses-Address.html")
(:session r)
{:title "Address",
:params p,
:record
@ -55,6 +57,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "list-authorities-Authorities.html")
(:session r)
{:title "Authorities",
:params p,
:records
@ -70,6 +73,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "form-authorities-Authority.html")
(:session r)
{:title "Authority",
:params p,
:record
@ -85,6 +89,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "list-canvassers-Canvassers.html")
(:session r)
{:title "Canvassers",
:params p,
:records
@ -100,6 +105,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "form-canvassers-Canvasser.html")
(:session r)
{:title "Canvasser",
:params p,
:record
@ -109,7 +115,8 @@
(db/get-canvasser db/*db* p)),
:electors (db/list-electors db/*db*),
:addresses (db/list-addresses db/*db*),
:authorities (db/list-authorities db/*db*)})))
:authorities (db/list-authorities db/*db*),
:roles (db/list-roles db/*db*)})))
(defn
list-districts-Districts
@ -118,6 +125,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "list-districts-Districts.html")
(:session r)
{:title "Districts",
:params p,
:records
@ -133,6 +141,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "form-districts-District.html")
(:session r)
{:title "District",
:params p,
:record
@ -148,6 +157,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "list-dwellings-Dwellings.html")
(:session r)
{:title "Dwellings",
:params p,
:records
@ -163,6 +173,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "form-dwellings-Dwelling.html")
(:session r)
{:title "Dwelling",
:params p,
:record
@ -179,6 +190,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "list-electors-Electors.html")
(:session r)
{:title "Electors",
:params p,
:records
@ -194,6 +206,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "form-electors-Elector.html")
(:session r)
{:title "Elector",
:params p,
:record
@ -209,6 +222,7 @@
(l/render
(support/resolve-template
"list-followupactions-Followupactions.html")
(:session r)
{:title "Followupactions",
:params p,
:records
@ -225,6 +239,7 @@
(l/render
(support/resolve-template
"form-followupactions-Followupaction.html")
(:session r)
{:title "Followupaction",
:params p,
:record
@ -243,6 +258,7 @@
(l/render
(support/resolve-template
"list-followupmethods-Followupmethods.html")
(:session r)
{:title "Followupmethods",
:params p,
:records
@ -259,6 +275,7 @@
(l/render
(support/resolve-template
"form-followupmethods-Followupmethod.html")
(:session r)
{:title "Followupmethod",
:params p,
:record
@ -275,6 +292,7 @@
(l/render
(support/resolve-template
"list-followuprequests-Followuprequests.html")
(:session r)
{:title "Followuprequests",
:params p,
:records
@ -291,6 +309,7 @@
(l/render
(support/resolve-template
"form-followuprequests-Followuprequest.html")
(:session r)
{:title "Followuprequest",
:params p,
:record
@ -310,6 +329,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "list-genders-Genders.html")
(:session r)
{:title "Genders",
:params p,
:records
@ -325,6 +345,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "form-genders-Gender.html")
(:session r)
{:title "Gender",
:params p,
:record
@ -340,6 +361,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "list-intentions-Intentions.html")
(:session r)
{:title "Intentions",
:params p,
:records
@ -355,6 +377,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "form-intentions-Intention.html")
(:session r)
{:title "Intention",
:params p,
:record
@ -373,6 +396,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "list-issues-Issues.html")
(:session r)
{:title "Issues",
:params p,
:records
@ -388,6 +412,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "form-issues-Issue.html")
(:session r)
{:title "Issue",
:params p,
:record
@ -400,6 +425,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "list-options-Options.html")
(:session r)
{:title "Options",
:params p,
:records
@ -415,6 +441,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "form-options-Option.html")
(:session r)
{:title "Option",
:params p,
:record
@ -430,6 +457,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "list-roles-Roles.html")
(:session r)
{:title "Roles",
:params p,
:records
@ -445,10 +473,12 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "form-roles-Role.html")
(:session r)
{:title "Role",
:params p,
:record
(if (empty? (remove nil? (vals p))) [] (db/get-role db/*db* p))})))
(if (empty? (remove nil? (vals p))) [] (db/get-role db/*db* p)),
:canvassers (db/list-canvassers db/*db*)})))
(defn
list-teams-Teams
@ -457,6 +487,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "list-teams-Teams.html")
(:session r)
{:title "Teams",
:params p,
:records
@ -472,11 +503,13 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "form-teams-Team.html")
(:session r)
{:title "Team",
:params p,
:record
(if (empty? (remove nil? (vals p))) [] (db/get-team db/*db* p)),
:districts (db/list-districts db/*db*)})))
:districts (db/list-districts db/*db*),
:canvassers (db/list-canvassers db/*db*)})))
(defn
list-visits-Visits
@ -485,6 +518,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "list-visits-Visits.html")
(:session r)
{:title "Visits",
:params p,
:records
@ -500,6 +534,7 @@
[p (support/massage-params (:params r))]
(l/render
(support/resolve-template "form-visits-Visit.html")
(:session r)
{:title "Visit",
:params p,
:record

View file

@ -37,11 +37,11 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn app-page []
(layout/render "app.html"))
(layout/render "app.html" {}))
(defn about-page []
(layout/render "about.html"))
(layout/render "about.html" {}))
(defn call-me-page [request]
@ -49,8 +49,8 @@
request
(do
;; do something to store it in the database
(layout/render "call-me-accepted.html" (:params request)))
(layout/render "call-me.html"
(layout/render "call-me-accepted.html" (:session request) (:params request)))
(layout/render "call-me.html" (:session request)
{:title "Please call me!"
;; TODO: Issues need to be fetched from the database
:concerns nil})))
@ -59,21 +59,20 @@
(defn roles-page [request]
(let
[session (:session request)
username (:user session)
user (if username (db-core/get-canvasser-by-username db-core/*db* {:username username}))
user (:user session)
roles (if user (db-core/list-roles-by-canvasser db-core/*db* {:id (:id user)}))]
(cond
roles (layout/render "roles.html"
(:session request)
{:title (str "Welcome " (:fullname user) ", what do you want to do?")
:user user
:roles roles})
(empty? roles)(response/found "/app")
true (assoc (response/found "/login") :session (dissoc session :user))
)))
true (assoc (response/found "/login") :session (dissoc session :user)))))
(defn home-page []
(layout/render "home.html" {:title "You Yes Yet?"}))
(layout/render "home.html" {} {:title "You Yes Yet?"}))
(defn login-page
@ -99,14 +98,18 @@
;; it-will-do-for-now security in place; instead, I want this to be test code only
;; until we have o-auth properly working.
(and user (= username password))
(assoc (response/found redirect-to) :session (assoc session :user username))
user
(assoc
(response/found redirect-to)
:session (assoc session :user user :roles (layout/get-user-roles user)))
username
(layout/render
"login.html"
session
{:title (str "User " username " is unknown") :redirect-to redirect-to})
true
(layout/render
"login.html"
session
{:title "Please log in"
:redirect-to redirect-to
:authorities (db-core/list-authorities db-core/*db*)}))))
@ -127,7 +130,7 @@
(POST "/call-me" request (call-me-page request))
(GET "/auth" request (login-page request))
(POST "/auth" request (login-page request))
(GET "/notyet" [] (layout/render "notyet.html"
(GET "/notyet" [] (layout/render "notyet.html" {}
{:title "Can we persuade you?"}))
(GET "/supporter" [] (layout/render "supporter.html"
(GET "/supporter" [] (layout/render "supporter.html" {}
{:title "Have you signed up as a canvasser yet?"})))

View file

@ -42,8 +42,8 @@
"Get current issues. No arguments expected."
[request])
(defroutes rest-routes
(GET "/rest/get-local-data" request (route/restricted (get-local-data request)))
(GET "/rest/get-issues" request (route/restricted (get-issues request)))
(GET "/rest/set-intention" request (route/restricted (set-intention request)))
(GET "/rest/request-followup" request (route/restricted (request-followup request))))
;; (defroutes rest-routes
;; (GET "/rest/get-local-data" request (route/restricted (get-local-data request)))
;; (GET "/rest/get-issues" request (route/restricted (get-issues request)))
;; (GET "/rest/set-intention" request (route/restricted (set-intention request)))
;; (GET "/rest/request-followup" request (route/restricted (request-followup request))))

View file

@ -361,10 +361,10 @@
<prompt prompt="elector_id" locale="en-GB"/>
</property>
<property required="true" type="entity" name="address_id" column="address_id"
entity="addresses" farkey="id">
entity="addresses" farkey="id" distinct="user">
<prompt prompt="address_id" locale="en-GB"/>
</property>
<property type="string" name="phone" column="phone" size="16">
<property type="string" name="phone" column="phone" size="16" distinct="user">
<prompt prompt="phone" locale="en-GB"/>
</property>
<property type="string" name="email" column="email" size="128" distinct="user">