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')),
|
||||
)
|
||||
|
||||
NEGATIVE_CASE_REASONS_OTHER_TEXT = _('Other reasons')
|
||||
|
||||
NEGATIVE_CASE_REASONS_CHOICES = (
|
||||
('VOLR', _('Violation of land rights')),
|
||||
('VOHR', _('Violation of fundamental human rights, indigenous rights and/or other collective rights')),
|
||||
@ -172,7 +174,7 @@ class CaseStudy(models.Model):
|
||||
etc')),
|
||||
('ALAB', _('Abusive labour practices')),
|
||||
('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.
|
||||
@ -995,6 +997,15 @@ class CaseStudy(models.Model):
|
||||
"""Gets the 11 character YouTube video ID from the video field."""
|
||||
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):
|
||||
"""Prepend appropriate descriptive text when accessing renewable generation type."""
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
{% block stylesheets %}
|
||||
{{ super }}
|
||||
{% leaflet_css %}
|
||||
|
||||
<style>
|
||||
body { font-size: 16px; }
|
||||
@ -18,12 +19,14 @@ body { font-size: 16px; }
|
||||
|
||||
.btn--back { margin: 15px 0; padding-left: 20px; left: -10px; position: absolute; }
|
||||
|
||||
#case-location {
|
||||
height: 400px;
|
||||
}
|
||||
|
||||
.case-mediacoverage a {
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
.footer {
|
||||
background-color: #444;
|
||||
color: #ddd;
|
||||
@ -53,6 +56,7 @@ body { font-size: 16px; }
|
||||
|
||||
dt { font-weight: bold; }
|
||||
dd { margin-left: 2em; }
|
||||
dd ul { padding-left: 0; margin-left: 0; }
|
||||
</style>
|
||||
|
||||
{% endblock %}
|
||||
@ -250,6 +254,281 @@ dd { margin-left: 2em; }
|
||||
{{ case_study.direct_comms | linebreaks }}
|
||||
{% 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>
|
||||
@ -259,7 +538,7 @@ dd { margin-left: 2em; }
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<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 class="linklist-item--spacer">© Ojuso 2018
|
||||
</ul>
|
||||
@ -269,3 +548,19 @@ dd { margin-left: 2em; }
|
||||
</footer>
|
||||
|
||||
{% 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"""
|
||||
case_study = CaseStudy(generation_technology='OTHR', generation_technology_other='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