620 lines
37 KiB
XML
620 lines
37 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!-- DOCTYPE application PUBLIC "-//JOURNEYMAN//DTD ADL 1.4.1//EN"
|
|
"http://www.journeyman.cc/adl/stable/adl/schemas/adl-1.4.1.dtd" -->
|
|
<application xmlns="http://bowyer.journeyman.cc/adl/1.4.1/" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:adl="http://bowyer.journeyman.cc/adl/1.4.1/" name="youyesyet" version="0.1.1">
|
|
<!--
|
|
***************************************************************************
|
|
*
|
|
* Application Description Language Framework
|
|
*
|
|
* THIS FILE IS AUTOMATICALLY GENERATED AND SHOULD NOT
|
|
* BE MANUALLY EDITED.
|
|
*
|
|
* Generated using adl2canonical.xslt 1.10 $
|
|
*
|
|
***************************************************************************
|
|
-->
|
|
<documentation>
|
|
A web-app intended to be used by canvassers campaigning for a 'Yes' vote in the second independence referendum.
|
|
|
|
The web-app will be delivered to canvassers out knocking doors primarily through an HTML5/React single-page app designed to work on a mobile phone; it's possible that someone else may do an Android of iPhone native app to address the same back end but at present I have no plans for this.
|
|
|
|
There must also be an administrative interface through which privileged users can set the system up and authorise canvassers, and a 'followup' interface through which issue-expert specialist canvassers can address particular electors' queries.
|
|
</documentation>
|
|
<content>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<link rel="stylesheet" type="text/css" href="css/yyy-common.css"/>
|
|
<link rel="stylesheet" type="text/css" href="css/yyy-site.css"/>
|
|
<link rel="stylesheet" type="text/css" href="css/spinner.css"/>
|
|
<link href="https://fonts.googleapis.com/css?family=Archivo+Black|Archivo+Narrow" rel="stylesheet"/>
|
|
<title>{{site-title}}: {{title}}</title>
|
|
</head>
|
|
<top> </top>
|
|
<foot>
|
|
<footer>
|
|
<div id="credits">
|
|
<div>
|
|
<img src="img/credits/ric-logo.png" width="24" height="24"/>
|
|
A project of the
|
|
<a href="https://radical.scot/">Radical Independence Campaign</a> ||
|
|
Version {{version}}
|
|
</div>
|
|
<div>
|
|
<img height="16" width="16" alt="Clojure" src="img/credits/luminus-logo.png"/>Built with <a href="http://www.luminusweb.net/">LuminusWeb</a> ||
|
|
<img height="16" width="16" alt="Clojure" src="img/credits/clojure-icon.gif"/> Powered by <a href="http://clojure.org">Clojure</a> ||
|
|
<img height="16" width="16" alt="GitHub" src="img/credits/github-logo-transparent.png"/>Find me/fork me on <a href="https://github.com/simon-brooke/smeagol">Github</a> ||
|
|
<img height="16" width="16" alt="Free Software Foundation" src="img/credits/gnu.small.png"/>Licensed under the <a href="http://www.gnu.org/licenses/gpl-2.0.html">GNU General Public License version 2.0</a>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
</foot>
|
|
</content>
|
|
<typedef name="postcode" type="string" pattern="^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([AZa-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z]))))[0-9][A-Za-z]{2})$" size="16">
|
|
<documentation>See
|
|
https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/488478/Bulk_Data_Transfer_-_additional_validation_valid_from_12_November_2015.pdf,
|
|
section 3</documentation>
|
|
<help locale="en-GB">A valid postcode.</help>
|
|
</typedef>
|
|
<group name="public">
|
|
<documentation>All users</documentation>
|
|
</group>
|
|
<group name="canvassers" parent="public">
|
|
<documentation>All users of the canvasser app Able to read and add canvassing data in a limited
|
|
radius around their current position. </documentation>
|
|
</group>
|
|
<group name="teamorganisers" parent="canvassers">
|
|
<documentation>Organisers of canvassing teams Able to see and modify data on the canvassers in
|
|
the team(s) they organise; able to add canvassers to their team; able to update canvassers in
|
|
their team, including resetting passwords and locking accounts; able to see canvass data over
|
|
the whole area in which their team operates. </documentation>
|
|
</group>
|
|
<group name="issueexperts" parent="public">
|
|
<documentation>People expert on particular issues. Able to read followup requests, and the electors to which they
|
|
relate; able to access (read/write) the issues wiki; able to write followuop action records.
|
|
</documentation>
|
|
</group>
|
|
<group name="analysts" parent="public">
|
|
<documentation>Users entitled to see an overview of the canvassing data collected. Able to read canvassing data over the whole map, including historical
|
|
data.</documentation>
|
|
</group>
|
|
<group name="issueeditors" parent="analysts">
|
|
<documentation>Users responsible for determining what issues should be current at any time.
|
|
Able to set current issues; able to add issues.</documentation>
|
|
</group>
|
|
<group name="admin" parent="public">
|
|
<documentation>Able to read and update canvasser records, team membership records, team
|
|
organisership records, issue expertise records; able to add and update reference data
|
|
generally.</documentation>
|
|
</group>
|
|
<!--
|
|
entity electors already has a key - not generating one
|
|
-->
|
|
<entity table="electors" name="electors" magnitude="6">
|
|
<documentation>All electors known to the system; electors are people believed to be entitled to vote in the current campaign.</documentation>
|
|
<key>
|
|
<property required="true" type="integer" name="id" column="id" immutable="true" distinct="system">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<property size="64" required="true" type="string" name="name" column="name" distinct="user">
|
|
<prompt prompt="name" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" type="entity" name="dwelling_id" column="dwelling_id" entity="dwellings" farkey="id">
|
|
<prompt prompt="Flat" locale="en-GB"/>
|
|
</property>
|
|
<property size="16" type="string" name="phone" column="phone" distinct="user">
|
|
<prompt prompt="phone" locale="en-GB"/>
|
|
</property>
|
|
<property size="128" type="string" name="email" column="email" distinct="user">
|
|
<prompt prompt="email" locale="en-GB"/>
|
|
</property>
|
|
<property name="gender" type="entity" column="gender" entity="genders" farkey="id" default="Unknown" distinct="user">
|
|
<prompt prompt="gender" locale="en-GB"/>
|
|
</property>
|
|
<list properties="listed" name="Electors"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="name"><prompt prompt="name" locale="en-GB"/></field><field property="dwelling_id"><prompt prompt="Flat" locale="en-GB"/></field><field property="phone"><prompt prompt="phone" locale="en-GB"/></field><field property="email"><prompt prompt="email" locale="en-GB"/></field><field property="gender"><prompt prompt="gender" locale="en-GB"/></field></list>
|
|
<form properties="listed" name="Elector"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="name"><prompt prompt="name" locale="en-GB"/></field><field property="dwelling_id"><prompt prompt="Flat" locale="en-GB"/></field><field property="phone"><prompt prompt="phone" locale="en-GB"/></field><field property="email"><prompt prompt="email" locale="en-GB"/></field><field property="gender"><prompt prompt="gender" locale="en-GB"/></field></form>
|
|
<permission group="canvassers" permission="read"/>
|
|
<permission group="teamorganisers" permission="read"/>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
</entity>
|
|
<!--
|
|
entity genders already has a key - not generating one
|
|
-->
|
|
<entity table="genders" name="genders" magnitude="1">
|
|
<documentation>All genders which may be assigned to electors.</documentation>
|
|
<key>
|
|
<property name="id" type="string" size="32" distinct="all">
|
|
<prompt prompt="gender" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<list properties="listed" name="Genders"><field property="id"><prompt prompt="gender" locale="en-GB"/></field></list>
|
|
<form properties="listed" name="Gender"><field property="id"><prompt prompt="gender" locale="en-GB"/></field></form>
|
|
<permission group="canvassers" permission="read"/>
|
|
<permission group="teamorganisers" permission="read"/>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
</entity>
|
|
<!--
|
|
entity dwellings already has a key - not generating one
|
|
-->
|
|
<entity table="dwellings" name="dwellings" magnitude="6">
|
|
<documentation>All dwellings within addresses in the system; a dwelling is a house, flat or appartment in which electors live.</documentation>
|
|
<key>
|
|
<property required="true" type="integer" name="id" column="id" immutable="true" distinct="system">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<property required="true" type="entity" name="address_id" column="address_id" entity="addresses" farkey="id" distinct="user">
|
|
<prompt prompt="Building Address" locale="en-GB"/>
|
|
</property>
|
|
<property required="false" type="string" size="32" name="sub-address" distinct="user"/>
|
|
<list properties="listed" name="Dwellings"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="address_id"><prompt prompt="Building Address" locale="en-GB"/></field><field property="sub-address"/></list>
|
|
<form properties="listed" name="Dwelling"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="address_id"><prompt prompt="Building Address" locale="en-GB"/></field><field property="sub-address"/></form>
|
|
<permission group="canvassers" permission="read"/>
|
|
<permission group="teamorganisers" permission="read"/>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
</entity>
|
|
<!--
|
|
entity addresses already has a key - not generating one
|
|
-->
|
|
<entity table="addresses" name="addresses" magnitude="6">
|
|
<documentation>Addresses of all buildings which contain dwellings.</documentation>
|
|
<key>
|
|
<property required="true" type="integer" name="id" column="id" immutable="true" distinct="system">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<property required="true" type="string" name="address" column="address" size="256" distinct="user">
|
|
<prompt prompt="address" locale="en-GB"/>
|
|
</property>
|
|
<property type="defined" typedef="postcode" name="postcode" column="postcode" size="16" distinct="user">
|
|
<prompt prompt="postcode" locale="en-GB"/>
|
|
</property>
|
|
<property type="string" name="phone" column="phone" size="16">
|
|
<prompt prompt="phone" locale="en-GB"/>
|
|
</property>
|
|
<property type="entity" name="district_id" column="district_id" entity="districts" farkey="id">
|
|
<prompt prompt="district_id" locale="en-GB"/>
|
|
</property>
|
|
<property type="real" name="latitude" column="latitude">
|
|
<prompt prompt="latitude" locale="en-GB"/>
|
|
</property>
|
|
<property type="real" name="longitude" column="longitude">
|
|
<prompt prompt="longitude" locale="en-GB"/>
|
|
</property>
|
|
<property type="integer" name="locality" column="locality">
|
|
<documentation>
|
|
Locality indexing; see issue #44. Note that this property should be generated
|
|
automatically from the latitude and longitude:
|
|
(+
|
|
(* 10000 ;; left-shift the latitude component four digits
|
|
(integer
|
|
(* latitude 1000)))
|
|
(- ;; invert the sign of the longitude component, since
|
|
;; we're interested in localities West of Greenwich.
|
|
(integer
|
|
(* longitude 1000))))
|
|
We'll use a trigger to insert this. I don't think it will ever appear in the user
|
|
interface; it's an implementation detail, not of interest to users.
|
|
</documentation>
|
|
</property>
|
|
<list properties="listed" name="Addresses">
|
|
<field property="id"><prompt prompt="id" locale="en-GB"/></field>
|
|
<field property="address"><prompt prompt="address" locale="en-GB"/></field>
|
|
<field property="postcode"><prompt prompt="postcode" locale="en-GB"/></field>
|
|
<field property="phone"><prompt prompt="phone" locale="en-GB"/></field>
|
|
<field property="district_id"><prompt prompt="district_id" locale="en-GB"/></field>
|
|
<field property="latitude"><prompt prompt="latitude" locale="en-GB"/></field>
|
|
<field property="longitude"><prompt prompt="longitude" locale="en-GB"/></field>
|
|
</list>
|
|
<form properties="listed" name="Address">
|
|
<field property="id"><prompt prompt="id" locale="en-GB"/></field>
|
|
<field property="address"><prompt prompt="address" locale="en-GB"/></field>
|
|
<field property="postcode"><prompt prompt="postcode" locale="en-GB"/></field>
|
|
<field property="phone"><prompt prompt="phone" locale="en-GB"/></field>
|
|
<field property="district_id"><prompt prompt="district_id" locale="en-GB"/></field>
|
|
<field property="latitude"><prompt prompt="latitude" locale="en-GB"/></field>
|
|
<field property="longitude"><prompt prompt="longitude" locale="en-GB"/></field>
|
|
</form>
|
|
<permission group="canvassers" permission="read"/>
|
|
<permission group="teamorganisers" permission="read"/>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
</entity>
|
|
<!--
|
|
entity visits already has a key - not generating one
|
|
-->
|
|
<entity table="visits" name="visits" magnitude="7">
|
|
<documentation>All visits made by canvassers to dwellings in which opinions were recorded.</documentation>
|
|
<key>
|
|
<property required="true" type="integer" name="id" column="id" distinct="system">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<property required="true" type="entity" name="address_id" column="address_id" entity="addresses" farkey="id" distinct="user">
|
|
<prompt prompt="address_id" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" type="entity" name="canvasser_id" column="canvasser_id" entity="canvassers" farkey="id">
|
|
<prompt prompt="canvasser_id" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" type="timestamp" name="date" column="date" default="now()" distinct="user">
|
|
<prompt prompt="date" locale="en-GB"/>
|
|
</property>
|
|
<permission group="canvassers" permission="noedit">
|
|
<documentation>But only in their immediate area.</documentation>
|
|
</permission>
|
|
<permission group="teamorganisers" permission="read"/>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
<list properties="listed" name="Visits"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="address_id"><prompt prompt="address_id" locale="en-GB"/></field><field property="canvasser_id"><prompt prompt="canvasser_id" locale="en-GB"/></field><field property="date"><prompt prompt="date" locale="en-GB"/></field></list>
|
|
<form properties="listed" name="Visit"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="address_id"><prompt prompt="address_id" locale="en-GB"/></field><field property="canvasser_id"><prompt prompt="canvasser_id" locale="en-GB"/></field><field property="date"><prompt prompt="date" locale="en-GB"/></field></form>
|
|
<permission permission="none" group="public"/>
|
|
<permission permission="noedit" group="canvassers"/>
|
|
<permission permission="noedit" group="teamorganisers"/>
|
|
<permission permission="read" group="issueexperts"/>
|
|
<permission permission="read" group="analysts"/>
|
|
<permission permission="read" group="issueeditors"/>
|
|
<permission permission="all" group="admin"/>
|
|
</entity>
|
|
<!--
|
|
entity authorities already has a key - not generating one
|
|
-->
|
|
<entity table="authorities" name="authorities" magnitude="2">
|
|
<documentation>Authorities which may authenticate canvassers to the system.</documentation>
|
|
<key>
|
|
<property required="true" type="string" name="id" column="id" size="32" distinct="all">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<list properties="listed" name="Authorities"><field property="id"><prompt prompt="id" locale="en-GB"/></field></list>
|
|
<form properties="listed" name="Authority"><field property="id"><prompt prompt="id" locale="en-GB"/></field></form>
|
|
<permission group="canvassers" permission="read"/>
|
|
<permission group="teamorganisers" permission="read"/>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
</entity>
|
|
<!--
|
|
entity issues already has a key - not generating one
|
|
-->
|
|
<entity table="issues" name="issues" magnitude="1">
|
|
<documentation>Issues believed to be of interest to electors, about which they may have questions.</documentation>
|
|
<key>
|
|
<property required="true" type="string" name="id" column="id" size="32" immutable="true" distinct="all">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<property type="string" name="url" column="url" size="256">
|
|
<prompt prompt="url" locale="en-GB"/>
|
|
</property>
|
|
<property name="current" type="boolean" default="true">
|
|
<prompt prompt="Is current?" locale="en-GB"/>
|
|
</property>
|
|
<list properties="listed" name="Issues"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="url"><prompt prompt="url" locale="en-GB"/></field><field property="current"><prompt prompt="Is current?" locale="en-GB"/></field></list>
|
|
<form properties="listed" name="Issue"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="url"><prompt prompt="url" locale="en-GB"/></field><field property="current"><prompt prompt="Is current?" locale="en-GB"/></field></form>
|
|
<permission group="canvassers" permission="read"/>
|
|
<permission group="teamorganisers" permission="read"/>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="edit"/>
|
|
<permission group="admin" permission="all"/>
|
|
</entity>
|
|
<!--
|
|
entity intentions has no key - generating one
|
|
-->
|
|
<entity table="intentions" name="intentions" magnitude="6">
|
|
<documentation>Link table.</documentation>
|
|
<key>
|
|
<property type="integer" distinct="system" required="true" name="Id">
|
|
<generator action="native"/>
|
|
<documentation>
|
|
Auto-generated abstract primary key
|
|
</documentation>
|
|
</property>
|
|
</key>
|
|
<property required="true" type="entity" entity="visits" farkey="id" name="visit_id" column="visit_id">
|
|
<prompt prompt="visit_id" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" type="entity" entity="electors" farkey="id" name="elector_id" column="elector_id">
|
|
<prompt prompt="elector_id" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" type="entity" entity="options" farkey="id" name="option_id" column="option_id">
|
|
<prompt prompt="option_id" locale="en-GB"/>
|
|
</property>
|
|
<permission permission="none" group="public"/>
|
|
<permission group="canvassers" permission="noedit"/>
|
|
<permission group="teamorganisers" permission="none"/>
|
|
<permission group="issueexperts" permission="none"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="none"/>
|
|
<permission group="admin" permission="all"/>
|
|
<list properties="listed" name="Intentions">
|
|
<field property="visit_id">
|
|
<prompt prompt="visit_id" locale="en-GB"/>
|
|
</field>
|
|
<field property="elector_id">
|
|
<prompt prompt="elector_id" locale="en-GB"/>
|
|
</field>
|
|
<field property="option_id">
|
|
<prompt prompt="option_id" locale="en-GB"/>
|
|
</field>
|
|
</list>
|
|
<form properties="listed" name="Intention">
|
|
<field property="visit_id">
|
|
<prompt prompt="visit_id" locale="en-GB"/>
|
|
</field>
|
|
<field property="elector_id">
|
|
<prompt prompt="elector_id" locale="en-GB"/>
|
|
</field>
|
|
<field property="option_id">
|
|
<prompt prompt="option_id" locale="en-GB"/>
|
|
</field>
|
|
</form>
|
|
</entity>
|
|
<!--
|
|
entity canvassers already has a key - not generating one
|
|
-->
|
|
<entity table="canvassers" name="canvassers" magnitude="5">
|
|
<documentation>Primary users of the system: those actually interviewing electors.</documentation>
|
|
<key>
|
|
<property type="integer" name="id" column="id" distinct="system" immutable="true">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<property required="true" type="string" name="username" column="username" size="32" distinct="all">
|
|
<prompt prompt="username" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" type="string" name="fullname" column="fullname" size="64" distinct="user">
|
|
<prompt prompt="fullname" locale="en-GB"/>
|
|
</property>
|
|
<property type="entity" name="elector_id" column="elector_id" entity="electors" farkey="id">
|
|
<prompt prompt="elector_id" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" type="entity" name="address_id" column="address_id" entity="addresses" farkey="id">
|
|
<prompt prompt="address_id" locale="en-GB"/>
|
|
</property>
|
|
<property type="string" name="phone" column="phone" size="16">
|
|
<prompt prompt="phone" locale="en-GB"/>
|
|
</property>
|
|
<property type="string" name="email" column="email" size="128" distinct="user">
|
|
<prompt prompt="email" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" type="entity" name="authority_id" entity="authorities" farkey="id">
|
|
<prompt prompt="authority_id" locale="en-GB"/>
|
|
</property>
|
|
<property type="boolean" name="authorised" column="authorised">
|
|
<prompt prompt="authorised" locale="en-GB"/>
|
|
</property>
|
|
<property type="link" name="roles" entity="roles" farkey="role_id">
|
|
<prompt prompt="Roles" locale="en-GB"/>
|
|
</property>
|
|
<permission group="canvassers" permission="edit">
|
|
<documentation>But only their own record</documentation>
|
|
</permission>
|
|
<permission group="teamorganisers" permission="edit">
|
|
<documentation>But only canvassers in their own team.</documentation>
|
|
</permission>
|
|
<permission group="admin" permission="all">
|
|
<documentation>All canvassers</documentation>
|
|
</permission>
|
|
<list properties="listed" name="Canvassers"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="username"><prompt prompt="username" locale="en-GB"/></field><field property="fullname"><prompt prompt="fullname" locale="en-GB"/></field><field property="elector_id"><prompt prompt="elector_id" locale="en-GB"/></field><field property="address_id"><prompt prompt="address_id" locale="en-GB"/></field><field property="phone"><prompt prompt="phone" locale="en-GB"/></field><field property="email"><prompt prompt="email" locale="en-GB"/></field><field property="authority_id"><prompt prompt="authority_id" locale="en-GB"/></field><field property="authorised"><prompt prompt="authorised" locale="en-GB"/></field></list>
|
|
<form properties="listed" name="Canvasser"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="username"><prompt prompt="username" locale="en-GB"/></field><field property="fullname"><prompt prompt="fullname" locale="en-GB"/></field><field property="elector_id"><prompt prompt="elector_id" locale="en-GB"/></field><field property="address_id"><prompt prompt="address_id" locale="en-GB"/></field><field property="phone"><prompt prompt="phone" locale="en-GB"/></field><field property="email"><prompt prompt="email" locale="en-GB"/></field><field property="authority_id"><prompt prompt="authority_id" locale="en-GB"/></field><field property="authorised"><prompt prompt="authorised" locale="en-GB"/></field><field property="roles"><prompt prompt="Roles" locale="en-GB"/></field></form>
|
|
<permission group="canvassers" permission="edit">
|
|
<documentation>But should only be able to edit their own record.</documentation>
|
|
</permission>
|
|
<permission group="teamorganisers" permission="edit"/>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
</entity>
|
|
<!--
|
|
entity followuprequests already has a key - not generating one
|
|
-->
|
|
<entity table="followuprequests" name="followuprequests" magnitude="7">
|
|
<documentation>Requests for a followup with an issue expert</documentation>
|
|
<key>
|
|
<property required="true" type="integer" name="id" column="id" distinct="system">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<property required="true" type="entity" name="elector_id" column="elector_id" entity="electors" farkey="id" distinct="user">
|
|
<prompt prompt="elector_id" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" type="entity" name="visit_id" column="visit_id" entity="visits" farkey="id" distinct="user">
|
|
<prompt prompt="visit_id" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" type="entity" name="issue_id" column="issue_id" entity="issues" farkey="id" distinct="user">
|
|
<prompt prompt="issue_id" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" type="entity" name="method_id" column="method_id" entity="followupmethods" farkey="id">
|
|
<prompt prompt="method_id" locale="en-GB"/>
|
|
</property>
|
|
<list properties="listed" name="Followuprequests"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="elector_id"><prompt prompt="elector_id" locale="en-GB"/></field><field property="visit_id"><prompt prompt="visit_id" locale="en-GB"/></field><field property="issue_id"><prompt prompt="issue_id" locale="en-GB"/></field><field property="method_id"><prompt prompt="method_id" locale="en-GB"/></field></list>
|
|
<form properties="listed" name="Followuprequest"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="elector_id"><prompt prompt="elector_id" locale="en-GB"/></field><field property="visit_id"><prompt prompt="visit_id" locale="en-GB"/></field><field property="issue_id"><prompt prompt="issue_id" locale="en-GB"/></field><field property="method_id"><prompt prompt="method_id" locale="en-GB"/></field></form>
|
|
<permission group="canvassers" permission="noedit"/>
|
|
<permission group="teamorganisers" permission="read"/>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
</entity>
|
|
<!--
|
|
entity roles already has a key - not generating one
|
|
-->
|
|
<entity table="roles" name="roles" magnitude="1">
|
|
<documentation>A role (essentially, the same as a group, but application layer rather than database layer) of which a user may be a member.</documentation>
|
|
<key>
|
|
<property type="integer" name="id" column="id" immutable="true" distinct="system">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<property required="true" type="string" name="name" column="name" size="64" distinct="all" immutable="true">
|
|
<prompt prompt="name" locale="en-GB"/>
|
|
</property>
|
|
<property type="link" entity="canvassers" name="members">
|
|
<prompt prompt="Members" locale="en-GB"/>
|
|
</property>
|
|
<list properties="listed" name="Roles"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="name"><prompt prompt="name" locale="en-GB"/></field></list>
|
|
<form properties="listed" name="Role"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="name"><prompt prompt="name" locale="en-GB"/></field><field property="members"><prompt prompt="Members" locale="en-GB"/></field></form>
|
|
<permission group="canvassers" permission="read"/>
|
|
<permission group="teamorganisers" permission="read"/>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
</entity>
|
|
<!--
|
|
entity teams already has a key - not generating one
|
|
-->
|
|
<entity table="teams" name="teams" magnitude="4">
|
|
<key>
|
|
<property type="integer" name="id" column="id" distinct="system" immutable="true">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<property required="true" type="string" name="name" column="name" size="64" distinct="user">
|
|
<prompt prompt="name" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" type="entity" entity="districts" farkey="id" name="district_id" column="district_id">
|
|
<prompt prompt="district_id" locale="en-GB"/>
|
|
</property>
|
|
<property type="real" name="latitude" column="latitude">
|
|
<prompt prompt="latitude" locale="en-GB"/>
|
|
</property>
|
|
<property type="link" entity="canvassers" name="members">
|
|
<prompt prompt="Members" locale="en-GB"/>
|
|
</property>
|
|
<property type="link" entity="canvassers" name="organisers">
|
|
<prompt prompt="Organisers" locale="en-GB"/>
|
|
</property>
|
|
<property type="real" name="longitude" column="longitude">
|
|
<prompt prompt="longitude" locale="en-GB"/>
|
|
</property>
|
|
<permission group="canvassers" permission="read"/>
|
|
<permission group="teamorganisers" permission="edit">
|
|
<documentation>But only their own group(s)</documentation>
|
|
</permission>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all">
|
|
<documentation>All groups</documentation>
|
|
</permission>
|
|
<list properties="listed" name="Teams"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="name"><prompt prompt="name" locale="en-GB"/></field><field property="district_id"><prompt prompt="district_id" locale="en-GB"/></field><field property="latitude"><prompt prompt="latitude" locale="en-GB"/></field><field property="longitude"><prompt prompt="longitude" locale="en-GB"/></field></list>
|
|
<form properties="listed" name="Team"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="name"><prompt prompt="name" locale="en-GB"/></field><field property="district_id"><prompt prompt="district_id" locale="en-GB"/></field><field property="latitude"><prompt prompt="latitude" locale="en-GB"/></field><field property="members"><prompt prompt="Members" locale="en-GB"/></field><field property="organisers"><prompt prompt="Organisers" locale="en-GB"/></field><field property="longitude"><prompt prompt="longitude" locale="en-GB"/></field></form>
|
|
</entity>
|
|
<!--
|
|
entity districts already has a key - not generating one
|
|
-->
|
|
<entity table="districts" name="districts" magnitude="4">
|
|
<documentation>Electoral districts: TODO: Shape (polygon) information will need to be added, for use in maps.</documentation>
|
|
<key>
|
|
<property required="true" type="integer" name="id" column="id" immutable="true" distinct="system">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<property required="true" type="string" name="name" column="name" size="64" distinct="user">
|
|
<prompt prompt="name" locale="en-GB"/>
|
|
</property>
|
|
<permission group="public" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
<list properties="listed" name="Districts"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="name"><prompt prompt="name" locale="en-GB"/></field></list>
|
|
<form properties="listed" name="District"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="name"><prompt prompt="name" locale="en-GB"/></field></form>
|
|
<permission group="canvassers" permission="read"/>
|
|
<permission group="teamorganisers" permission="read"/>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
</entity>
|
|
<!--
|
|
entity followupactions already has a key - not generating one
|
|
-->
|
|
<entity table="followupactions" name="followupactions" magnitude="7">
|
|
<documentation>Actions taken on followup requests.</documentation>
|
|
<key>
|
|
<property required="true" type="integer" name="id" column="id" distinct="system">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<property required="true" type="entity" name="request_id" column="request_id" entity="followuprequests" farkey="id">
|
|
<prompt prompt="request_id" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" type="entity" name="actor" column="actor" entity="canvassers" farkey="id">
|
|
<prompt prompt="actor" locale="en-GB"/>
|
|
</property>
|
|
<property required="true" default="now()" type="timestamp" name="date" column="date" distinct="user">
|
|
<prompt prompt="date" locale="en-GB"/>
|
|
</property>
|
|
<property type="text" name="notes" column="notes" distinct="user">
|
|
<prompt prompt="notes" locale="en-GB"/>
|
|
</property>
|
|
<property type="boolean" name="closed" column="closed" default="false">
|
|
<prompt prompt="closed" locale="en-GB"/>
|
|
</property>
|
|
<list properties="listed" name="Followupactions"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="request_id"><prompt prompt="request_id" locale="en-GB"/></field><field property="actor"><prompt prompt="actor" locale="en-GB"/></field><field property="date"><prompt prompt="date" locale="en-GB"/></field><field property="notes"><prompt prompt="notes" locale="en-GB"/></field><field property="closed"><prompt prompt="closed" locale="en-GB"/></field></list>
|
|
<form properties="listed" name="Followupaction"><field property="id"><prompt prompt="id" locale="en-GB"/></field><field property="request_id"><prompt prompt="request_id" locale="en-GB"/></field><field property="actor"><prompt prompt="actor" locale="en-GB"/></field><field property="date"><prompt prompt="date" locale="en-GB"/></field><field property="notes"><prompt prompt="notes" locale="en-GB"/></field><field property="closed"><prompt prompt="closed" locale="en-GB"/></field></form>
|
|
<permission group="issueexperts" permission="noedit"/>
|
|
<permission group="canvassers" permission="read">
|
|
<documentation>But only for electors in their immediate vicinity</documentation>
|
|
</permission>
|
|
<permission group="teamorganisers" permission="none"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
</entity>
|
|
<!--
|
|
entity options already has a key - not generating one
|
|
-->
|
|
<entity table="options" name="options" magnitude="1">
|
|
<documentation>Options in the election or referendum being canvassed on</documentation>
|
|
<key>
|
|
<property required="true" type="string" name="id" column="id" size="32" immutable="true" distinct="all">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<list properties="listed" name="Options"><field property="id"><prompt prompt="id" locale="en-GB"/></field></list>
|
|
<form properties="listed" name="Option"><field property="id"><prompt prompt="id" locale="en-GB"/></field></form>
|
|
<permission group="canvassers" permission="read"/>
|
|
<permission group="teamorganisers" permission="read"/>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
</entity>
|
|
<!--
|
|
entity followupmethods already has a key - not generating one
|
|
-->
|
|
<entity table="followupmethods" name="followupmethods" magnitude="1">
|
|
<key>
|
|
<property required="true" type="string" size="32" name="id" column="id" immutable="true" distinct="all">
|
|
<prompt prompt="id" locale="en-GB"/>
|
|
</property>
|
|
</key>
|
|
<list properties="listed" name="Followupmethods"><field property="id"><prompt prompt="id" locale="en-GB"/></field></list>
|
|
<form properties="listed" name="Followupmethod"><field property="id"><prompt prompt="id" locale="en-GB"/></field></form>
|
|
<permission group="canvassers" permission="read"/>
|
|
<permission group="teamorganisers" permission="read"/>
|
|
<permission group="issueexperts" permission="read"/>
|
|
<permission group="analysts" permission="read"/>
|
|
<permission group="issueeditors" permission="read"/>
|
|
<permission group="admin" permission="all"/>
|
|
</entity>
|
|
</application>
|