More detail work. An awful lot is working now.
This commit is contained in:
parent
635d1830d3
commit
78365f8c8b
12 changed files with 178 additions and 144 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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]))
|
||||
|
|
@ -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)))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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?"})))
|
||||
|
|
|
|||
|
|
@ -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))))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue