Work on getting forms to go. Not yet complete.
This commit is contained in:
parent
6f09c0841c
commit
284509fa7b
17
doc/specification/authorisation.md
Normal file
17
doc/specification/authorisation.md
Normal 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.
|
|
@ -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).
|
||||||
|
|
|
@ -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'/>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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 }}
|
||||||
|
@ -104,7 +106,7 @@ longitude
|
||||||
{{ record.longitude }}
|
{{ record.longitude }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='form-addresses-Address?id={{ record.id}}'>
|
<a href='form-addresses-Address?id={{ record.id }}'>
|
||||||
View
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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'/>
|
||||||
|
@ -50,7 +50,7 @@ id
|
||||||
{{ record.id }}
|
{{ record.id }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='form-authorities-Authority?id={{ record.id}}'>
|
<a href='form-authorities-Authority?id={{ record.id }}'>
|
||||||
View
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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,13 +120,15 @@ 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 }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='form-canvassers-Canvasser?id={{ record.id}}'>
|
<a href='form-canvassers-Canvasser?id={{ record.id }}'>
|
||||||
View
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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'/>
|
||||||
|
@ -59,7 +59,7 @@ name
|
||||||
{{ record.name }}
|
{{ record.name }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='form-districts-District?id={{ record.id}}'>
|
<a href='form-districts-District?id={{ record.id }}'>
|
||||||
View
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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,13 +62,15 @@ 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 }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='form-dwellings-Dwelling?id={{ record.id}}'>
|
<a href='form-dwellings-Dwelling?id={{ record.id }}'>
|
||||||
View
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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,10 +94,12 @@ 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
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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 }}
|
||||||
|
@ -95,7 +99,7 @@ closed
|
||||||
{{ record.closed }}
|
{{ record.closed }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='form-followupactions-Followupaction?id={{ record.id}}'>
|
<a href='form-followupactions-Followupaction?id={{ record.id }}'>
|
||||||
View
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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'/>
|
||||||
|
@ -50,7 +50,7 @@ id
|
||||||
{{ record.id }}
|
{{ record.id }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='form-followupmethods-Followupmethod?id={{ record.id}}'>
|
<a href='form-followupmethods-Followupmethod?id={{ record.id }}'>
|
||||||
View
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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,19 +74,27 @@ 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
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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'/>
|
||||||
|
@ -50,7 +50,7 @@ id
|
||||||
{{ record.id }}
|
{{ record.id }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='form-genders-Gender?id={{ record.id}}'>
|
<a href='form-genders-Gender?id={{ record.id }}'>
|
||||||
View
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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,16 +59,22 @@ 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
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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'/>
|
||||||
|
@ -68,7 +68,7 @@ current
|
||||||
{{ record.current }}
|
{{ record.current }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='form-issues-Issue?id={{ record.id}}'>
|
<a href='form-issues-Issue?id={{ record.id }}'>
|
||||||
View
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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'/>
|
||||||
|
@ -50,7 +50,7 @@ id
|
||||||
{{ record.id }}
|
{{ record.id }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='form-options-Option?id={{ record.id}}'>
|
<a href='form-options-Option?id={{ record.id }}'>
|
||||||
View
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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'/>
|
||||||
|
@ -59,7 +59,7 @@ name
|
||||||
{{ record.name }}
|
{{ record.name }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='form-roles-Role?id={{ record.id}}'>
|
<a href='form-roles-Role?id={{ record.id }}'>
|
||||||
View
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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 }}
|
||||||
|
@ -86,7 +88,7 @@ longitude
|
||||||
{{ record.longitude }}
|
{{ record.longitude }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='form-teams-Team?id={{ record.id}}'>
|
<a href='form-teams-Team?id={{ record.id }}'>
|
||||||
View
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -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,16 +68,20 @@ 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 }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href='form-visits-Visit?id={{ record.id}}'>
|
<a href='form-visits-Visit?id={{ record.id }}'>
|
||||||
View
|
View
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -1,44 +1,67 @@
|
||||||
(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]]
|
||||||
[ring.util.http-response :refer [content-type ok]]
|
[noir.session :as session]
|
||||||
[ring.util.anti-forgery :refer [anti-forgery-field]]
|
[ring.util.http-response :refer [content-type ok]]
|
||||||
[ring.middleware.anti-forgery :refer [*anti-forgery-token*]]))
|
[ring.util.anti-forgery :refer [anti-forgery-field]]
|
||||||
|
[ring.middleware.anti-forgery :refer [*anti-forgery-token*]]))
|
||||||
|
|
||||||
|
|
||||||
(declare ^:dynamic *app-context*)
|
|
||||||
(parser/set-resource-path! (clojure.java.io/resource "templates"))
|
(declare ^:dynamic *app-context*)
|
||||||
(parser/add-tag! :csrf-field (fn [_ _] (anti-forgery-field)))
|
(parser/set-resource-path! (clojure.java.io/resource "templates"))
|
||||||
(filters/add-filter! :markdown (fn [content] [:safe (md-to-html-string content)]))
|
(parser/add-tag! :csrf-field (fn [_ _] (anti-forgery-field)))
|
||||||
|
(filters/add-filter! :markdown (fn [content] [:safe (md-to-html-string content)]))
|
||||||
|
|
||||||
|
|
||||||
(defn render
|
(parser/add-tag! :ifmemberof
|
||||||
"renders the HTML template located relative to resources/templates"
|
(fn [args context content]
|
||||||
[template & [params]]
|
(let [permitted (if args (some (:user-groups context) args) false)]
|
||||||
(content-type
|
(if permitted
|
||||||
(ok
|
(get-in content [:ifreadable :content]))))
|
||||||
(parser/render-file
|
:else
|
||||||
template
|
(fn [args context content]
|
||||||
(assoc params
|
(let [permitted (if args (some (:user-groups context) args) false)]
|
||||||
:page template
|
(if (not permitted)
|
||||||
:csrf-token *anti-forgery-token*
|
(get-in content [:else :content]))))
|
||||||
:servlet-context *app-context*
|
:ifmemberof)
|
||||||
:version (System/getProperty "youyesyet.version"))))
|
|
||||||
"text/html; charset=utf-8"))
|
|
||||||
|
|
||||||
|
|
||||||
(defn error-page
|
(defn raw-get-user-roles [_]
|
||||||
"error-details should be a map containing the following keys:
|
#{"admin" "canvassers"})
|
||||||
:status - error status
|
|
||||||
:title - error title (optional)
|
|
||||||
:message - detailed error message (optional)
|
|
||||||
|
|
||||||
returns a response map with the error page as the body
|
(def get-user-roles (memoize raw-get-user-roles))
|
||||||
and the status specified by the status key"
|
|
||||||
[error-details]
|
|
||||||
{:status (:status error-details)
|
(defn render
|
||||||
:headers {"Content-Type" "text/html; charset=utf-8"}
|
"renders the HTML template located relative to resources/templates"
|
||||||
:body (parser/render-file "error.html" error-details)})
|
[template & [params]]
|
||||||
|
(let [user (try session/get :user)]
|
||||||
|
(content-type
|
||||||
|
(ok
|
||||||
|
(parser/render-file
|
||||||
|
template
|
||||||
|
(assoc params
|
||||||
|
:page template
|
||||||
|
:csrf-token *anti-forgery-token*
|
||||||
|
:user user
|
||||||
|
:user-roles [get-user-roles user]
|
||||||
|
:version (System/getProperty "youyesyet.version"))))
|
||||||
|
"text/html; charset=utf-8")))
|
||||||
|
|
||||||
|
|
||||||
|
(defn error-page
|
||||||
|
"error-details should be a map containing the following keys:
|
||||||
|
:status - error status
|
||||||
|
:title - error title (optional)
|
||||||
|
:message - detailed error message (optional)
|
||||||
|
|
||||||
|
returns a response map with the error page as the body
|
||||||
|
and the status specified by the status key"
|
||||||
|
[error-details]
|
||||||
|
{:status (:status error-details)
|
||||||
|
:headers {"Content-Type" "text/html; charset=utf-8"}
|
||||||
|
:body (parser/render-file "error.html" error-details)})
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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]]
|
||||||
|
|
20
src/clj/youyesyet/tags.clj
Normal file
20
src/clj/youyesyet/tags.clj
Normal 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))
|
|
@ -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">
|
||||||
|
|
Loading…
Reference in a new issue