Work on getting forms to go. Not yet complete.

This commit is contained in:
Simon Brooke 2018-06-19 08:23:30 +01:00
parent 6f09c0841c
commit 284509fa7b
40 changed files with 866 additions and 684 deletions

View file

@ -0,0 +1,17 @@
# Security and authorisation
Essentially we have six levels of authorisation, at essentially increasing levels of sensitivity.
1. *Canvassers:* Any authenticated user essentially has this level of authorisation. Hence users of the app can all share the same database connections without problem. Therefore there will be one first-class database user for all canvassers, and they will not have individual real database logins.
2. *Issue experts:* Issue experts respond to followup requests. Therefore they must be able to see the queue of requests and the details of the elector making the request. They don't need to see voter intentions and I don't believe the information they do need to see is particularly sensitive. So they too can share a single database-layer login and connection pool; whether this is the same login as used by the canvassers is an implementation detail but I don't believe that it's critical.
3. *Issue editors:* Don't need to see much sensitive data (although they do need to see, in aggregate, what issues are being raised by electors in the field), but they do have the power to dictate the initial responses canvassers make to issues raised, so the information they can *write* is pretty sensitive. We need to be very sure that unauthorised users don't have the power to write this data. So I suggest that issue editors probably should have individual first class database logins.
4. *Team leaders:* Need to be able to monitor the performance of their teams, to invite new users to the system and to block abusive users from the system. Again, these are significant functions which should be well protected from abuse. But we will have at least hundreds, probably thousands of team leaders across Scotland. I would prefer that they each had first class logins, but this may be impractical. But in any case, even if they use a shared login, it should not be the same shared login as used by canvassers.
5. *Analyists* Need broad authorisation to read, but not write or edit, all sensitive data held by the system. They must have individual first class database logins.
6. *Admins* Can necessarily read and write everything. They should definitely each have individual first class database logins.
This means we have a hybrid authentication scheme; for lower levels, application layer security and shared connection pools are adequate. For higher levels, individual connections and database layer authorisation are required. It implies that the routes at the different layers should be separated into separate namespaces with separate authentication functions.

View file

@ -1,7 +1,7 @@
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- File queries.sql -- File queries.sql
-- --
-- autogenerated by adl.to-hugsql-queries at 2018-06-15T09:22:07.884Z -- autogenerated by adl.to-hugsql-queries at 2018-06-17T11:05:53.294Z
-- --
-- See [Application Description -- See [Application Description
-- Language](https://github.com/simon-brooke/adl). -- Language](https://github.com/simon-brooke/adl).

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File application-index.html generated 2018-06-15T08:47:04.322Z by adl.to-selmer-templates. <!-- File application-index.html generated 2018-06-18T10:08:09.799Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-addresses-Address.html generated 2018-06-15T08:47:04.309Z by adl.to-selmer-templates. <!-- File form-addresses-Address.html generated 2018-06-18T10:08:09.773Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -29,63 +29,63 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable addresses %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable addresses %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='address'> <label for='address'>
address address
</label> </label>
{% ifwritable addresses address %} {% ifmemberof admin %}
<input id='address' name='address' type='text' value='{{record.address}}'/> <input id='address' name='address' type='text' value='{{record.address}}'/>
{% else %} {% else %}
{% ifreadable addresses address%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='address' name='address' class='pseudo-widget disabled'> <span id='address' name='address' class='pseudo-widget disabled'>
{{record.address}} {{record.address}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='postcode'> <label for='postcode'>
postcode postcode
</label> </label>
{% ifwritable addresses postcode %} {% ifmemberof admin %}
<input id='postcode' name='postcode' type='text' value='{{record.postcode}}'/> <input id='postcode' name='postcode' type='text' value='{{record.postcode}}'/>
{% else %} {% else %}
{% ifreadable addresses postcode%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='postcode' name='postcode' class='pseudo-widget disabled'> <span id='postcode' name='postcode' class='pseudo-widget disabled'>
{{record.postcode}} {{record.postcode}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='phone'> <label for='phone'>
phone phone
</label> </label>
{% ifwritable addresses phone %} {% ifmemberof admin %}
<input id='phone' name='phone' type='text' value='{{record.phone}}'/> <input id='phone' name='phone' type='text' value='{{record.phone}}'/>
{% else %} {% else %}
{% ifreadable addresses phone%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='phone' name='phone' class='pseudo-widget disabled'> <span id='phone' name='phone' class='pseudo-widget disabled'>
{{record.phone}} {{record.phone}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='district_id'> <label for='district_id'>
district_id district_id
</label> </label>
{% ifwritable addresses district_id %} {% ifmemberof admin %}
<div class='select-box' farside='districts' found='true'> <div class='select-box' farside='districts' found='true'>
<input name='district_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='district_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='district_id' name='district_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='district_id' name='district_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -93,102 +93,102 @@ district_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable addresses district_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='district_id' name='district_id' class='pseudo-widget disabled'> <span id='district_id' name='district_id' class='pseudo-widget disabled'>
{{record.district_id}} {{record.district_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='latitude'> <label for='latitude'>
latitude latitude
</label> </label>
{% ifwritable addresses latitude %} {% ifmemberof admin %}
<input id='latitude' name='latitude' type='number' value='{{record.latitude}}'/> <input id='latitude' name='latitude' type='number' value='{{record.latitude}}'/>
{% else %} {% else %}
{% ifreadable addresses latitude%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='latitude' name='latitude' class='pseudo-widget disabled'> <span id='latitude' name='latitude' class='pseudo-widget disabled'>
{{record.latitude}} {{record.latitude}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='longitude'> <label for='longitude'>
longitude longitude
</label> </label>
{% ifwritable addresses longitude %} {% ifmemberof admin %}
<input id='longitude' name='longitude' type='number' value='{{record.longitude}}'/> <input id='longitude' name='longitude' type='number' value='{{record.longitude}}'/>
{% else %} {% else %}
{% ifreadable addresses longitude%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='longitude' name='longitude' class='pseudo-widget disabled'> <span id='longitude' name='longitude' class='pseudo-widget disabled'>
{{record.longitude}} {{record.longitude}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable addresses %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable addresses %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='address'> <label for='address'>
address address
</label> </label>
{% ifwritable addresses address %} {% ifmemberof admin %}
<input id='address' name='address' type='text' value='{{record.address}}'/> <input id='address' name='address' type='text' value='{{record.address}}'/>
{% else %} {% else %}
{% ifreadable addresses address%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='address' name='address' class='pseudo-widget disabled'> <span id='address' name='address' class='pseudo-widget disabled'>
{{record.address}} {{record.address}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='postcode'> <label for='postcode'>
postcode postcode
</label> </label>
{% ifwritable addresses postcode %} {% ifmemberof admin %}
<input id='postcode' name='postcode' type='text' value='{{record.postcode}}'/> <input id='postcode' name='postcode' type='text' value='{{record.postcode}}'/>
{% else %} {% else %}
{% ifreadable addresses postcode%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='postcode' name='postcode' class='pseudo-widget disabled'> <span id='postcode' name='postcode' class='pseudo-widget disabled'>
{{record.postcode}} {{record.postcode}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='phone'> <label for='phone'>
phone phone
</label> </label>
{% ifwritable addresses phone %} {% ifmemberof admin %}
<input id='phone' name='phone' type='text' value='{{record.phone}}'/> <input id='phone' name='phone' type='text' value='{{record.phone}}'/>
{% else %} {% else %}
{% ifreadable addresses phone%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='phone' name='phone' class='pseudo-widget disabled'> <span id='phone' name='phone' class='pseudo-widget disabled'>
{{record.phone}} {{record.phone}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='district_id'> <label for='district_id'>
district_id district_id
</label> </label>
{% ifwritable addresses district_id %} {% ifmemberof admin %}
<div class='select-box' farside='districts' found='true'> <div class='select-box' farside='districts' found='true'>
<input name='district_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='district_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='district_id' name='district_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='district_id' name='district_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -196,40 +196,40 @@ district_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable addresses district_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='district_id' name='district_id' class='pseudo-widget disabled'> <span id='district_id' name='district_id' class='pseudo-widget disabled'>
{{record.district_id}} {{record.district_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='latitude'> <label for='latitude'>
latitude latitude
</label> </label>
{% ifwritable addresses latitude %} {% ifmemberof admin %}
<input id='latitude' name='latitude' type='number' value='{{record.latitude}}'/> <input id='latitude' name='latitude' type='number' value='{{record.latitude}}'/>
{% else %} {% else %}
{% ifreadable addresses latitude%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='latitude' name='latitude' class='pseudo-widget disabled'> <span id='latitude' name='latitude' class='pseudo-widget disabled'>
{{record.latitude}} {{record.latitude}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='longitude'> <label for='longitude'>
longitude longitude
</label> </label>
{% ifwritable addresses longitude %} {% ifmemberof admin %}
<input id='longitude' name='longitude' type='number' value='{{record.longitude}}'/> <input id='longitude' name='longitude' type='number' value='{{record.longitude}}'/>
{% else %} {% else %}
{% ifreadable addresses longitude%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='longitude' name='longitude' class='pseudo-widget disabled'> <span id='longitude' name='longitude' class='pseudo-widget disabled'>
{{record.longitude}} {{record.longitude}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-authorities-Authority.html generated 2018-06-15T08:47:04.329Z by adl.to-selmer-templates. <!-- File form-authorities-Authority.html generated 2018-06-18T10:08:09.818Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -28,43 +28,43 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable authorities id %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable authorities id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable authorities %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable authorities %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable authorities %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable authorities %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-canvassers-Canvasser.html generated 2018-06-15T08:47:04.331Z by adl.to-selmer-templates. <!-- File form-canvassers-Canvasser.html generated 2018-06-18T10:08:09.823Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -29,49 +29,49 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable canvassers %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable canvassers %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='username'> <label for='username'>
username username
</label> </label>
{% ifwritable canvassers username %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<input id='username' name='username' type='text' value='{{record.username}}'/> <input id='username' name='username' type='text' value='{{record.username}}'/>
{% else %} {% else %}
{% ifreadable canvassers username%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='username' name='username' class='pseudo-widget disabled'> <span id='username' name='username' class='pseudo-widget disabled'>
{{record.username}} {{record.username}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='fullname'> <label for='fullname'>
fullname fullname
</label> </label>
{% ifwritable canvassers fullname %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<input id='fullname' name='fullname' type='text' value='{{record.fullname}}'/> <input id='fullname' name='fullname' type='text' value='{{record.fullname}}'/>
{% else %} {% else %}
{% ifreadable canvassers fullname%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='fullname' name='fullname' class='pseudo-widget disabled'> <span id='fullname' name='fullname' class='pseudo-widget disabled'>
{{record.fullname}} {{record.fullname}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='elector_id'> <label for='elector_id'>
elector_id elector_id
</label> </label>
{% ifwritable canvassers elector_id %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<div class='select-box' farside='electors' found='true'> <div class='select-box' farside='electors' found='true'>
<input name='elector_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='elector_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='elector_id' name='elector_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='elector_id' name='elector_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -79,18 +79,18 @@ elector_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable canvassers elector_id%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='elector_id' name='elector_id' class='pseudo-widget disabled'> <span id='elector_id' name='elector_id' class='pseudo-widget disabled'>
{{record.elector_id}} {{record.elector_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='address_id'> <label for='address_id'>
address_id address_id
</label> </label>
{% ifwritable canvassers address_id %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<div class='select-box' farside='addresses' found='true'> <div class='select-box' farside='addresses' found='true'>
<input name='address_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='address_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='address_id' name='address_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='address_id' name='address_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -98,46 +98,46 @@ address_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable canvassers address_id%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='address_id' name='address_id' class='pseudo-widget disabled'> <span id='address_id' name='address_id' class='pseudo-widget disabled'>
{{record.address_id}} {{record.address_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='phone'> <label for='phone'>
phone phone
</label> </label>
{% ifwritable canvassers phone %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<input id='phone' name='phone' type='text' value='{{record.phone}}'/> <input id='phone' name='phone' type='text' value='{{record.phone}}'/>
{% else %} {% else %}
{% ifreadable canvassers phone%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='phone' name='phone' class='pseudo-widget disabled'> <span id='phone' name='phone' class='pseudo-widget disabled'>
{{record.phone}} {{record.phone}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='email'> <label for='email'>
email email
</label> </label>
{% ifwritable canvassers email %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<input id='email' name='email' type='text' value='{{record.email}}'/> <input id='email' name='email' type='text' value='{{record.email}}'/>
{% else %} {% else %}
{% ifreadable canvassers email%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='email' name='email' class='pseudo-widget disabled'> <span id='email' name='email' class='pseudo-widget disabled'>
{{record.email}} {{record.email}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='authority_id'> <label for='authority_id'>
authority_id authority_id
</label> </label>
{% ifwritable canvassers authority_id %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<div class='select-box' farside='authorities' found='true'> <div class='select-box' farside='authorities' found='true'>
<input name='authority_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='authority_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='authority_id' name='authority_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='authority_id' name='authority_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -145,74 +145,74 @@ authority_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable canvassers authority_id%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='authority_id' name='authority_id' class='pseudo-widget disabled'> <span id='authority_id' name='authority_id' class='pseudo-widget disabled'>
{{record.authority_id}} {{record.authority_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='authorised'> <label for='authorised'>
authorised authorised
</label> </label>
{% ifwritable canvassers authorised %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<input id='authorised' name='authorised' type='checkbox' value='{{record.authorised}}'/> <input id='authorised' name='authorised' type='checkbox' value='{{record.authorised}}'/>
{% else %} {% else %}
{% ifreadable canvassers authorised%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='authorised' name='authorised' class='pseudo-widget disabled'> <span id='authorised' name='authorised' class='pseudo-widget disabled'>
{{record.authorised}} {{record.authorised}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable canvassers %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable canvassers %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='username'> <label for='username'>
username username
</label> </label>
{% ifwritable canvassers username %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<input id='username' name='username' type='text' value='{{record.username}}'/> <input id='username' name='username' type='text' value='{{record.username}}'/>
{% else %} {% else %}
{% ifreadable canvassers username%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='username' name='username' class='pseudo-widget disabled'> <span id='username' name='username' class='pseudo-widget disabled'>
{{record.username}} {{record.username}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='fullname'> <label for='fullname'>
fullname fullname
</label> </label>
{% ifwritable canvassers fullname %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<input id='fullname' name='fullname' type='text' value='{{record.fullname}}'/> <input id='fullname' name='fullname' type='text' value='{{record.fullname}}'/>
{% else %} {% else %}
{% ifreadable canvassers fullname%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='fullname' name='fullname' class='pseudo-widget disabled'> <span id='fullname' name='fullname' class='pseudo-widget disabled'>
{{record.fullname}} {{record.fullname}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='elector_id'> <label for='elector_id'>
elector_id elector_id
</label> </label>
{% ifwritable canvassers elector_id %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<div class='select-box' farside='electors' found='true'> <div class='select-box' farside='electors' found='true'>
<input name='elector_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='elector_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='elector_id' name='elector_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='elector_id' name='elector_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -220,18 +220,18 @@ elector_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable canvassers elector_id%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='elector_id' name='elector_id' class='pseudo-widget disabled'> <span id='elector_id' name='elector_id' class='pseudo-widget disabled'>
{{record.elector_id}} {{record.elector_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='address_id'> <label for='address_id'>
address_id address_id
</label> </label>
{% ifwritable canvassers address_id %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<div class='select-box' farside='addresses' found='true'> <div class='select-box' farside='addresses' found='true'>
<input name='address_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='address_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='address_id' name='address_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='address_id' name='address_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -239,46 +239,46 @@ address_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable canvassers address_id%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='address_id' name='address_id' class='pseudo-widget disabled'> <span id='address_id' name='address_id' class='pseudo-widget disabled'>
{{record.address_id}} {{record.address_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='phone'> <label for='phone'>
phone phone
</label> </label>
{% ifwritable canvassers phone %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<input id='phone' name='phone' type='text' value='{{record.phone}}'/> <input id='phone' name='phone' type='text' value='{{record.phone}}'/>
{% else %} {% else %}
{% ifreadable canvassers phone%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='phone' name='phone' class='pseudo-widget disabled'> <span id='phone' name='phone' class='pseudo-widget disabled'>
{{record.phone}} {{record.phone}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='email'> <label for='email'>
email email
</label> </label>
{% ifwritable canvassers email %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<input id='email' name='email' type='text' value='{{record.email}}'/> <input id='email' name='email' type='text' value='{{record.email}}'/>
{% else %} {% else %}
{% ifreadable canvassers email%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='email' name='email' class='pseudo-widget disabled'> <span id='email' name='email' class='pseudo-widget disabled'>
{{record.email}} {{record.email}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='authority_id'> <label for='authority_id'>
authority_id authority_id
</label> </label>
{% ifwritable canvassers authority_id %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<div class='select-box' farside='authorities' found='true'> <div class='select-box' farside='authorities' found='true'>
<input name='authority_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='authority_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='authority_id' name='authority_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='authority_id' name='authority_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -286,44 +286,44 @@ authority_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable canvassers authority_id%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='authority_id' name='authority_id' class='pseudo-widget disabled'> <span id='authority_id' name='authority_id' class='pseudo-widget disabled'>
{{record.authority_id}} {{record.authority_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='authorised'> <label for='authorised'>
authorised authorised
</label> </label>
{% ifwritable canvassers authorised %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<input id='authorised' name='authorised' type='checkbox' value='{{record.authorised}}'/> <input id='authorised' name='authorised' type='checkbox' value='{{record.authorised}}'/>
{% else %} {% else %}
{% ifreadable canvassers authorised%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='authorised' name='authorised' class='pseudo-widget disabled'> <span id='authorised' name='authorised' class='pseudo-widget disabled'>
{{record.authorised}} {{record.authorised}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='roles'> <label for='roles'>
roles roles
</label> </label>
{% ifwritable canvassers roles %} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers admin %}
<div class='select-box' farside='roles' found='true'> <div class='select-box' farside='roles' found='true'>
<select id='roles' name='roles' multiple='multiple'> <select id='roles' name='roles' multiple='multiple'>
{% for record in roles %}<option value='{{record.role_id}}'>{{record.name}}</option>{% endfor %} {% for record in roles %}<option value='{{record.role_id}}'>{{record.name}}</option>{% endfor %}
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable canvassers roles%} {% ifmemberof canvassers teamorganisers admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='roles' name='roles' class='pseudo-widget disabled'> <span id='roles' name='roles' class='pseudo-widget disabled'>
{{record.roles}} {{record.roles}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-districts-District.html generated 2018-06-15T08:47:04.299Z by adl.to-selmer-templates. <!-- File form-districts-District.html generated 2018-06-18T10:08:09.756Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -29,57 +29,57 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable districts %} {% ifmemberof admin admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable districts %} {% ifmemberof public admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='name'> <label for='name'>
name name
</label> </label>
{% ifwritable districts name %} {% ifmemberof admin admin %}
<input id='name' name='name' type='text' value='{{record.name}}'/> <input id='name' name='name' type='text' value='{{record.name}}'/>
{% else %} {% else %}
{% ifreadable districts name%} {% ifmemberof public admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='name' name='name' class='pseudo-widget disabled'> <span id='name' name='name' class='pseudo-widget disabled'>
{{record.name}} {{record.name}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable districts %} {% ifmemberof admin admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable districts %} {% ifmemberof public admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='name'> <label for='name'>
name name
</label> </label>
{% ifwritable districts name %} {% ifmemberof admin admin %}
<input id='name' name='name' type='text' value='{{record.name}}'/> <input id='name' name='name' type='text' value='{{record.name}}'/>
{% else %} {% else %}
{% ifreadable districts name%} {% ifmemberof public admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='name' name='name' class='pseudo-widget disabled'> <span id='name' name='name' class='pseudo-widget disabled'>
{{record.name}} {{record.name}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-dwellings-Dwelling.html generated 2018-06-15T08:47:04.340Z by adl.to-selmer-templates. <!-- File form-dwellings-Dwelling.html generated 2018-06-18T10:08:09.847Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -29,21 +29,21 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable dwellings %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable dwellings %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='address_id'> <label for='address_id'>
address_id address_id
</label> </label>
{% ifwritable dwellings address_id %} {% ifmemberof admin %}
<div class='select-box' farside='addresses' found='true'> <div class='select-box' farside='addresses' found='true'>
<input name='address_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='address_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='address_id' name='address_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='address_id' name='address_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -51,46 +51,46 @@ address_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable dwellings address_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='address_id' name='address_id' class='pseudo-widget disabled'> <span id='address_id' name='address_id' class='pseudo-widget disabled'>
{{record.address_id}} {{record.address_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='sub-address'> <label for='sub-address'>
sub-address sub-address
</label> </label>
{% ifwritable dwellings sub-address %} {% ifmemberof admin %}
<input id='sub-address' name='sub-address' type='text' value='{{record.sub-address}}'/> <input id='sub-address' name='sub-address' type='text' value='{{record.sub-address}}'/>
{% else %} {% else %}
{% ifreadable dwellings sub-address%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='sub-address' name='sub-address' class='pseudo-widget disabled'> <span id='sub-address' name='sub-address' class='pseudo-widget disabled'>
{{record.sub-address}} {{record.sub-address}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable dwellings %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable dwellings %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='address_id'> <label for='address_id'>
address_id address_id
</label> </label>
{% ifwritable dwellings address_id %} {% ifmemberof admin %}
<div class='select-box' farside='addresses' found='true'> <div class='select-box' farside='addresses' found='true'>
<input name='address_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='address_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='address_id' name='address_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='address_id' name='address_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -98,26 +98,26 @@ address_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable dwellings address_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='address_id' name='address_id' class='pseudo-widget disabled'> <span id='address_id' name='address_id' class='pseudo-widget disabled'>
{{record.address_id}} {{record.address_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='sub-address'> <label for='sub-address'>
sub-address sub-address
</label> </label>
{% ifwritable dwellings sub-address %} {% ifmemberof admin %}
<input id='sub-address' name='sub-address' type='text' value='{{record.sub-address}}'/> <input id='sub-address' name='sub-address' type='text' value='{{record.sub-address}}'/>
{% else %} {% else %}
{% ifreadable dwellings sub-address%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='sub-address' name='sub-address' class='pseudo-widget disabled'> <span id='sub-address' name='sub-address' class='pseudo-widget disabled'>
{{record.sub-address}} {{record.sub-address}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-electors-Elector.html generated 2018-06-15T08:47:04.327Z by adl.to-selmer-templates. <!-- File form-electors-Elector.html generated 2018-06-18T10:08:09.808Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -29,35 +29,35 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable electors %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable electors %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='name'> <label for='name'>
name name
</label> </label>
{% ifwritable electors name %} {% ifmemberof admin %}
<input id='name' name='name' type='text' value='{{record.name}}'/> <input id='name' name='name' type='text' value='{{record.name}}'/>
{% else %} {% else %}
{% ifreadable electors name%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='name' name='name' class='pseudo-widget disabled'> <span id='name' name='name' class='pseudo-widget disabled'>
{{record.name}} {{record.name}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='dwelling_id'> <label for='dwelling_id'>
dwelling_id dwelling_id
</label> </label>
{% ifwritable electors dwelling_id %} {% ifmemberof admin %}
<div class='select-box' farside='dwellings' found='true'> <div class='select-box' farside='dwellings' found='true'>
<input name='dwelling_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='dwelling_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='dwelling_id' name='dwelling_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='dwelling_id' name='dwelling_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -65,92 +65,92 @@ dwelling_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable electors dwelling_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='dwelling_id' name='dwelling_id' class='pseudo-widget disabled'> <span id='dwelling_id' name='dwelling_id' class='pseudo-widget disabled'>
{{record.dwelling_id}} {{record.dwelling_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='phone'> <label for='phone'>
phone phone
</label> </label>
{% ifwritable electors phone %} {% ifmemberof admin %}
<input id='phone' name='phone' type='text' value='{{record.phone}}'/> <input id='phone' name='phone' type='text' value='{{record.phone}}'/>
{% else %} {% else %}
{% ifreadable electors phone%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='phone' name='phone' class='pseudo-widget disabled'> <span id='phone' name='phone' class='pseudo-widget disabled'>
{{record.phone}} {{record.phone}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='email'> <label for='email'>
email email
</label> </label>
{% ifwritable electors email %} {% ifmemberof admin %}
<input id='email' name='email' type='text' value='{{record.email}}'/> <input id='email' name='email' type='text' value='{{record.email}}'/>
{% else %} {% else %}
{% ifreadable electors email%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='email' name='email' class='pseudo-widget disabled'> <span id='email' name='email' class='pseudo-widget disabled'>
{{record.email}} {{record.email}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='gender'> <label for='gender'>
gender gender
</label> </label>
{% ifwritable electors gender %} {% ifmemberof admin %}
<div class='select-box' farside='genders' found='true'> <div class='select-box' farside='genders' found='true'>
<select id='gender' name='gender'> <select id='gender' name='gender'>
{% for record in genders %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %} {% for record in genders %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %}
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable electors gender%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='gender' name='gender' class='pseudo-widget disabled'> <span id='gender' name='gender' class='pseudo-widget disabled'>
{{record.gender}} {{record.gender}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable electors %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable electors %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='name'> <label for='name'>
name name
</label> </label>
{% ifwritable electors name %} {% ifmemberof admin %}
<input id='name' name='name' type='text' value='{{record.name}}'/> <input id='name' name='name' type='text' value='{{record.name}}'/>
{% else %} {% else %}
{% ifreadable electors name%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='name' name='name' class='pseudo-widget disabled'> <span id='name' name='name' class='pseudo-widget disabled'>
{{record.name}} {{record.name}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='dwelling_id'> <label for='dwelling_id'>
dwelling_id dwelling_id
</label> </label>
{% ifwritable electors dwelling_id %} {% ifmemberof admin %}
<div class='select-box' farside='dwellings' found='true'> <div class='select-box' farside='dwellings' found='true'>
<input name='dwelling_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='dwelling_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='dwelling_id' name='dwelling_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='dwelling_id' name='dwelling_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -158,58 +158,58 @@ dwelling_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable electors dwelling_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='dwelling_id' name='dwelling_id' class='pseudo-widget disabled'> <span id='dwelling_id' name='dwelling_id' class='pseudo-widget disabled'>
{{record.dwelling_id}} {{record.dwelling_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='phone'> <label for='phone'>
phone phone
</label> </label>
{% ifwritable electors phone %} {% ifmemberof admin %}
<input id='phone' name='phone' type='text' value='{{record.phone}}'/> <input id='phone' name='phone' type='text' value='{{record.phone}}'/>
{% else %} {% else %}
{% ifreadable electors phone%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='phone' name='phone' class='pseudo-widget disabled'> <span id='phone' name='phone' class='pseudo-widget disabled'>
{{record.phone}} {{record.phone}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='email'> <label for='email'>
email email
</label> </label>
{% ifwritable electors email %} {% ifmemberof admin %}
<input id='email' name='email' type='text' value='{{record.email}}'/> <input id='email' name='email' type='text' value='{{record.email}}'/>
{% else %} {% else %}
{% ifreadable electors email%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='email' name='email' class='pseudo-widget disabled'> <span id='email' name='email' class='pseudo-widget disabled'>
{{record.email}} {{record.email}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='gender'> <label for='gender'>
gender gender
</label> </label>
{% ifwritable electors gender %} {% ifmemberof admin %}
<div class='select-box' farside='genders' found='true'> <div class='select-box' farside='genders' found='true'>
<select id='gender' name='gender'> <select id='gender' name='gender'>
{% for record in genders %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %} {% for record in genders %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %}
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable electors gender%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='gender' name='gender' class='pseudo-widget disabled'> <span id='gender' name='gender' class='pseudo-widget disabled'>
{{record.gender}} {{record.gender}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-followupactions-Followupaction.html generated 2018-06-15T08:47:04.342Z by adl.to-selmer-templates. <!-- File form-followupactions-Followupaction.html generated 2018-06-18T10:08:09.853Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -29,21 +29,21 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable followupactions %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable followupactions %} {% ifmemberof issueexperts canvassers analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='request_id'> <label for='request_id'>
request_id request_id
</label> </label>
{% ifwritable followupactions request_id %} {% ifmemberof admin %}
<div class='select-box' farside='followuprequests' found='true'> <div class='select-box' farside='followuprequests' found='true'>
<input name='request_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='request_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='request_id' name='request_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='request_id' name='request_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -51,18 +51,18 @@ request_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable followupactions request_id%} {% ifmemberof issueexperts canvassers analysts issueeditors admin %}
<span id='request_id' name='request_id' class='pseudo-widget disabled'> <span id='request_id' name='request_id' class='pseudo-widget disabled'>
{{record.request_id}} {{record.request_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='actor'> <label for='actor'>
actor actor
</label> </label>
{% ifwritable followupactions actor %} {% ifmemberof admin %}
<div class='select-box' farside='canvassers' found='true'> <div class='select-box' farside='canvassers' found='true'>
<input name='actor-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='actor-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='actor' name='actor' comment='JavaScript stuff to fix up aynchronous loading'> <select id='actor' name='actor' comment='JavaScript stuff to fix up aynchronous loading'>
@ -70,74 +70,74 @@ actor
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable followupactions actor%} {% ifmemberof issueexperts canvassers analysts issueeditors admin %}
<span id='actor' name='actor' class='pseudo-widget disabled'> <span id='actor' name='actor' class='pseudo-widget disabled'>
{{record.actor}} {{record.actor}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='date'> <label for='date'>
date date
</label> </label>
{% ifwritable followupactions date %} {% ifmemberof admin %}
<input id='date' name='date' type='text' value='{{record.date}}'/> <input id='date' name='date' type='text' value='{{record.date}}'/>
{% else %} {% else %}
{% ifreadable followupactions date%} {% ifmemberof issueexperts canvassers analysts issueeditors admin %}
<span id='date' name='date' class='pseudo-widget disabled'> <span id='date' name='date' class='pseudo-widget disabled'>
{{record.date}} {{record.date}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='notes'> <label for='notes'>
notes notes
</label> </label>
{% ifwritable followupactions notes %} {% ifmemberof admin %}
<input id='notes' name='notes' type='text' value='{{record.notes}}'/> <input id='notes' name='notes' type='text' value='{{record.notes}}'/>
{% else %} {% else %}
{% ifreadable followupactions notes%} {% ifmemberof issueexperts canvassers analysts issueeditors admin %}
<span id='notes' name='notes' class='pseudo-widget disabled'> <span id='notes' name='notes' class='pseudo-widget disabled'>
{{record.notes}} {{record.notes}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='closed'> <label for='closed'>
closed closed
</label> </label>
{% ifwritable followupactions closed %} {% ifmemberof admin %}
<input id='closed' name='closed' type='checkbox' value='{{record.closed}}'/> <input id='closed' name='closed' type='checkbox' value='{{record.closed}}'/>
{% else %} {% else %}
{% ifreadable followupactions closed%} {% ifmemberof issueexperts canvassers analysts issueeditors admin %}
<span id='closed' name='closed' class='pseudo-widget disabled'> <span id='closed' name='closed' class='pseudo-widget disabled'>
{{record.closed}} {{record.closed}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable followupactions %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable followupactions %} {% ifmemberof issueexperts canvassers analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='request_id'> <label for='request_id'>
request_id request_id
</label> </label>
{% ifwritable followupactions request_id %} {% ifmemberof admin %}
<div class='select-box' farside='followuprequests' found='true'> <div class='select-box' farside='followuprequests' found='true'>
<input name='request_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='request_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='request_id' name='request_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='request_id' name='request_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -145,18 +145,18 @@ request_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable followupactions request_id%} {% ifmemberof issueexperts canvassers analysts issueeditors admin %}
<span id='request_id' name='request_id' class='pseudo-widget disabled'> <span id='request_id' name='request_id' class='pseudo-widget disabled'>
{{record.request_id}} {{record.request_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='actor'> <label for='actor'>
actor actor
</label> </label>
{% ifwritable followupactions actor %} {% ifmemberof admin %}
<div class='select-box' farside='canvassers' found='true'> <div class='select-box' farside='canvassers' found='true'>
<input name='actor-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='actor-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='actor' name='actor' comment='JavaScript stuff to fix up aynchronous loading'> <select id='actor' name='actor' comment='JavaScript stuff to fix up aynchronous loading'>
@ -164,54 +164,54 @@ actor
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable followupactions actor%} {% ifmemberof issueexperts canvassers analysts issueeditors admin %}
<span id='actor' name='actor' class='pseudo-widget disabled'> <span id='actor' name='actor' class='pseudo-widget disabled'>
{{record.actor}} {{record.actor}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='date'> <label for='date'>
date date
</label> </label>
{% ifwritable followupactions date %} {% ifmemberof admin %}
<input id='date' name='date' type='text' value='{{record.date}}'/> <input id='date' name='date' type='text' value='{{record.date}}'/>
{% else %} {% else %}
{% ifreadable followupactions date%} {% ifmemberof issueexperts canvassers analysts issueeditors admin %}
<span id='date' name='date' class='pseudo-widget disabled'> <span id='date' name='date' class='pseudo-widget disabled'>
{{record.date}} {{record.date}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='notes'> <label for='notes'>
notes notes
</label> </label>
{% ifwritable followupactions notes %} {% ifmemberof admin %}
<input id='notes' name='notes' type='text' value='{{record.notes}}'/> <input id='notes' name='notes' type='text' value='{{record.notes}}'/>
{% else %} {% else %}
{% ifreadable followupactions notes%} {% ifmemberof issueexperts canvassers analysts issueeditors admin %}
<span id='notes' name='notes' class='pseudo-widget disabled'> <span id='notes' name='notes' class='pseudo-widget disabled'>
{{record.notes}} {{record.notes}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='closed'> <label for='closed'>
closed closed
</label> </label>
{% ifwritable followupactions closed %} {% ifmemberof admin %}
<input id='closed' name='closed' type='checkbox' value='{{record.closed}}'/> <input id='closed' name='closed' type='checkbox' value='{{record.closed}}'/>
{% else %} {% else %}
{% ifreadable followupactions closed%} {% ifmemberof issueexperts canvassers analysts issueeditors admin %}
<span id='closed' name='closed' class='pseudo-widget disabled'> <span id='closed' name='closed' class='pseudo-widget disabled'>
{{record.closed}} {{record.closed}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-followupmethods-Followupmethod.html generated 2018-06-15T08:47:04.344Z by adl.to-selmer-templates. <!-- File form-followupmethods-Followupmethod.html generated 2018-06-18T10:08:09.859Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -28,43 +28,43 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable followupmethods id %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable followupmethods id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable followupmethods %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable followupmethods %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable followupmethods %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable followupmethods %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-followuprequests-Followuprequest.html generated 2018-06-15T08:47:04.302Z by adl.to-selmer-templates. <!-- File form-followuprequests-Followuprequest.html generated 2018-06-18T10:08:09.760Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -29,21 +29,21 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable followuprequests %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable followuprequests %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='elector_id'> <label for='elector_id'>
elector_id elector_id
</label> </label>
{% ifwritable followuprequests elector_id %} {% ifmemberof admin %}
<div class='select-box' farside='electors' found='true'> <div class='select-box' farside='electors' found='true'>
<input name='elector_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='elector_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='elector_id' name='elector_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='elector_id' name='elector_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -51,18 +51,18 @@ elector_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable followuprequests elector_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='elector_id' name='elector_id' class='pseudo-widget disabled'> <span id='elector_id' name='elector_id' class='pseudo-widget disabled'>
{{record.elector_id}} {{record.elector_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='visit_id'> <label for='visit_id'>
visit_id visit_id
</label> </label>
{% ifwritable followuprequests visit_id %} {% ifmemberof admin %}
<div class='select-box' farside='visits' found='true'> <div class='select-box' farside='visits' found='true'>
<input name='visit_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='visit_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='visit_id' name='visit_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='visit_id' name='visit_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -70,68 +70,68 @@ visit_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable followuprequests visit_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='visit_id' name='visit_id' class='pseudo-widget disabled'> <span id='visit_id' name='visit_id' class='pseudo-widget disabled'>
{{record.visit_id}} {{record.visit_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='issue_id'> <label for='issue_id'>
issue_id issue_id
</label> </label>
{% ifwritable followuprequests issue_id %} {% ifmemberof admin %}
<div class='select-box' farside='issues' found='true'> <div class='select-box' farside='issues' found='true'>
<select id='issue_id' name='issue_id'> <select id='issue_id' name='issue_id'>
{% for record in issues %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %} {% for record in issues %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %}
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable followuprequests issue_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='issue_id' name='issue_id' class='pseudo-widget disabled'> <span id='issue_id' name='issue_id' class='pseudo-widget disabled'>
{{record.issue_id}} {{record.issue_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='method_id'> <label for='method_id'>
method_id method_id
</label> </label>
{% ifwritable followuprequests method_id %} {% ifmemberof admin %}
<div class='select-box' farside='followupmethods' found='true'> <div class='select-box' farside='followupmethods' found='true'>
<select id='method_id' name='method_id'> <select id='method_id' name='method_id'>
{% for record in followupmethods %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %} {% for record in followupmethods %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %}
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable followuprequests method_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='method_id' name='method_id' class='pseudo-widget disabled'> <span id='method_id' name='method_id' class='pseudo-widget disabled'>
{{record.method_id}} {{record.method_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable followuprequests %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable followuprequests %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='elector_id'> <label for='elector_id'>
elector_id elector_id
</label> </label>
{% ifwritable followuprequests elector_id %} {% ifmemberof admin %}
<div class='select-box' farside='electors' found='true'> <div class='select-box' farside='electors' found='true'>
<input name='elector_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='elector_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='elector_id' name='elector_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='elector_id' name='elector_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -139,18 +139,18 @@ elector_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable followuprequests elector_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='elector_id' name='elector_id' class='pseudo-widget disabled'> <span id='elector_id' name='elector_id' class='pseudo-widget disabled'>
{{record.elector_id}} {{record.elector_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='visit_id'> <label for='visit_id'>
visit_id visit_id
</label> </label>
{% ifwritable followuprequests visit_id %} {% ifmemberof admin %}
<div class='select-box' farside='visits' found='true'> <div class='select-box' farside='visits' found='true'>
<input name='visit_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='visit_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='visit_id' name='visit_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='visit_id' name='visit_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -158,48 +158,48 @@ visit_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable followuprequests visit_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='visit_id' name='visit_id' class='pseudo-widget disabled'> <span id='visit_id' name='visit_id' class='pseudo-widget disabled'>
{{record.visit_id}} {{record.visit_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='issue_id'> <label for='issue_id'>
issue_id issue_id
</label> </label>
{% ifwritable followuprequests issue_id %} {% ifmemberof admin %}
<div class='select-box' farside='issues' found='true'> <div class='select-box' farside='issues' found='true'>
<select id='issue_id' name='issue_id'> <select id='issue_id' name='issue_id'>
{% for record in issues %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %} {% for record in issues %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %}
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable followuprequests issue_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='issue_id' name='issue_id' class='pseudo-widget disabled'> <span id='issue_id' name='issue_id' class='pseudo-widget disabled'>
{{record.issue_id}} {{record.issue_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='method_id'> <label for='method_id'>
method_id method_id
</label> </label>
{% ifwritable followuprequests method_id %} {% ifmemberof admin %}
<div class='select-box' farside='followupmethods' found='true'> <div class='select-box' farside='followupmethods' found='true'>
<select id='method_id' name='method_id'> <select id='method_id' name='method_id'>
{% for record in followupmethods %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %} {% for record in followupmethods %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %}
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable followuprequests method_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='method_id' name='method_id' class='pseudo-widget disabled'> <span id='method_id' name='method_id' class='pseudo-widget disabled'>
{{record.method_id}} {{record.method_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-genders-Gender.html generated 2018-06-15T08:47:04.293Z by adl.to-selmer-templates. <!-- File form-genders-Gender.html generated 2018-06-18T10:08:09.742Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -28,43 +28,43 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable genders id %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable genders id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable genders %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable genders %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable genders %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable genders %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-intentions-Intention.html generated 2018-06-15T08:47:04.336Z by adl.to-selmer-templates. <!-- File form-intentions-Intention.html generated 2018-06-18T10:08:09.837Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -29,7 +29,7 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='visit_id'> <label for='visit_id'>
visit_id visit_id
</label> </label>
{% ifwritable intentions visit_id %} {% ifmemberof admin %}
<div class='select-box' farside='visits' found='true'> <div class='select-box' farside='visits' found='true'>
<input name='visit_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='visit_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='visit_id' name='visit_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='visit_id' name='visit_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -37,18 +37,18 @@ visit_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable intentions visit_id%} {% ifmemberof canvassers analysts admin %}
<span id='visit_id' name='visit_id' class='pseudo-widget disabled'> <span id='visit_id' name='visit_id' class='pseudo-widget disabled'>
{{record.visit_id}} {{record.visit_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='elector_id'> <label for='elector_id'>
elector_id elector_id
</label> </label>
{% ifwritable intentions elector_id %} {% ifmemberof admin %}
<div class='select-box' farside='electors' found='true'> <div class='select-box' farside='electors' found='true'>
<input name='elector_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='elector_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='elector_id' name='elector_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='elector_id' name='elector_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -56,36 +56,36 @@ elector_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable intentions elector_id%} {% ifmemberof canvassers analysts admin %}
<span id='elector_id' name='elector_id' class='pseudo-widget disabled'> <span id='elector_id' name='elector_id' class='pseudo-widget disabled'>
{{record.elector_id}} {{record.elector_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='option_id'> <label for='option_id'>
option_id option_id
</label> </label>
{% ifwritable intentions option_id %} {% ifmemberof admin %}
<div class='select-box' farside='options' found='true'> <div class='select-box' farside='options' found='true'>
<select id='option_id' name='option_id'> <select id='option_id' name='option_id'>
{% for record in options %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %} {% for record in options %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %}
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable intentions option_id%} {% ifmemberof canvassers analysts admin %}
<span id='option_id' name='option_id' class='pseudo-widget disabled'> <span id='option_id' name='option_id' class='pseudo-widget disabled'>
{{record.option_id}} {{record.option_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='visit_id'> <label for='visit_id'>
visit_id visit_id
</label> </label>
{% ifwritable intentions visit_id %} {% ifmemberof admin %}
<div class='select-box' farside='visits' found='true'> <div class='select-box' farside='visits' found='true'>
<input name='visit_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='visit_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='visit_id' name='visit_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='visit_id' name='visit_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -93,18 +93,18 @@ visit_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable intentions visit_id%} {% ifmemberof canvassers analysts admin %}
<span id='visit_id' name='visit_id' class='pseudo-widget disabled'> <span id='visit_id' name='visit_id' class='pseudo-widget disabled'>
{{record.visit_id}} {{record.visit_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='elector_id'> <label for='elector_id'>
elector_id elector_id
</label> </label>
{% ifwritable intentions elector_id %} {% ifmemberof admin %}
<div class='select-box' farside='electors' found='true'> <div class='select-box' farside='electors' found='true'>
<input name='elector_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='elector_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='elector_id' name='elector_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='elector_id' name='elector_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -112,30 +112,30 @@ elector_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable intentions elector_id%} {% ifmemberof canvassers analysts admin %}
<span id='elector_id' name='elector_id' class='pseudo-widget disabled'> <span id='elector_id' name='elector_id' class='pseudo-widget disabled'>
{{record.elector_id}} {{record.elector_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='option_id'> <label for='option_id'>
option_id option_id
</label> </label>
{% ifwritable intentions option_id %} {% ifmemberof admin %}
<div class='select-box' farside='options' found='true'> <div class='select-box' farside='options' found='true'>
<select id='option_id' name='option_id'> <select id='option_id' name='option_id'>
{% for record in options %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %} {% for record in options %}<option value='{{record.id}}'>{{record.id}}</option>{% endfor %}
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable intentions option_id%} {% ifmemberof canvassers analysts admin %}
<span id='option_id' name='option_id' class='pseudo-widget disabled'> <span id='option_id' name='option_id' class='pseudo-widget disabled'>
{{record.option_id}} {{record.option_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-issues-Issue.html generated 2018-06-15T08:47:04.314Z by adl.to-selmer-templates. <!-- File form-issues-Issue.html generated 2018-06-18T10:08:09.783Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -28,99 +28,99 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable issues id %} {% ifmemberof issueeditors admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable issues id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable issues %} {% ifmemberof issueeditors admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable issues %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='url'> <label for='url'>
url url
</label> </label>
{% ifwritable issues url %} {% ifmemberof issueeditors admin %}
<input id='url' name='url' type='text' value='{{record.url}}'/> <input id='url' name='url' type='text' value='{{record.url}}'/>
{% else %} {% else %}
{% ifreadable issues url%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='url' name='url' class='pseudo-widget disabled'> <span id='url' name='url' class='pseudo-widget disabled'>
{{record.url}} {{record.url}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='current'> <label for='current'>
current current
</label> </label>
{% ifwritable issues current %} {% ifmemberof issueeditors admin %}
<input id='current' name='current' type='checkbox' value='{{record.current}}'/> <input id='current' name='current' type='checkbox' value='{{record.current}}'/>
{% else %} {% else %}
{% ifreadable issues current%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='current' name='current' class='pseudo-widget disabled'> <span id='current' name='current' class='pseudo-widget disabled'>
{{record.current}} {{record.current}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable issues %} {% ifmemberof issueeditors admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable issues %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='url'> <label for='url'>
url url
</label> </label>
{% ifwritable issues url %} {% ifmemberof issueeditors admin %}
<input id='url' name='url' type='text' value='{{record.url}}'/> <input id='url' name='url' type='text' value='{{record.url}}'/>
{% else %} {% else %}
{% ifreadable issues url%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='url' name='url' class='pseudo-widget disabled'> <span id='url' name='url' class='pseudo-widget disabled'>
{{record.url}} {{record.url}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='current'> <label for='current'>
current current
</label> </label>
{% ifwritable issues current %} {% ifmemberof issueeditors admin %}
<input id='current' name='current' type='checkbox' value='{{record.current}}'/> <input id='current' name='current' type='checkbox' value='{{record.current}}'/>
{% else %} {% else %}
{% ifreadable issues current%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='current' name='current' class='pseudo-widget disabled'> <span id='current' name='current' class='pseudo-widget disabled'>
{{record.current}} {{record.current}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-options-Option.html generated 2018-06-15T08:47:04.336Z by adl.to-selmer-templates. <!-- File form-options-Option.html generated 2018-06-18T10:08:09.835Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -28,43 +28,43 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable options id %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable options id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable options %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable options %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable options %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable options %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-roles-Role.html generated 2018-06-15T08:47:04.316Z by adl.to-selmer-templates. <!-- File form-roles-Role.html generated 2018-06-18T10:08:09.788Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -29,63 +29,63 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable roles %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable roles %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='name'> <label for='name'>
name name
</label> </label>
{% ifwritable roles name %} {% ifmemberof admin %}
<input id='name' name='name' type='text' value='{{record.name}}'/> <input id='name' name='name' type='text' value='{{record.name}}'/>
{% else %} {% else %}
{% ifreadable roles name%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='name' name='name' class='pseudo-widget disabled'> <span id='name' name='name' class='pseudo-widget disabled'>
{{record.name}} {{record.name}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable roles %} {% ifmemberof admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable roles %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='name'> <label for='name'>
name name
</label> </label>
{% ifwritable roles name %} {% ifmemberof admin %}
<input id='name' name='name' type='text' value='{{record.name}}'/> <input id='name' name='name' type='text' value='{{record.name}}'/>
{% else %} {% else %}
{% ifreadable roles name%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='name' name='name' class='pseudo-widget disabled'> <span id='name' name='name' class='pseudo-widget disabled'>
{{record.name}} {{record.name}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='members'> <label for='members'>
members members
</label> </label>
{% ifwritable roles members %} {% ifmemberof admin %}
<div class='select-box' farside='canvassers' found='true'> <div class='select-box' farside='canvassers' found='true'>
<input name='members-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='members-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='members' name='members' multiple='multiple' comment='JavaScript stuff to fix up aynchronous loading'> <select id='members' name='members' multiple='multiple' comment='JavaScript stuff to fix up aynchronous loading'>
@ -93,12 +93,12 @@ members
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable roles members%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='members' name='members' class='pseudo-widget disabled'> <span id='members' name='members' class='pseudo-widget disabled'>
{{record.members}} {{record.members}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-teams-Team.html generated 2018-06-15T08:47:04.323Z by adl.to-selmer-templates. <!-- File form-teams-Team.html generated 2018-06-18T10:08:09.801Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -29,35 +29,35 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable teams %} {% ifmemberof teamorganisers admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable teams %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='name'> <label for='name'>
name name
</label> </label>
{% ifwritable teams name %} {% ifmemberof teamorganisers admin %}
<input id='name' name='name' type='text' value='{{record.name}}'/> <input id='name' name='name' type='text' value='{{record.name}}'/>
{% else %} {% else %}
{% ifreadable teams name%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='name' name='name' class='pseudo-widget disabled'> <span id='name' name='name' class='pseudo-widget disabled'>
{{record.name}} {{record.name}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='district_id'> <label for='district_id'>
district_id district_id
</label> </label>
{% ifwritable teams district_id %} {% ifmemberof teamorganisers admin %}
<div class='select-box' farside='districts' found='true'> <div class='select-box' farside='districts' found='true'>
<input name='district_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='district_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='district_id' name='district_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='district_id' name='district_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -65,74 +65,74 @@ district_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable teams district_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='district_id' name='district_id' class='pseudo-widget disabled'> <span id='district_id' name='district_id' class='pseudo-widget disabled'>
{{record.district_id}} {{record.district_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='latitude'> <label for='latitude'>
latitude latitude
</label> </label>
{% ifwritable teams latitude %} {% ifmemberof teamorganisers admin %}
<input id='latitude' name='latitude' type='number' value='{{record.latitude}}'/> <input id='latitude' name='latitude' type='number' value='{{record.latitude}}'/>
{% else %} {% else %}
{% ifreadable teams latitude%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='latitude' name='latitude' class='pseudo-widget disabled'> <span id='latitude' name='latitude' class='pseudo-widget disabled'>
{{record.latitude}} {{record.latitude}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='longitude'> <label for='longitude'>
longitude longitude
</label> </label>
{% ifwritable teams longitude %} {% ifmemberof teamorganisers admin %}
<input id='longitude' name='longitude' type='number' value='{{record.longitude}}'/> <input id='longitude' name='longitude' type='number' value='{{record.longitude}}'/>
{% else %} {% else %}
{% ifreadable teams longitude%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='longitude' name='longitude' class='pseudo-widget disabled'> <span id='longitude' name='longitude' class='pseudo-widget disabled'>
{{record.longitude}} {{record.longitude}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable teams %} {% ifmemberof teamorganisers admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable teams %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='name'> <label for='name'>
name name
</label> </label>
{% ifwritable teams name %} {% ifmemberof teamorganisers admin %}
<input id='name' name='name' type='text' value='{{record.name}}'/> <input id='name' name='name' type='text' value='{{record.name}}'/>
{% else %} {% else %}
{% ifreadable teams name%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='name' name='name' class='pseudo-widget disabled'> <span id='name' name='name' class='pseudo-widget disabled'>
{{record.name}} {{record.name}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='district_id'> <label for='district_id'>
district_id district_id
</label> </label>
{% ifwritable teams district_id %} {% ifmemberof teamorganisers admin %}
<div class='select-box' farside='districts' found='true'> <div class='select-box' farside='districts' found='true'>
<input name='district_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='district_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='district_id' name='district_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='district_id' name='district_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -140,32 +140,32 @@ district_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable teams district_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='district_id' name='district_id' class='pseudo-widget disabled'> <span id='district_id' name='district_id' class='pseudo-widget disabled'>
{{record.district_id}} {{record.district_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='latitude'> <label for='latitude'>
latitude latitude
</label> </label>
{% ifwritable teams latitude %} {% ifmemberof teamorganisers admin %}
<input id='latitude' name='latitude' type='number' value='{{record.latitude}}'/> <input id='latitude' name='latitude' type='number' value='{{record.latitude}}'/>
{% else %} {% else %}
{% ifreadable teams latitude%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='latitude' name='latitude' class='pseudo-widget disabled'> <span id='latitude' name='latitude' class='pseudo-widget disabled'>
{{record.latitude}} {{record.latitude}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='members'> <label for='members'>
members members
</label> </label>
{% ifwritable teams members %} {% ifmemberof teamorganisers admin %}
<div class='select-box' farside='canvassers' found='true'> <div class='select-box' farside='canvassers' found='true'>
<input name='members-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='members-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='members' name='members' multiple='multiple' comment='JavaScript stuff to fix up aynchronous loading'> <select id='members' name='members' multiple='multiple' comment='JavaScript stuff to fix up aynchronous loading'>
@ -173,18 +173,18 @@ members
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable teams members%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='members' name='members' class='pseudo-widget disabled'> <span id='members' name='members' class='pseudo-widget disabled'>
{{record.members}} {{record.members}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='organisers'> <label for='organisers'>
organisers organisers
</label> </label>
{% ifwritable teams organisers %} {% ifmemberof teamorganisers admin %}
<div class='select-box' farside='canvassers' found='true'> <div class='select-box' farside='canvassers' found='true'>
<input name='organisers-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='organisers-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='organisers' name='organisers' multiple='multiple' comment='JavaScript stuff to fix up aynchronous loading'> <select id='organisers' name='organisers' multiple='multiple' comment='JavaScript stuff to fix up aynchronous loading'>
@ -192,26 +192,26 @@ organisers
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable teams organisers%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='organisers' name='organisers' class='pseudo-widget disabled'> <span id='organisers' name='organisers' class='pseudo-widget disabled'>
{{record.organisers}} {{record.organisers}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='longitude'> <label for='longitude'>
longitude longitude
</label> </label>
{% ifwritable teams longitude %} {% ifmemberof teamorganisers admin %}
<input id='longitude' name='longitude' type='number' value='{{record.longitude}}'/> <input id='longitude' name='longitude' type='number' value='{{record.longitude}}'/>
{% else %} {% else %}
{% ifreadable teams longitude%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='longitude' name='longitude' class='pseudo-widget disabled'> <span id='longitude' name='longitude' class='pseudo-widget disabled'>
{{record.longitude}} {{record.longitude}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File form-visits-Visit.html generated 2018-06-15T08:47:04.319Z by adl.to-selmer-templates. <!-- File form-visits-Visit.html generated 2018-06-18T10:08:09.795Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -29,21 +29,21 @@ See [Application Description Language](https://github.com/simon-brooke/adl).-->
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable visits %} {% ifmemberof admin admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable visits %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='address_id'> <label for='address_id'>
address_id address_id
</label> </label>
{% ifwritable visits address_id %} {% ifmemberof admin admin %}
<div class='select-box' farside='addresses' found='true'> <div class='select-box' farside='addresses' found='true'>
<input name='address_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='address_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='address_id' name='address_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='address_id' name='address_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -51,18 +51,18 @@ address_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable visits address_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='address_id' name='address_id' class='pseudo-widget disabled'> <span id='address_id' name='address_id' class='pseudo-widget disabled'>
{{record.address_id}} {{record.address_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='canvasser_id'> <label for='canvasser_id'>
canvasser_id canvasser_id
</label> </label>
{% ifwritable visits canvasser_id %} {% ifmemberof admin admin %}
<div class='select-box' farside='canvassers' found='true'> <div class='select-box' farside='canvassers' found='true'>
<input name='canvasser_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='canvasser_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='canvasser_id' name='canvasser_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='canvasser_id' name='canvasser_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -70,46 +70,46 @@ canvasser_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable visits canvasser_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='canvasser_id' name='canvasser_id' class='pseudo-widget disabled'> <span id='canvasser_id' name='canvasser_id' class='pseudo-widget disabled'>
{{record.canvasser_id}} {{record.canvasser_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='date'> <label for='date'>
date date
</label> </label>
{% ifwritable visits date %} {% ifmemberof admin admin %}
<input id='date' name='date' type='text' value='{{record.date}}'/> <input id='date' name='date' type='text' value='{{record.date}}'/>
{% else %} {% else %}
{% ifreadable visits date%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='date' name='date' class='pseudo-widget disabled'> <span id='date' name='date' class='pseudo-widget disabled'>
{{record.date}} {{record.date}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='id'> <label for='id'>
id id
</label> </label>
{% ifwritable visits %} {% ifmemberof admin admin %}
<input id='id' name='id' type='text' value='{{record.id}}'/> <input id='id' name='id' type='text' value='{{record.id}}'/>
{% else %} {% else %}
{% ifreadable visits %} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='id' name='id' class='pseudo-widget disabled'> <span id='id' name='id' class='pseudo-widget disabled'>
{{record.id}} {{record.id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='address_id'> <label for='address_id'>
address_id address_id
</label> </label>
{% ifwritable visits address_id %} {% ifmemberof admin admin %}
<div class='select-box' farside='addresses' found='true'> <div class='select-box' farside='addresses' found='true'>
<input name='address_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='address_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='address_id' name='address_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='address_id' name='address_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -117,18 +117,18 @@ address_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable visits address_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='address_id' name='address_id' class='pseudo-widget disabled'> <span id='address_id' name='address_id' class='pseudo-widget disabled'>
{{record.address_id}} {{record.address_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='canvasser_id'> <label for='canvasser_id'>
canvasser_id canvasser_id
</label> </label>
{% ifwritable visits canvasser_id %} {% ifmemberof admin admin %}
<div class='select-box' farside='canvassers' found='true'> <div class='select-box' farside='canvassers' found='true'>
<input name='canvasser_id-search-box' onchange='/* javascript to repopulate the select widget */'/> <input name='canvasser_id-search-box' onchange='/* javascript to repopulate the select widget */'/>
<select id='canvasser_id' name='canvasser_id' comment='JavaScript stuff to fix up aynchronous loading'> <select id='canvasser_id' name='canvasser_id' comment='JavaScript stuff to fix up aynchronous loading'>
@ -136,26 +136,26 @@ canvasser_id
</select> </select>
</div> </div>
{% else %} {% else %}
{% ifreadable visits canvasser_id%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='canvasser_id' name='canvasser_id' class='pseudo-widget disabled'> <span id='canvasser_id' name='canvasser_id' class='pseudo-widget disabled'>
{{record.canvasser_id}} {{record.canvasser_id}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget'> <p class='widget'>
<label for='date'> <label for='date'>
date date
</label> </label>
{% ifwritable visits date %} {% ifmemberof admin admin %}
<input id='date' name='date' type='text' value='{{record.date}}'/> <input id='date' name='date' type='text' value='{{record.date}}'/>
{% else %} {% else %}
{% ifreadable visits date%} {% ifmemberof canvassers teamorganisers issueexperts analysts issueeditors admin canvassers teamorganisers issueexperts analysts issueeditors admin %}
<span id='date' name='date' class='pseudo-widget disabled'> <span id='date' name='date' class='pseudo-widget disabled'>
{{record.date}} {{record.date}}
</span> </span>
{% endifreadable %} {% endifmemberof %}
{% endifwritable %} {% endifmemberof %}
</p> </p>
<p class='widget action-safe'> <p class='widget action-safe'>
<label for='save-button' class='action-safe'> <label for='save-button' class='action-safe'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-addresses-Addresses.html generated 2018-06-15T08:47:04.330Z by adl.to-selmer-templates. <!-- File list-addresses-Addresses.html generated 2018-06-18T10:08:09.820Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -66,7 +66,7 @@ longitude
<input id='phone' type='text' name='phone' value='{{ params.phone }}'/> <input id='phone' type='text' name='phone' value='{{ params.phone }}'/>
</th> </th>
<th> <th>
<input id='district_id' type='text' name='district_id' value='{{ params.district_id }}'/> <input id='district_id_expanded' type='text' name='district_id_expanded' value='{{ params.district_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='latitude' type='number' name='latitude' value='{{ params.latitude }}'/> <input id='latitude' type='number' name='latitude' value='{{ params.latitude }}'/>
@ -95,7 +95,9 @@ longitude
{{ record.phone }} {{ record.phone }}
</td> </td>
<td> <td>
{{ record.district_id }} <a href='form-districts-District?id={{ record.district_id }}'>
{{ record.district_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.latitude }} {{ record.latitude }}

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-authorities-Authorities.html generated 2018-06-15T08:47:04.301Z by adl.to-selmer-templates. <!-- File list-authorities-Authorities.html generated 2018-06-18T10:08:09.758Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-canvassers-Canvassers.html generated 2018-06-15T08:47:04.339Z by adl.to-selmer-templates. <!-- File list-canvassers-Canvassers.html generated 2018-06-18T10:08:09.844Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -69,10 +69,10 @@ authorised
<input id='fullname' type='text' name='fullname' value='{{ params.fullname }}'/> <input id='fullname' type='text' name='fullname' value='{{ params.fullname }}'/>
</th> </th>
<th> <th>
<input id='elector_id' type='text' name='elector_id' value='{{ params.elector_id }}'/> <input id='elector_id_expanded' type='text' name='elector_id_expanded' value='{{ params.elector_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='address_id' type='text' name='address_id' value='{{ params.address_id }}'/> <input id='address_id_expanded' type='text' name='address_id_expanded' value='{{ params.address_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='phone' type='text' name='phone' value='{{ params.phone }}'/> <input id='phone' type='text' name='phone' value='{{ params.phone }}'/>
@ -81,7 +81,7 @@ authorised
<input id='email' type='text' name='email' value='{{ params.email }}'/> <input id='email' type='text' name='email' value='{{ params.email }}'/>
</th> </th>
<th> <th>
<input id='authority_id' type='text' name='authority_id' value='{{ params.authority_id }}'/> <input id='authority_id_expanded' type='text' name='authority_id_expanded' value='{{ params.authority_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='authorised' type='text' name='authorised' value='{{ params.authorised }}'/> <input id='authorised' type='text' name='authorised' value='{{ params.authorised }}'/>
@ -104,10 +104,14 @@ authorised
{{ record.fullname }} {{ record.fullname }}
</td> </td>
<td> <td>
{{ record.elector_id }} <a href='form-electors-Elector?id={{ record.elector_id }}'>
{{ record.elector_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.address_id }} <a href='form-addresses-Address?id={{ record.address_id }}'>
{{ record.address_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.phone }} {{ record.phone }}
@ -116,7 +120,9 @@ authorised
{{ record.email }} {{ record.email }}
</td> </td>
<td> <td>
{{ record.authority_id }} <a href='form-authorities-Authority?id={{ record.authority_id }}'>
{{ record.authority_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.authorised }} {{ record.authorised }}

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-districts-Districts.html generated 2018-06-15T08:47:04.334Z by adl.to-selmer-templates. <!-- File list-districts-Districts.html generated 2018-06-18T10:08:09.831Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-dwellings-Dwellings.html generated 2018-06-15T08:47:04.329Z by adl.to-selmer-templates. <!-- File list-dwellings-Dwellings.html generated 2018-06-18T10:08:09.815Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -45,7 +45,7 @@ sub-address
<input id='id' type='text' name='id' value='{{ params.id }}'/> <input id='id' type='text' name='id' value='{{ params.id }}'/>
</th> </th>
<th> <th>
<input id='address_id' type='text' name='address_id' value='{{ params.address_id }}'/> <input id='address_id_expanded' type='text' name='address_id_expanded' value='{{ params.address_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='sub-address' type='text' name='sub-address' value='{{ params.sub-address }}'/> <input id='sub-address' type='text' name='sub-address' value='{{ params.sub-address }}'/>
@ -62,7 +62,9 @@ sub-address
{{ record.id }} {{ record.id }}
</td> </td>
<td> <td>
{{ record.address_id }} <a href='form-addresses-Address?id={{ record.address_id }}'>
{{ record.address_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.sub-address }} {{ record.sub-address }}

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-electors-Electors.html generated 2018-06-15T08:47:04.313Z by adl.to-selmer-templates. <!-- File list-electors-Electors.html generated 2018-06-18T10:08:09.780Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -57,7 +57,7 @@ gender
<input id='name' type='text' name='name' value='{{ params.name }}'/> <input id='name' type='text' name='name' value='{{ params.name }}'/>
</th> </th>
<th> <th>
<input id='dwelling_id' type='text' name='dwelling_id' value='{{ params.dwelling_id }}'/> <input id='dwelling_id_expanded' type='text' name='dwelling_id_expanded' value='{{ params.dwelling_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='phone' type='text' name='phone' value='{{ params.phone }}'/> <input id='phone' type='text' name='phone' value='{{ params.phone }}'/>
@ -66,7 +66,7 @@ gender
<input id='email' type='text' name='email' value='{{ params.email }}'/> <input id='email' type='text' name='email' value='{{ params.email }}'/>
</th> </th>
<th> <th>
<input id='gender' type='text' name='gender' value='{{ params.gender }}'/> <input id='gender_expanded' type='text' name='gender_expanded' value='{{ params.gender_expanded }}'/>
</th> </th>
<th> <th>
<input type='submit' id='search' value='Search'/> <input type='submit' id='search' value='Search'/>
@ -83,7 +83,9 @@ gender
{{ record.name }} {{ record.name }}
</td> </td>
<td> <td>
{{ record.dwelling_id }} <a href='form-dwellings-Dwelling?id={{ record.dwelling_id }}'>
{{ record.dwelling_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.phone }} {{ record.phone }}
@ -92,7 +94,9 @@ gender
{{ record.email }} {{ record.email }}
</td> </td>
<td> <td>
{{ record.gender }} <a href='form-genders-Gender?id={{ record.gender }}'>
{{ record.gender_expanded }}
</a>
</td> </td>
<td> <td>
<a href='form-electors-Elector?id={{ record.id }}'> <a href='form-electors-Elector?id={{ record.id }}'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-followupactions-Followupactions.html generated 2018-06-15T08:47:04.338Z by adl.to-selmer-templates. <!-- File list-followupactions-Followupactions.html generated 2018-06-18T10:08:09.842Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -54,10 +54,10 @@ closed
<input id='id' type='text' name='id' value='{{ params.id }}'/> <input id='id' type='text' name='id' value='{{ params.id }}'/>
</th> </th>
<th> <th>
<input id='request_id' type='text' name='request_id' value='{{ params.request_id }}'/> <input id='request_id_expanded' type='text' name='request_id_expanded' value='{{ params.request_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='actor' type='text' name='actor' value='{{ params.actor }}'/> <input id='actor_expanded' type='text' name='actor_expanded' value='{{ params.actor_expanded }}'/>
</th> </th>
<th> <th>
<input id='date' type='date' name='date' value='{{ params.date }}'/> <input id='date' type='date' name='date' value='{{ params.date }}'/>
@ -80,10 +80,14 @@ closed
{{ record.id }} {{ record.id }}
</td> </td>
<td> <td>
{{ record.request_id }} <a href='form-followuprequests-Followuprequest?id={{ record.request_id }}'>
{{ record.request_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.actor }} <a href='form-canvassers-Canvasser?id={{ record.actor }}'>
{{ record.actor_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.date }} {{ record.date }}

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-followupmethods-Followupmethods.html generated 2018-06-15T08:47:04.318Z by adl.to-selmer-templates. <!-- File list-followupmethods-Followupmethods.html generated 2018-06-18T10:08:09.793Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-followuprequests-Followuprequests.html generated 2018-06-15T08:47:04.296Z by adl.to-selmer-templates. <!-- File list-followuprequests-Followuprequests.html generated 2018-06-18T10:08:09.751Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -51,16 +51,16 @@ method_id
<input id='id' type='text' name='id' value='{{ params.id }}'/> <input id='id' type='text' name='id' value='{{ params.id }}'/>
</th> </th>
<th> <th>
<input id='elector_id' type='text' name='elector_id' value='{{ params.elector_id }}'/> <input id='elector_id_expanded' type='text' name='elector_id_expanded' value='{{ params.elector_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='visit_id' type='text' name='visit_id' value='{{ params.visit_id }}'/> <input id='visit_id_expanded' type='text' name='visit_id_expanded' value='{{ params.visit_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='issue_id' type='text' name='issue_id' value='{{ params.issue_id }}'/> <input id='issue_id_expanded' type='text' name='issue_id_expanded' value='{{ params.issue_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='method_id' type='text' name='method_id' value='{{ params.method_id }}'/> <input id='method_id_expanded' type='text' name='method_id_expanded' value='{{ params.method_id_expanded }}'/>
</th> </th>
<th> <th>
<input type='submit' id='search' value='Search'/> <input type='submit' id='search' value='Search'/>
@ -74,16 +74,24 @@ method_id
{{ record.id }} {{ record.id }}
</td> </td>
<td> <td>
{{ record.elector_id }} <a href='form-electors-Elector?id={{ record.elector_id }}'>
{{ record.elector_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.visit_id }} <a href='form-visits-Visit?id={{ record.visit_id }}'>
{{ record.visit_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.issue_id }} <a href='form-issues-Issue?id={{ record.issue_id }}'>
{{ record.issue_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.method_id }} <a href='form-followupmethods-Followupmethod?id={{ record.method_id }}'>
{{ record.method_id_expanded }}
</a>
</td> </td>
<td> <td>
<a href='form-followuprequests-Followuprequest?id={{ record.id }}'> <a href='form-followuprequests-Followuprequest?id={{ record.id }}'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-genders-Genders.html generated 2018-06-15T08:47:04.288Z by adl.to-selmer-templates. <!-- File list-genders-Genders.html generated 2018-06-18T10:08:09.734Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-intentions-Intentions.html generated 2018-06-15T08:47:04.341Z by adl.to-selmer-templates. <!-- File list-intentions-Intentions.html generated 2018-06-18T10:08:09.851Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -42,13 +42,13 @@ option_id
</tr> </tr>
<tr> <tr>
<th> <th>
<input id='visit_id' type='text' name='visit_id' value='{{ params.visit_id }}'/> <input id='visit_id_expanded' type='text' name='visit_id_expanded' value='{{ params.visit_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='elector_id' type='text' name='elector_id' value='{{ params.elector_id }}'/> <input id='elector_id_expanded' type='text' name='elector_id_expanded' value='{{ params.elector_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='option_id' type='text' name='option_id' value='{{ params.option_id }}'/> <input id='option_id_expanded' type='text' name='option_id_expanded' value='{{ params.option_id_expanded }}'/>
</th> </th>
<th> <th>
<input type='submit' id='search' value='Search'/> <input type='submit' id='search' value='Search'/>
@ -59,13 +59,19 @@ option_id
{% for record in records %} {% for record in records %}
<tr> <tr>
<td> <td>
{{ record.visit_id }} <a href='form-visits-Visit?id={{ record.visit_id }}'>
{{ record.visit_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.elector_id }} <a href='form-electors-Elector?id={{ record.elector_id }}'>
{{ record.elector_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.option_id }} <a href='form-options-Option?id={{ record.option_id }}'>
{{ record.option_id_expanded }}
</a>
</td> </td>
<td> <td>
<a href='form-intentions-Intention?Id={{ record.Id }}'> <a href='form-intentions-Intention?Id={{ record.Id }}'>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-issues-Issues.html generated 2018-06-15T08:47:04.335Z by adl.to-selmer-templates. <!-- File list-issues-Issues.html generated 2018-06-18T10:08:09.833Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-options-Options.html generated 2018-06-15T08:47:04.298Z by adl.to-selmer-templates. <!-- File list-options-Options.html generated 2018-06-18T10:08:09.753Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-roles-Roles.html generated 2018-06-15T08:47:04.318Z by adl.to-selmer-templates. <!-- File list-roles-Roles.html generated 2018-06-18T10:08:09.791Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-teams-Teams.html generated 2018-06-15T08:47:04.292Z by adl.to-selmer-templates. <!-- File list-teams-Teams.html generated 2018-06-18T10:08:09.740Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -54,7 +54,7 @@ longitude
<input id='name' type='text' name='name' value='{{ params.name }}'/> <input id='name' type='text' name='name' value='{{ params.name }}'/>
</th> </th>
<th> <th>
<input id='district_id' type='text' name='district_id' value='{{ params.district_id }}'/> <input id='district_id_expanded' type='text' name='district_id_expanded' value='{{ params.district_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='latitude' type='number' name='latitude' value='{{ params.latitude }}'/> <input id='latitude' type='number' name='latitude' value='{{ params.latitude }}'/>
@ -77,7 +77,9 @@ longitude
{{ record.name }} {{ record.name }}
</td> </td>
<td> <td>
{{ record.district_id }} <a href='form-districts-District?id={{ record.district_id }}'>
{{ record.district_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.latitude }} {{ record.latitude }}

View file

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
<!-- File list-visits-Visits.html generated 2018-06-15T08:47:04.290Z by adl.to-selmer-templates. <!-- File list-visits-Visits.html generated 2018-06-18T10:08:09.738Z by adl.to-selmer-templates.
See [Application Description Language](https://github.com/simon-brooke/adl).--> See [Application Description Language](https://github.com/simon-brooke/adl).-->
{% block head %} {% block head %}
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
@ -48,10 +48,10 @@ date
<input id='id' type='text' name='id' value='{{ params.id }}'/> <input id='id' type='text' name='id' value='{{ params.id }}'/>
</th> </th>
<th> <th>
<input id='address_id' type='text' name='address_id' value='{{ params.address_id }}'/> <input id='address_id_expanded' type='text' name='address_id_expanded' value='{{ params.address_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='canvasser_id' type='text' name='canvasser_id' value='{{ params.canvasser_id }}'/> <input id='canvasser_id_expanded' type='text' name='canvasser_id_expanded' value='{{ params.canvasser_id_expanded }}'/>
</th> </th>
<th> <th>
<input id='date' type='date' name='date' value='{{ params.date }}'/> <input id='date' type='date' name='date' value='{{ params.date }}'/>
@ -68,10 +68,14 @@ date
{{ record.id }} {{ record.id }}
</td> </td>
<td> <td>
{{ record.address_id }} <a href='form-addresses-Address?id={{ record.address_id }}'>
{{ record.address_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.canvasser_id }} <a href='form-canvassers-Canvasser?id={{ record.canvasser_id }}'>
{{ record.canvasser_id_expanded }}
</a>
</td> </td>
<td> <td>
{{ record.date }} {{ record.date }}

View file

@ -1,23 +1,45 @@
(ns^{:doc "Render web pages using Selmer tamplating markup." (ns^{:doc "Render web pages using Selmer templating markup."
:author "Simon Brooke"} :author "Simon Brooke"}
youyesyet.layout youyesyet.layout
(:require [selmer.parser :as parser] (:require [selmer.parser :as parser]
[selmer.filters :as filters] [selmer.filters :as filters]
[markdown.core :refer [md-to-html-string]] [markdown.core :refer [md-to-html-string]]
[noir.session :as session]
[ring.util.http-response :refer [content-type ok]] [ring.util.http-response :refer [content-type ok]]
[ring.util.anti-forgery :refer [anti-forgery-field]] [ring.util.anti-forgery :refer [anti-forgery-field]]
[ring.middleware.anti-forgery :refer [*anti-forgery-token*]])) [ring.middleware.anti-forgery :refer [*anti-forgery-token*]]))
(declare ^:dynamic *app-context*) (declare ^:dynamic *app-context*)
(parser/set-resource-path! (clojure.java.io/resource "templates")) (parser/set-resource-path! (clojure.java.io/resource "templates"))
(parser/add-tag! :csrf-field (fn [_ _] (anti-forgery-field))) (parser/add-tag! :csrf-field (fn [_ _] (anti-forgery-field)))
(filters/add-filter! :markdown (fn [content] [:safe (md-to-html-string content)])) (filters/add-filter! :markdown (fn [content] [:safe (md-to-html-string content)]))
(parser/add-tag! :ifmemberof
(fn [args context content]
(let [permitted (if args (some (:user-groups context) args) false)]
(if permitted
(get-in content [:ifreadable :content]))))
:else
(fn [args context content]
(let [permitted (if args (some (:user-groups context) args) false)]
(if (not permitted)
(get-in content [:else :content]))))
:ifmemberof)
(defn raw-get-user-roles [_]
#{"admin" "canvassers"})
(def get-user-roles (memoize raw-get-user-roles))
(defn render (defn render
"renders the HTML template located relative to resources/templates" "renders the HTML template located relative to resources/templates"
[template & [params]] [template & [params]]
(let [user (try session/get :user)]
(content-type (content-type
(ok (ok
(parser/render-file (parser/render-file
@ -25,9 +47,10 @@
(assoc params (assoc params
:page template :page template
:csrf-token *anti-forgery-token* :csrf-token *anti-forgery-token*
:servlet-context *app-context* :user user
:user-roles [get-user-roles user]
:version (System/getProperty "youyesyet.version")))) :version (System/getProperty "youyesyet.version"))))
"text/html; charset=utf-8")) "text/html; charset=utf-8")))
(defn error-page (defn error-page

View file

@ -1,6 +1,6 @@
(ns (ns
youyesyet.routes.auto youyesyet.routes.auto
"User interface routes for Youyesyet auto-generated by [Application Description Language framework](https://github.com/simon-brooke/adl) at 20180615T084444.957Z" "User interface routes for Youyesyet auto-generated by [Application Description Language framework](https://github.com/simon-brooke/adl) at 20180617T110557.025Z"
(:require (:require
[clojure.java.io :as io] [clojure.java.io :as io]
[compojure.core :refer [defroutes GET POST]] [compojure.core :refer [defroutes GET POST]]
@ -33,7 +33,7 @@
list-electors-Electors list-electors-Electors
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-electors-Electors.html") (resolve-template "list-electors-Electors.html")
{:title "Electors", {:title "Electors",
@ -48,16 +48,22 @@
form-electors-Elector form-electors-Elector
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-electors-Elector.html") (resolve-template "form-electors-Elector.html")
{:title "Elector", :params p, :record (db/get-elector p)}))) {:title "Elector",
:params p,
:record
(if
(empty? (remove nil? (vals p)))
[]
(db/get-elector db/*db* p))})))
(defn (defn
list-genders-Genders list-genders-Genders
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-genders-Genders.html") (resolve-template "list-genders-Genders.html")
{:title "Genders", {:title "Genders",
@ -72,16 +78,22 @@
form-genders-Gender form-genders-Gender
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-genders-Gender.html") (resolve-template "form-genders-Gender.html")
{:title "Gender", :params p, :record (db/get-gender p)}))) {:title "Gender",
:params p,
:record
(if
(empty? (remove nil? (vals p)))
[]
(db/get-gender db/*db* p))})))
(defn (defn
list-dwellings-Dwellings list-dwellings-Dwellings
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-dwellings-Dwellings.html") (resolve-template "list-dwellings-Dwellings.html")
{:title "Dwellings", {:title "Dwellings",
@ -96,16 +108,22 @@
form-dwellings-Dwelling form-dwellings-Dwelling
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-dwellings-Dwelling.html") (resolve-template "form-dwellings-Dwelling.html")
{:title "Dwelling", :params p, :record (db/get-dwelling p)}))) {:title "Dwelling",
:params p,
:record
(if
(empty? (remove nil? (vals p)))
[]
(db/get-dwelling db/*db* p))})))
(defn (defn
list-addresses-Addresses list-addresses-Addresses
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-addresses-Addresses.html") (resolve-template "list-addresses-Addresses.html")
{:title "Addresses", {:title "Addresses",
@ -120,16 +138,22 @@
form-addresses-Address form-addresses-Address
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-addresses-Address.html") (resolve-template "form-addresses-Address.html")
{:title "Address", :params p, :record (db/get-address p)}))) {:title "Address",
:params p,
:record
(if
(empty? (remove nil? (vals p)))
[]
(db/get-address db/*db* p))})))
(defn (defn
list-visits-Visits list-visits-Visits
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-visits-Visits.html") (resolve-template "list-visits-Visits.html")
{:title "Visits", {:title "Visits",
@ -144,16 +168,19 @@
form-visits-Visit form-visits-Visit
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-visits-Visit.html") (resolve-template "form-visits-Visit.html")
{:title "Visit", :params p, :record (db/get-visit p)}))) {:title "Visit",
:params p,
:record
(if (empty? (remove nil? (vals p))) [] (db/get-visit db/*db* p))})))
(defn (defn
list-authorities-Authorities list-authorities-Authorities
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-authorities-Authorities.html") (resolve-template "list-authorities-Authorities.html")
{:title "Authorities", {:title "Authorities",
@ -168,16 +195,22 @@
form-authorities-Authority form-authorities-Authority
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-authorities-Authority.html") (resolve-template "form-authorities-Authority.html")
{:title "Authority", :params p, :record (db/get-authority p)}))) {:title "Authority",
:params p,
:record
(if
(empty? (remove nil? (vals p)))
[]
(db/get-authority db/*db* p))})))
(defn (defn
list-issues-Issues list-issues-Issues
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-issues-Issues.html") (resolve-template "list-issues-Issues.html")
{:title "Issues", {:title "Issues",
@ -192,16 +225,19 @@
form-issues-Issue form-issues-Issue
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-issues-Issue.html") (resolve-template "form-issues-Issue.html")
{:title "Issue", :params p, :record (db/get-issue p)}))) {:title "Issue",
:params p,
:record
(if (empty? (remove nil? (vals p))) [] (db/get-issue db/*db* p))})))
(defn (defn
list-intentions-Intentions list-intentions-Intentions
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-intentions-Intentions.html") (resolve-template "list-intentions-Intentions.html")
{:title "Intentions", {:title "Intentions",
@ -216,16 +252,22 @@
form-intentions-Intention form-intentions-Intention
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-intentions-Intention.html") (resolve-template "form-intentions-Intention.html")
{:title "Intention", :params p, :record (db/get-intention p)}))) {:title "Intention",
:params p,
:record
(if
(empty? (remove nil? (vals p)))
[]
(db/get-intention db/*db* p))})))
(defn (defn
list-canvassers-Canvassers list-canvassers-Canvassers
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-canvassers-Canvassers.html") (resolve-template "list-canvassers-Canvassers.html")
{:title "Canvassers", {:title "Canvassers",
@ -240,16 +282,22 @@
form-canvassers-Canvasser form-canvassers-Canvasser
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-canvassers-Canvasser.html") (resolve-template "form-canvassers-Canvasser.html")
{:title "Canvasser", :params p, :record (db/get-canvasser p)}))) {:title "Canvasser",
:params p,
:record
(if
(empty? (remove nil? (vals p)))
[]
(db/get-canvasser db/*db* p))})))
(defn (defn
list-followuprequests-Followuprequests list-followuprequests-Followuprequests
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-followuprequests-Followuprequests.html") (resolve-template "list-followuprequests-Followuprequests.html")
{:title "Followuprequests", {:title "Followuprequests",
@ -264,18 +312,22 @@
form-followuprequests-Followuprequest form-followuprequests-Followuprequest
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-followuprequests-Followuprequest.html") (resolve-template "form-followuprequests-Followuprequest.html")
{:title "Followuprequest", {:title "Followuprequest",
:params p, :params p,
:record (db/get-followuprequest p)}))) :record
(if
(empty? (remove nil? (vals p)))
[]
(db/get-followuprequest db/*db* p))})))
(defn (defn
list-roles-Roles list-roles-Roles
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-roles-Roles.html") (resolve-template "list-roles-Roles.html")
{:title "Roles", {:title "Roles",
@ -290,16 +342,19 @@
form-roles-Role form-roles-Role
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-roles-Role.html") (resolve-template "form-roles-Role.html")
{:title "Role", :params p, :record (db/get-role p)}))) {:title "Role",
:params p,
:record
(if (empty? (remove nil? (vals p))) [] (db/get-role db/*db* p))})))
(defn (defn
list-teams-Teams list-teams-Teams
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-teams-Teams.html") (resolve-template "list-teams-Teams.html")
{:title "Teams", {:title "Teams",
@ -314,16 +369,19 @@
form-teams-Team form-teams-Team
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-teams-Team.html") (resolve-template "form-teams-Team.html")
{:title "Team", :params p, :record (db/get-team p)}))) {:title "Team",
:params p,
:record
(if (empty? (remove nil? (vals p))) [] (db/get-team db/*db* p))})))
(defn (defn
list-districts-Districts list-districts-Districts
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-districts-Districts.html") (resolve-template "list-districts-Districts.html")
{:title "Districts", {:title "Districts",
@ -338,16 +396,22 @@
form-districts-District form-districts-District
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-districts-District.html") (resolve-template "form-districts-District.html")
{:title "District", :params p, :record (db/get-district p)}))) {:title "District",
:params p,
:record
(if
(empty? (remove nil? (vals p)))
[]
(db/get-district db/*db* p))})))
(defn (defn
list-followupactions-Followupactions list-followupactions-Followupactions
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-followupactions-Followupactions.html") (resolve-template "list-followupactions-Followupactions.html")
{:title "Followupactions", {:title "Followupactions",
@ -362,18 +426,22 @@
form-followupactions-Followupaction form-followupactions-Followupaction
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-followupactions-Followupaction.html") (resolve-template "form-followupactions-Followupaction.html")
{:title "Followupaction", {:title "Followupaction",
:params p, :params p,
:record (db/get-followupaction p)}))) :record
(if
(empty? (remove nil? (vals p)))
[]
(db/get-followupaction db/*db* p))})))
(defn (defn
list-options-Options list-options-Options
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-options-Options.html") (resolve-template "list-options-Options.html")
{:title "Options", {:title "Options",
@ -388,16 +456,22 @@
form-options-Option form-options-Option
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-options-Option.html") (resolve-template "form-options-Option.html")
{:title "Option", :params p, :record (db/get-option p)}))) {:title "Option",
:params p,
:record
(if
(empty? (remove nil? (vals p)))
[]
(db/get-option db/*db* p))})))
(defn (defn
list-followupmethods-Followupmethods list-followupmethods-Followupmethods
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "list-followupmethods-Followupmethods.html") (resolve-template "list-followupmethods-Followupmethods.html")
{:title "Followupmethods", {:title "Followupmethods",
@ -412,12 +486,16 @@
form-followupmethods-Followupmethod form-followupmethods-Followupmethod
[r] [r]
(let (let
[p (:form-params r)] [p (:params r)]
(l/render (l/render
(resolve-template "form-followupmethods-Followupmethod.html") (resolve-template "form-followupmethods-Followupmethod.html")
{:title "Followupmethod", {:title "Followupmethod",
:params p, :params p,
:record (db/get-followupmethod p)}))) :record
(if
(empty? (remove nil? (vals p)))
[]
(db/get-followupmethod db/*db* p))})))
(defn (defn
raw-resolve-handler raw-resolve-handler

View file

@ -1,6 +1,6 @@
(ns (ns
youyesyet.routes.auto-json youyesyet.routes.auto-json
"JSON routes for youyesyet auto-generated by [Application Description Language framework](https://github.com/simon-brooke/adl) at 20180615T084443.981Z" "JSON routes for youyesyet auto-generated by [Application Description Language framework](https://github.com/simon-brooke/adl) at 20180617T110553.546Z"
(:require (:require
[clojure.java.io :as io] [clojure.java.io :as io]
[compojure.core :refer [defroutes GET POST]] [compojure.core :refer [defroutes GET POST]]

View file

@ -0,0 +1,20 @@
(ns^{:doc "Custom Selmer tags."
:author "Simon Brooke"}
youyesyet.tags
(:require [selmer.parser :as parser]
[selmer.filters :as filters]
[selmer.util :refer :all]))
(defn if-writable-handler [params tag-content render rdr]
"If the current element is writable by the current user, emit the content of
the if clause; else emit the content of the else clause."
(let [{if-tags :ifwritable else-tags :else} (tag-content rdr :ifwritable :else :endifwritable)]
params))
(defn if-readable-handler [params tag-content render rdr]
"If the current element is readable by the current user, emit the content of
the if clause; else emit the content of the else clause."
(let [{if-tags :ifreadable else-tags :else} (tag-content rdr :ifwritable :else :endifwritable)]
params))

View file

@ -300,7 +300,7 @@
column="visit_id"> column="visit_id">
<prompt prompt="visit_id" locale="en-GB"/> <prompt prompt="visit_id" locale="en-GB"/>
</property> </property>
<property required="true" type="entity" entity="electors" farkey="id" name="elector_id" <property type="entity" entity="electors" farkey="id" name="elector_id"
column="elector_id"> column="elector_id">
<prompt prompt="elector_id" locale="en-GB"/> <prompt prompt="elector_id" locale="en-GB"/>
</property> </property>
@ -308,6 +308,12 @@
column="option_id"> column="option_id">
<prompt prompt="option_id" locale="en-GB"/> <prompt prompt="option_id" locale="en-GB"/>
</property> </property>
<property name="locality" type="integer" required="true">
<documentation>
The locality at which the intention was recorded; used where an elector does not consent to
have polling intention stored against them. This is a locality as described in
</documentation>
</property>
<list name="Intentions" properties="all"/> <list name="Intentions" properties="all"/>
<form name="Intention" properties="all"/> <form name="Intention" properties="all"/>
<permission group="canvassers" permission="noedit"> <permission group="canvassers" permission="noedit">