Complete showing all data on case study view, closes #7
This commit is contained in:
parent
b8eecb0660
commit
8b0f2f9dee
21
apps/map/migrations/0041_auto_20180328_0616.py
Normal file
21
apps/map/migrations/0041_auto_20180328_0616.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.11.6 on 2018-03-28 06:16
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
import multiselectfield.db.fields
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('map', '0040_auto_20180328_0309'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='casestudy',
|
||||||
|
name='negative_case_reasons',
|
||||||
|
field=multiselectfield.db.fields.MultiSelectField(blank=True, choices=[('VOLR', 'Violation of land rights'), ('VOHR', 'Violation of fundamental human rights, indigenous rights and/or other collective rights'), ('EIMP', 'Environmental impacts (severe impacts on ecosystems / violation of laws, plans or programs of environmental conservation or territorial governance systems etc.'), ('NCUL', 'Negative cultural impacts (erosion/destruction of bio-cultural heritage, impacts on sacred land etc)'), ('AGGR', 'Aggression/threats to community members opposed to the project, collaboration with organized crime etc'), ('ALAB', 'Abusive labour practices'), ('CRUP', 'Corruption and/or irregular permitting or contracting, conflicts of interest etc'), ('OTHR', 'Other reasons')], default=None, max_length=39, null=True, verbose_name='Reasons this is a negative case study'),
|
||||||
|
),
|
||||||
|
]
|
@ -161,6 +161,8 @@ class CaseStudy(models.Model):
|
|||||||
('CORS', _('A case of responsible sourcing/supply chain/lifecycle management')),
|
('CORS', _('A case of responsible sourcing/supply chain/lifecycle management')),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
NEGATIVE_CASE_REASONS_OTHER_TEXT = _('Other reasons')
|
||||||
|
|
||||||
NEGATIVE_CASE_REASONS_CHOICES = (
|
NEGATIVE_CASE_REASONS_CHOICES = (
|
||||||
('VOLR', _('Violation of land rights')),
|
('VOLR', _('Violation of land rights')),
|
||||||
('VOHR', _('Violation of fundamental human rights, indigenous rights and/or other collective rights')),
|
('VOHR', _('Violation of fundamental human rights, indigenous rights and/or other collective rights')),
|
||||||
@ -172,7 +174,7 @@ class CaseStudy(models.Model):
|
|||||||
etc')),
|
etc')),
|
||||||
('ALAB', _('Abusive labour practices')),
|
('ALAB', _('Abusive labour practices')),
|
||||||
('CRUP', _('Corruption and/or irregular permitting or contracting, conflicts of interest etc')),
|
('CRUP', _('Corruption and/or irregular permitting or contracting, conflicts of interest etc')),
|
||||||
('OTHR', _('Other reasons'))
|
('OTHR', NEGATIVE_CASE_REASONS_OTHER_TEXT)
|
||||||
)
|
)
|
||||||
|
|
||||||
# Dynamically generate a list of choices 40 years prior and after the current year.
|
# Dynamically generate a list of choices 40 years prior and after the current year.
|
||||||
@ -995,6 +997,15 @@ class CaseStudy(models.Model):
|
|||||||
"""Gets the 11 character YouTube video ID from the video field."""
|
"""Gets the 11 character YouTube video ID from the video field."""
|
||||||
return parse.parse_qs(parse.urlparse(self.video).query)["v"][0]
|
return parse.parse_qs(parse.urlparse(self.video).query)["v"][0]
|
||||||
|
|
||||||
|
def get_negative_case_reasons_no_other(self):
|
||||||
|
"""Return a list of negative case reasons, minus the 'other' choice (if selected)"""
|
||||||
|
choices = self.get_negative_case_reasons_list()
|
||||||
|
|
||||||
|
if choices.count(self.NEGATIVE_CASE_REASONS_OTHER_TEXT) > 0:
|
||||||
|
choices.remove(self.NEGATIVE_CASE_REASONS_OTHER_TEXT)
|
||||||
|
|
||||||
|
return choices
|
||||||
|
|
||||||
def get_renewable_generation_detail(self):
|
def get_renewable_generation_detail(self):
|
||||||
"""Prepend appropriate descriptive text when accessing renewable generation type."""
|
"""Prepend appropriate descriptive text when accessing renewable generation type."""
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
{% block stylesheets %}
|
{% block stylesheets %}
|
||||||
{{ super }}
|
{{ super }}
|
||||||
|
{% leaflet_css %}
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
body { font-size: 16px; }
|
body { font-size: 16px; }
|
||||||
@ -18,12 +19,14 @@ body { font-size: 16px; }
|
|||||||
|
|
||||||
.btn--back { margin: 15px 0; padding-left: 20px; left: -10px; position: absolute; }
|
.btn--back { margin: 15px 0; padding-left: 20px; left: -10px; position: absolute; }
|
||||||
|
|
||||||
|
#case-location {
|
||||||
|
height: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
.case-mediacoverage a {
|
.case-mediacoverage a {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.footer {
|
.footer {
|
||||||
background-color: #444;
|
background-color: #444;
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
@ -53,6 +56,7 @@ body { font-size: 16px; }
|
|||||||
|
|
||||||
dt { font-weight: bold; }
|
dt { font-weight: bold; }
|
||||||
dd { margin-left: 2em; }
|
dd { margin-left: 2em; }
|
||||||
|
dd ul { padding-left: 0; margin-left: 0; }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@ -250,6 +254,281 @@ dd { margin-left: 2em; }
|
|||||||
{{ case_study.direct_comms | linebreaks }}
|
{{ case_study.direct_comms | linebreaks }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
<h1>Technical and economic analysis</h1>
|
||||||
|
|
||||||
|
{% if case_study.sector_of_economy == 'RN' %}
|
||||||
|
<!-- renewables / 2.1 -->
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
{% if case_study.generation_technology %}
|
||||||
|
<dt>{% trans "Generation technology" %}:
|
||||||
|
<dd id="generation_technology">
|
||||||
|
{{ case_study.get_renewable_generation_detail }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.generation_technology == 'BIOG' or case_study.generation_technology == 'OTHB' %}
|
||||||
|
<dt>{% trans "Feedstock" %}:
|
||||||
|
<dd id="biomass_detail">
|
||||||
|
{{ case_study.biomass_detail }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.total_generation_capacity %}
|
||||||
|
<dt>{% trans "Total generation capacity" %}:
|
||||||
|
<dd id="total_generation_capacity">
|
||||||
|
{{ case_study.total_generation_capacity }} kW
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.generation_equipment_supplier %}
|
||||||
|
<dt>{% trans "Generation equipment supplier" %}:
|
||||||
|
<dd id="generation_equipment_supplier">
|
||||||
|
{{ case_study.generation_equipment_supplier }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.total_investment %}
|
||||||
|
<dt>{% trans "Approximate total investment" %}:
|
||||||
|
<dd id="total_investment">
|
||||||
|
${{ case_study.total_investment | intcomma }} (USD)
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.technical_or_economic_details %}
|
||||||
|
<dt>{% trans "Additional technical or economic details" %}:
|
||||||
|
<dd id="technical_or_economic_details">
|
||||||
|
{{ case_study.technical_or_economic_details | linebreaks }}
|
||||||
|
{% endif %}
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
{% elif case_study.sector_of_economy == 'PG' %}
|
||||||
|
<!-- batteries or storage / 2.2 -->
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
{% if case_study.power_technology %}
|
||||||
|
<dt>{% trans "Generation technology" %}:
|
||||||
|
<dd id="power_technology">
|
||||||
|
{% if case_study.power_technology == 'OT' %}
|
||||||
|
{{ case_study.power_technology_other }}
|
||||||
|
{% else %}
|
||||||
|
{{ case_study.power_technology }}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.energy_storage_capacity %}
|
||||||
|
<dt>{% trans "Energy storage capacity" %}:
|
||||||
|
<dd id="energy_storage_capacity">
|
||||||
|
{{ case_study.energy_storage_capacity }} TODO UNITS?
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.maximum_power_output %}
|
||||||
|
<dt>{% trans "Maximum power output" %}:
|
||||||
|
<dd id="maximum_power_output">
|
||||||
|
{{ case_study.maximum_power_output | intcomma }} W
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.discharge_time %}
|
||||||
|
<dt>{% trans "Time for discharge from full capacity" %}:
|
||||||
|
<dd id="discharge_time">
|
||||||
|
{{ case_study.discharge_time | intcomma }} {% trans "seconds" %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.contractor_or_supplier_of_technology %}
|
||||||
|
<dt>{% trans "Contractor and/or supplier of technology" %}:
|
||||||
|
<dd id="contractor_or_supplier_of_technology">
|
||||||
|
{{ case_study.contractor_or_supplier_of_technology }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.approximate_total_investment %}
|
||||||
|
<dt>{% trans "Approximate total investment" %}:
|
||||||
|
<dd id="approximate_total_investment">
|
||||||
|
${{ case_study.approximate_total_investment | intcomma }} (USD)
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.additional_technical_details %}
|
||||||
|
<dt>{% trans "Additional technical or economic details" %}:
|
||||||
|
<dd id="additional_technical_details">
|
||||||
|
{{ case_study.additional_technical_details | linebreaks }}
|
||||||
|
{% endif %}
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
{% elif case_study.sector_of_economy == 'SM' %}
|
||||||
|
<!-- minerals / 2.3 -->
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
{% if case_study.minerals_or_commodities %}
|
||||||
|
<dt>{% trans "Mineral commodity/commodities" %}:
|
||||||
|
<dd id="minerals_or_commodities">
|
||||||
|
{% if case_study.minerals_or_commodities == 'OTR' %}
|
||||||
|
{{ case_study.minerals_or_commodities_other }}
|
||||||
|
{% else %}
|
||||||
|
{{ case_study.get_minerals_or_commodities_display }}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.use_in_energy_economy %}
|
||||||
|
<dt>{% trans "Potential use in renewable energy economy" %}:
|
||||||
|
<dd id="use_in_energy_economy">
|
||||||
|
{% if case_study.use_in_energy_economy == 'OTR' %}
|
||||||
|
{{ case_study.use_in_energy_economy_other }}
|
||||||
|
{% else %}
|
||||||
|
{{ case_study.get_use_in_energy_economy_display }}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.project_life_span %}
|
||||||
|
<dt>{% trans "Project life span" %}:
|
||||||
|
<dd id="project_life_span">
|
||||||
|
{{ case_study.project_life_span }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.size_of_concessions %}
|
||||||
|
<dt>{% trans "Size of concessions" %}:
|
||||||
|
<dd id="size_of_concessions">
|
||||||
|
{{ case_study.size_of_concessions }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.projected_production_of_commodities %}
|
||||||
|
<dt>{% trans "Projected production of key commodities" %}:
|
||||||
|
<dd id="projected_production_of_commodities">
|
||||||
|
{{ case_study.projected_production_of_commodities }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.type_of_extraction %}
|
||||||
|
<dt>{% trans "Type of extraction" %}:
|
||||||
|
<dd id="type_of_extraction">
|
||||||
|
{{ case_study.get_type_of_extraction_display }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.associated_infrastructure %}
|
||||||
|
<dt>{% trans "Type of extraction" %}:
|
||||||
|
<dd id="associated_infrastructure">
|
||||||
|
{{ case_study.associated_infrastructure }}
|
||||||
|
{% endif %}
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<h2>Socio-economic analysis</h2>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt>{% trans "Case type" %}
|
||||||
|
<dd>{{ case_study.get_positive_or_negative_display }}
|
||||||
|
|
||||||
|
{% if case_study.positive_or_negative == "P" %}
|
||||||
|
<!-- positive case -->
|
||||||
|
|
||||||
|
{% if case_study.positive_case_type %}
|
||||||
|
<dt>{% trans "Type of positive case" %}:
|
||||||
|
<dd id="positive_case_type">
|
||||||
|
{{ case_study.get_positive_case_type_display }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.socioeconomic_benefits %}
|
||||||
|
<dt>{% trans "Socio-economic benefits" %}:
|
||||||
|
<dd id="socioeconomic_benefits">
|
||||||
|
{{ case_study.socioeconomic_benefits }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.key_actors_involved %}
|
||||||
|
<dt>{% trans "Key actors involved" %}:
|
||||||
|
<dd id="key_actors_involved">
|
||||||
|
{{ case_study.key_actors_involved }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.project_status_detail %}
|
||||||
|
<dt>{% trans "Current status of project" %}:
|
||||||
|
<dd id="project_status_detail">
|
||||||
|
{{ case_study.project_status_detail }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.obstacles_and_hindrances %}
|
||||||
|
<dt>{% trans "Obstacles and hindrances" %}:
|
||||||
|
<dd id="obstacles_and_hindrances">
|
||||||
|
{{ case_study.obstacles_and_hindrances }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.identified_partnerships %}
|
||||||
|
<dt>{% trans "Identified partnerships" %}:
|
||||||
|
<dd id="identified_partnerships">
|
||||||
|
{{ case_study.identified_partnerships }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
<!-- negative case -->
|
||||||
|
|
||||||
|
{% if case_study.negative_case_reasons %}
|
||||||
|
<dt>{% trans "Reasons this is a negative case study" %}:
|
||||||
|
<dd id="negative_case_reasons">
|
||||||
|
<ul>
|
||||||
|
{% for text in case_study.get_negative_case_reasons_no_other %}
|
||||||
|
<li>{{ text }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if case_study.negative_case_reasons_other %}
|
||||||
|
<li>{{ case_study.negative_case_reasons_other }}
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.negative_socioenvironmental_impacts %}
|
||||||
|
<dt>{% trans "Negative socio-environmental impacts" %}:
|
||||||
|
<dd id="negative_socioenvironmental_impacts">
|
||||||
|
{{ case_study.negative_socioenvironmental_impacts }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.isolated_or_widespread %}
|
||||||
|
<dt>{% trans "Isolated or commonplace" %}:
|
||||||
|
<dd id="isolated_or_widespread">
|
||||||
|
{{ case_study.isolated_or_widespread }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.when_did_organising_start %}
|
||||||
|
<dt>{% trans "Local organising efforts began" %}:
|
||||||
|
<dd id="when_did_organising_start">
|
||||||
|
{{ case_study.when_did_organising_start }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.who_has_been_involved %}
|
||||||
|
<dt>{% trans "Communities, groups and organisations involved" %}:
|
||||||
|
<dd id="who_has_been_involved">
|
||||||
|
{{ case_study.who_has_been_involved }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.potential_partnerships %}
|
||||||
|
<dt>{% trans "Potential partnerships" %}:
|
||||||
|
<dd id="potential_partnerships">
|
||||||
|
{{ case_study.potential_partnerships }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<h2>Related documents</h2>
|
||||||
|
|
||||||
|
{% if case_study.official_project_documents %}
|
||||||
|
<p>Official documents: {{ case_study.official_project_documents.url }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.other_documents %}
|
||||||
|
<p>Other documents: {{ case_study.other_documents.url }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Location / GIS data</h2>
|
||||||
|
|
||||||
|
{% leaflet_map "case_location" callback="window.map_init" %}
|
||||||
|
|
||||||
|
{% if case_study.shapefiles %}
|
||||||
|
<p>Shapefiles: {{ case_study.shapefiles.url }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.coordinate_reference_system %}
|
||||||
|
<p>Coordinate reference system: {{ coordinate_reference_system }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if case_study.name_of_territory_or_area %}
|
||||||
|
<p>Name of territory or area: {{ case_study.name_of_territory_or_area }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -259,7 +538,7 @@ dd { margin-left: 2em; }
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<ul class="linklist">
|
<ul class="linklist">
|
||||||
<li><a href="{% url 'index' %}">Map of all projects</a>
|
<li><a href="{% url 'index' %}">Map of all case studies</a>
|
||||||
<li><a href="/about">About us</a>
|
<li><a href="/about">About us</a>
|
||||||
<li class="linklist-item--spacer">© Ojuso 2018
|
<li class="linklist-item--spacer">© Ojuso 2018
|
||||||
</ul>
|
</ul>
|
||||||
@ -269,3 +548,19 @@ dd { margin-left: 2em; }
|
|||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block scripts %}
|
||||||
|
{% leaflet_js %}
|
||||||
|
<script>
|
||||||
|
function map_init(map, options) {
|
||||||
|
|
||||||
|
var latlng = L.latLng(
|
||||||
|
{{ case_study.location.coords | last }},
|
||||||
|
{{ case_study.location.coords | first }}
|
||||||
|
);
|
||||||
|
|
||||||
|
map.setView(latlng, 6);
|
||||||
|
L.marker(latlng).addTo(map);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
||||||
|
@ -23,3 +23,27 @@ class CaseStudyTests(TestCase):
|
|||||||
"""get_renewable_generation_detail() should return the detail provided in .generation_technology_other"""
|
"""get_renewable_generation_detail() should return the detail provided in .generation_technology_other"""
|
||||||
case_study = CaseStudy(generation_technology='OTHR', generation_technology_other='Warp drive')
|
case_study = CaseStudy(generation_technology='OTHR', generation_technology_other='Warp drive')
|
||||||
self.assertEqual(case_study.get_renewable_generation_detail(), "Warp drive")
|
self.assertEqual(case_study.get_renewable_generation_detail(), "Warp drive")
|
||||||
|
|
||||||
|
# These tests are commented out because they are not working, but the code
|
||||||
|
# in production is. When running as a test, get_negative_case_reasons_no_other()
|
||||||
|
# is returning a list of coded options, like
|
||||||
|
# ['V', 'O', 'L', 'R', ',', 'A', 'L', 'A', 'B']
|
||||||
|
# instead of a list of text like
|
||||||
|
# ['Violation of land rights', 'Abusive labour practices']
|
||||||
|
# I am too much of a Django newbie to know why. – Anna
|
||||||
|
|
||||||
|
# def test_get_negative_case_reasons_no_other_1(self):
|
||||||
|
# """Test with case having no 'other' entry"""
|
||||||
|
# case_study = CaseStudy(negative_case_reasons='VOLR,ALAB')
|
||||||
|
# self.assertEqual(case_study.get_negative_case_reasons_no_other(),
|
||||||
|
# [ 'Violation of land rights'
|
||||||
|
# , 'Abusive labour practices'
|
||||||
|
# ])
|
||||||
|
#
|
||||||
|
# def test_get_negative_case_reasons_no_other_2(self):
|
||||||
|
# """Test with case having an 'other' entry"""
|
||||||
|
# case_study = CaseStudy(negative_case_reasons='VOLR,ALAB,OTHR')
|
||||||
|
# self.assertEqual(case_study.get_negative_case_reasons_no_other(),
|
||||||
|
# [ 'Violation of land rights'
|
||||||
|
# , 'Abusive labour practices'
|
||||||
|
# ])
|
||||||
|
Loading…
Reference in New Issue
Block a user