#5: Progress, but nothing working yet
This commit is contained in:
parent
95507002c7
commit
d534302fd8
|
@ -118,15 +118,16 @@ ALTER TABLE public.authorities OWNER TO youyesyet;
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS canvassers (
|
CREATE TABLE IF NOT EXISTS canvassers (
|
||||||
id serial,
|
id serial,
|
||||||
username character varying(32) NOT NULL,
|
username character varying(32) NOT NULL,
|
||||||
fullname character varying(64) NOT NULL,
|
fullname character varying(64) NOT NULL,
|
||||||
elector_id integer,
|
elector_id integer,
|
||||||
address_id integer NOT NULL,
|
address_id integer NOT NULL,
|
||||||
phone character varying(16),
|
phone character varying(16),
|
||||||
email character varying(128),
|
email character varying(128),
|
||||||
authority_id character varying(32) NOT NULL,
|
authority_id character varying(32) NOT NULL,
|
||||||
authorised boolean
|
introduced_by int references canvassers(id),
|
||||||
|
authorised boolean
|
||||||
);
|
);
|
||||||
--;;
|
--;;
|
||||||
|
|
||||||
|
@ -534,6 +535,8 @@ ALTER TABLE ONLY canvassers
|
||||||
ADD CONSTRAINT canvassers_elector_id_fkey FOREIGN KEY (elector_id) REFERENCES electors(id);
|
ADD CONSTRAINT canvassers_elector_id_fkey FOREIGN KEY (elector_id) REFERENCES electors(id);
|
||||||
--;;
|
--;;
|
||||||
|
|
||||||
|
create unique index canvassers_username_ix on canvassers (username);
|
||||||
|
create unique index canvassers_email_ix on canvassers(email);
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: electors_address_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: youyesyet
|
-- Name: electors_address_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: youyesyet
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
-- this is just a teardown of everything set up in the corresponding .up.sql file
|
||||||
|
|
||||||
|
delete from roles where name = 'Expert';
|
||||||
|
delete from roles where name = 'Administrator';
|
||||||
|
delete from roles where name = 'Recruiter';
|
||||||
|
delete from roles where name = 'Organiser';
|
||||||
|
delete from roles where name = 'Editor';
|
||||||
|
|
||||||
|
alter table issues drop column content;
|
||||||
|
alter table issues drop column current;
|
||||||
|
|
||||||
|
delete from issues where id = 'Currency';
|
||||||
|
delete from issues where id = 'Monarchy';
|
||||||
|
delete from issues where id = 'Defence';
|
||||||
|
|
||||||
|
delete from options where id = 'Yes';
|
||||||
|
delete from options where id = 'No';
|
|
@ -37,7 +37,7 @@ alter table issues add column content varchar(1024);
|
||||||
-- from the system but kept because it may become current again later. Only
|
-- from the system but kept because it may become current again later. Only
|
||||||
-- current issues are shown in the app. Typically not fewer than three and not
|
-- current issues are shown in the app. Typically not fewer than three and not
|
||||||
-- more than about seven issues should be current at any time.
|
-- more than about seven issues should be current at any time.
|
||||||
alter table issues add column current default false;
|
alter table issues add column current boolean default false;
|
||||||
|
|
||||||
insert into issues (id, content, current) values ('Currency',
|
insert into issues (id, content, current) values ('Currency',
|
||||||
'Scotland could keep the Pound, or use the Euro. But we could also set up a new currency of our own.',
|
'Scotland could keep the Pound, or use the Euro. But we could also set up a new currency of our own.',
|
11
resources/migrations/20170415102900-core-views.down.sql
Normal file
11
resources/migrations/20170415102900-core-views.down.sql
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
drop view if exists roles_by_canvasser;
|
||||||
|
|
||||||
|
drop view if exists teams_by_canvasser;
|
||||||
|
|
||||||
|
drop view if exists canvassers_by_team;
|
||||||
|
|
||||||
|
drop view if exists canvassers_by_introducer;
|
||||||
|
|
||||||
|
drop view if exists teams_by_organiser;
|
||||||
|
|
||||||
|
drop view if exists organisers_by_team;
|
59
resources/migrations/20170415102900-core-views.up.sql
Normal file
59
resources/migrations/20170415102900-core-views.up.sql
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
|
||||||
|
create view roles_by_canvasser as
|
||||||
|
select canvassers.id as canvasser, roles.name
|
||||||
|
from roles, rolememberships, canvassers
|
||||||
|
where roles.id = rolememberships.role_id
|
||||||
|
and canvassers.id = rolememberships.canvasser_id
|
||||||
|
and canvassers.authorised = true;
|
||||||
|
|
||||||
|
create view teams_by_canvasser as
|
||||||
|
select canvassers.id as canvasser, teams.id, teams.name, teams.latitude, teams.longitude
|
||||||
|
from teams, teammemberships, canvassers
|
||||||
|
where teams.id = teammemberships.team_id
|
||||||
|
and canvassers.id = teammemberships.canvasser_id;
|
||||||
|
|
||||||
|
create view canvassers_by_team as
|
||||||
|
select teams.id as team,
|
||||||
|
canvassers.id,
|
||||||
|
canvassers.username,
|
||||||
|
canvassers.fullname,
|
||||||
|
canvassers.email,
|
||||||
|
canvassers.phone
|
||||||
|
from teams, teammemberships, canvassers
|
||||||
|
where teams.id = teammemberships.team_id
|
||||||
|
and canvassers.id = teammemberships.canvasser_id
|
||||||
|
and canvassers.authorised = true;
|
||||||
|
|
||||||
|
create view canvassers_by_introducer as
|
||||||
|
select introducers.id as introducer,
|
||||||
|
canvassers.id as canvasser,
|
||||||
|
canvassers.username,
|
||||||
|
canvassers.fullname,
|
||||||
|
canvassers.email,
|
||||||
|
canvassers.phone,
|
||||||
|
canvassers.authorised
|
||||||
|
from canvassers, canvassers as introducers
|
||||||
|
where introducers.id = canvassers.introduced_by;
|
||||||
|
|
||||||
|
create view teams_by_organiser as
|
||||||
|
select canvassers.id as organiser,
|
||||||
|
teams.id,
|
||||||
|
teams.name,
|
||||||
|
teams.latitude,
|
||||||
|
teams.longitude
|
||||||
|
from teams, teamorganiserships, canvassers
|
||||||
|
where teams.id = teamorganiserships.team_id
|
||||||
|
and canvassers.id = teamorganiserships.canvasser_id
|
||||||
|
and canvassers.authorised = true;
|
||||||
|
|
||||||
|
create view organisers_by_team as
|
||||||
|
select teams.id as team,
|
||||||
|
canvassers.id,
|
||||||
|
canvassers.username,
|
||||||
|
canvassers.fullname,
|
||||||
|
canvassers.email,
|
||||||
|
canvassers.phone
|
||||||
|
from teams, teamorganiserships, canvassers
|
||||||
|
where teams.id = teamorganiserships.team_id
|
||||||
|
and canvassers.id = teamorganiserships.canvasser_id
|
||||||
|
and canvassers.authorised = true;
|
|
@ -239,3 +239,37 @@ SELECT * FROM visits
|
||||||
WHERE id = :id
|
WHERE id = :id
|
||||||
|
|
||||||
-- visits is audit data; we don't delete it.
|
-- visits is audit data; we don't delete it.
|
||||||
|
|
||||||
|
|
||||||
|
-- views are select only
|
||||||
|
|
||||||
|
-- :name get-roles-by-canvasser :? :*
|
||||||
|
-- :doc Get the role names for the canvasser with the specified id
|
||||||
|
select name from roles_by_canvasser
|
||||||
|
where canvasser = :canvasser
|
||||||
|
|
||||||
|
-- :name get-teams-by-canvasser :? :*
|
||||||
|
-- :doc Get details of the teams which the canvasser with the specified id is member of.
|
||||||
|
select * from teams_by_canvasser
|
||||||
|
where canvasser = :canvasser_id
|
||||||
|
|
||||||
|
-- :name get-canvassers-by-team :? :*
|
||||||
|
-- :doc Get details of all canvassers who are members of the team with the specified id
|
||||||
|
select * from canvassers_by_team
|
||||||
|
where team = :team_id
|
||||||
|
|
||||||
|
-- :name get-canvassers-by-team :? :*
|
||||||
|
-- :doc Get details of all authorised canvassers who are members of this team.
|
||||||
|
select * from canvassers_by_introducer
|
||||||
|
where introducer = :introducer_id
|
||||||
|
|
||||||
|
-- :name get-teams_by_organiser :? :*
|
||||||
|
-- :doc Get details of all the teams organised by the canvasser with the specified id
|
||||||
|
select * from teams_by_organiser
|
||||||
|
where organiser = :organiser_id
|
||||||
|
|
||||||
|
-- :name get-organisers-by-team :? :*
|
||||||
|
-- :doc Get details of all organisers of the team with the specified id
|
||||||
|
select * from organisers_by_team
|
||||||
|
where team = :team_id
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
(ns youyesyet.handler
|
(ns youyesyet.handler
|
||||||
(:require [compojure.core :refer [routes wrap-routes]]
|
(:require [compojure.core :refer [routes wrap-routes]]
|
||||||
[youyesyet.layout :refer [error-page]]
|
[youyesyet.layout :refer [error-page]]
|
||||||
|
[youyesyet.routes.authenticated :refer [authenticated-routes]]
|
||||||
[youyesyet.routes.home :refer [home-routes]]
|
[youyesyet.routes.home :refer [home-routes]]
|
||||||
[youyesyet.routes.oauth :refer [oauth-routes]]
|
[youyesyet.routes.oauth :refer [oauth-routes]]
|
||||||
[compojure.route :as route]
|
[compojure.route :as route]
|
||||||
|
@ -61,6 +62,7 @@
|
||||||
(wrap-routes middleware/wrap-csrf)
|
(wrap-routes middleware/wrap-csrf)
|
||||||
(wrap-routes middleware/wrap-formats))
|
(wrap-routes middleware/wrap-formats))
|
||||||
#'oauth-routes
|
#'oauth-routes
|
||||||
|
#'authenticated-routes
|
||||||
(route/not-found
|
(route/not-found
|
||||||
(:body
|
(:body
|
||||||
(error-page {:status 404
|
(error-page {:status 404
|
||||||
|
|
|
@ -33,12 +33,22 @@
|
||||||
|
|
||||||
;;; This code adapted from http://www.luminusweb.net/docs#accessing_the_database
|
;;; This code adapted from http://www.luminusweb.net/docs#accessing_the_database
|
||||||
|
|
||||||
(defn canvassers-page
|
(defn canvasser-page
|
||||||
[request]
|
[request]
|
||||||
(if
|
(if
|
||||||
(:params request)
|
(:params request)
|
||||||
(let [params (:params request)]
|
(let [params (:params request)]
|
||||||
(if (:id params)
|
(if (:id params)
|
||||||
(db/update-canvasser! params)
|
(db/update-canvasser! params)
|
||||||
(db/create-canvasser! params)))))
|
(db/create-canvasser! params))
|
||||||
|
)))
|
||||||
|
|
||||||
|
(defn routing-page
|
||||||
|
"Render the routing page, which offers routes according to the user's roles"
|
||||||
|
[]
|
||||||
|
(layout/render "routing.html"))
|
||||||
|
|
||||||
|
(defroutes authenticated-routes
|
||||||
|
(GET "/edit-canvasser" request (canvasser-page request))
|
||||||
|
(POST "/edit-canvasser" request (canvasser-page request))
|
||||||
|
(GET "/routing" [] (routing-page)))
|
||||||
|
|
Loading…
Reference in a new issue