From 310be805c575bbad9917f461980b3eefbe69da7a Mon Sep 17 00:00:00 2001 From: Livvy Mackintosh Date: Sat, 18 Nov 2017 16:54:44 +0000 Subject: [PATCH] Update frontend and forms --- apps/map/forms.py | 134 ++++- apps/map/models.py | 465 +++++++++++++++++- .../static/map/images/ojuso-logo-black.png | Bin 23774 -> 0 bytes .../static/map/images/ojuso-logo-white.png | Bin 5081 -> 0 bytes apps/map/templates/map/detail.html | 10 +- apps/map/templates/map/form.html | 58 ++- apps/map/templates/map/how_much_time.html | 4 +- apps/map/templates/map/index.html | 16 +- apps/map/urls.py | 7 +- ojusomap/settings.py | 2 +- ojusomap/templates/404.html | 12 +- ojusomap/templates/500.html | 5 +- ojusomap/templates/base.html | 104 ++-- ojusomap/templates/base_page.html | 10 +- ojusomap/templates/base_with_jumbo.html | 11 +- requirements.txt | 2 + 16 files changed, 712 insertions(+), 128 deletions(-) delete mode 100644 apps/map/static/map/images/ojuso-logo-black.png delete mode 100644 apps/map/static/map/images/ojuso-logo-white.png diff --git a/apps/map/forms.py b/apps/map/forms.py index 44b8351..841f59b 100644 --- a/apps/map/forms.py +++ b/apps/map/forms.py @@ -1,7 +1,9 @@ from django.urls import reverse +from django import forms +from django.utils.translation import ugettext as _ from crispy_forms.helper import FormHelper -from crispy_forms.layout import Submit, Layout -from crispy_forms.bootstrap import Tab, TabHolder +from crispy_forms.layout import Submit, Layout, HTML, Fieldset +from crispy_forms.bootstrap import Tab, TabHolder, PrependedText, FormActions from leaflet.forms.widgets import LeafletWidget from moderation.forms import BaseModeratedObjectForm @@ -19,12 +21,16 @@ class BaseCaseStudyForm(BaseModeratedObjectForm): self.helper.form_action = 'add' self.helper.label_class = 'col-lg-2' self.helper.field_class = 'col-lg-8' - self.helper.add_input(Submit('submit', 'Submit')) class Meta: model = CaseStudy fields = '__all__' - widgets = {'location': LeafletWidget(attrs={})} + widgets = { + 'location': LeafletWidget(attrs={}), + 'official_project_documents': forms.ClearableFileInput(attrs={'multiple': True}), + 'other_documents': forms.ClearableFileInput(attrs={'multiple': True}), + 'shapefiles': forms.ClearableFileInput(attrs={'multiple': True}), + } class ShortCaseStudyForm(BaseCaseStudyForm): @@ -69,7 +75,7 @@ class LongCaseStudyForm(BaseCaseStudyForm): self.helper.form_action = reverse('long-form') self.helper.layout = Layout( TabHolder( - Tab("First Page", + Tab(_("Basic information"), 'entry_name', 'location', 'sector_of_economy', @@ -86,28 +92,116 @@ class LongCaseStudyForm(BaseCaseStudyForm): 'project_status', 'synopsis', 'full_description', + 'project_owners', + 'shareholders', + 'financial_institutions', + 'energy_customers', 'image', 'image_caption', 'image_credit', 'video', + 'video_caption', + 'video_credit', 'media_coverage_mainstream', 'media_coverage_independent', - 'community_voices'), + 'community_voices', + 'direct_comms', + 'social_media_links', + FormActions( + HTML(""+_("Next")+"") + ) + ), Tab( - "Second Page", - 'generation_technology', - 'biomass_detail', - 'generation_technology_other', - 'total_generation_capacity', - 'total_investment', - 'technical_or_economic_details', - 'power_technology', - 'power_technology_other', - 'energy_storage_capacity', + _("Technical and economic analysis"), + Fieldset( + _("Power Generation Questions"), + 'generation_technology', + 'biomass_detail', + 'generation_technology_other', + 'total_generation_capacity', + 'generation_equipment_supplier', + 'total_investment', + 'technical_or_economic_details', + css_id="power_generation_questions" + ), + Fieldset( + _("Power Grids/Energy Storage Questions"), + 'power_technology', + 'power_technology_other', + 'energy_storage_capacity', + 'maximum_power_output', + 'discharge_time', + 'contractor_or_supplier_of_technology', + 'approximate_total_investment', + 'additional_technical_details', + css_id="power_grids_energy_storage_questions" + ), + Fieldset( + _("Mineral/Commodity Questions"), + 'minerals_or_commodities', + 'minerals_or_commodities_other', + 'use_in_energy_economy', + 'use_in_energy_economy_other', + 'project_life_span', + 'size_of_concessions', + 'projected_production_of_commodities', + 'type_of_extraction', + 'associated_infrastructure', + css_id="mineral_commodity_questions" + ), + FormActions( + HTML(""+_("Previous")+""), + HTML(""+_("Next")+"") + ) + ), + Tab( + _("Socio-environmental analysis"), + Fieldset( + _("Positive Case Questions"), + 'positive_case_type', + 'socioeconomic_benefits', + 'project_status_detail', + 'obstacles_and_hindrances', + 'identified_partnerships', + css_id="positive_case_questions" + ), + Fieldset( + _("Negative Case Questions"), + 'negative_case_reasons', + 'negative_case_reasons_other', + 'negative_socioenvironmental_impacts', + 'isolated_or_widespread', + 'when_did_organising_start', + 'who_has_been_involved', + 'participation_mechanisms', + 'potential_partnerships', + 'wants_conversation_with_ojuso', + css_id="negative_case_questions" + ), + Fieldset( + _("Common Questions"), + 'key_actors_involved', + css_id="common_questions" + ), + FormActions( + HTML(""+_("Previous")+""), + HTML(""+_("Next")+"") + ) + ), + Tab( + _("Uploads"), + 'official_project_documents', + 'other_documents', + 'shapefiles', + 'coordinate_reference_system', + 'name_of_territory_or_area', + 'shown_on_other_platforms', + 'shown_on_other_platforms_detail', + FormActions( + HTML(""+_("Previous")+""), + Submit('submit', _('Submit'), css_class="btn-success pull-right") + ) ))) - - - class Meta(BaseCaseStudyForm.Meta): - fields = '__all__' \ No newline at end of file + fields = '__all__' diff --git a/apps/map/models.py b/apps/map/models.py index 9c294c2..6011c20 100644 --- a/apps/map/models.py +++ b/apps/map/models.py @@ -6,9 +6,16 @@ from django_extensions.db.fields import AutoSlugField from django_countries.fields import CountryField from django.utils.translation import ugettext as _ from django.template.defaultfilters import slugify +from multiselectfield import MultiSelectField from . import validators +class Shapefile(models.Model): + file = models.FileField( + upload_to='shapefiles/', + ) + + class CaseStudy(models.Model): """Model for case studies submitted to the Ojuso Platform""" @@ -88,6 +95,81 @@ class CaseStudy(models.Model): ('OT', _('Others')) ) + TYPE_OF_EXTRACTION_CHOICES = ( + ('SUR', _('Surface (open pit/open cast/open cut mining')), + ('SUB', _('Sub-surface (underground mining)')), + ('SEA', _('Seabed mining')), + ('URB', _('Urban mining/recycling')) + ) + + MINERAL_COMMODITY_CHOICES = ( + ('ALU', _('Aluminium (Bauxite)')), + ('ARS', _('Arsenic')), + ('BER', _('Beryllium')), + ('CAD', _('Cadmium')), + ('CHR', _('Chromium')), + ('COK', _('Coking')), + ('COA', _('Coal (for steel)')), + ('COP', _('Copper')), + ('GAL', _('Gallium')), + ('GER', _('Germanium')), + ('GLD', _('Gold')), + ('HRE', _('Heavy Rare Earth Elements (Gadolinium, Terbium, Dysprosium, Holmium, Erbium, Thulium, Ytterbium, Lutetium, Yttrium, Scandium)')), + ('IRN', _('Iron')), + ('LRE', _('Light Rare Earth Elements (Lanthanum, Cerium, Praseodymium, Neodymium, Promethium, Samarium, Europium)')), + ('LED', _('Lead')), + ('LIT', _('Lithium')), + ('MAN', _('Manganese')), + ('MER', _('Mercury')), + ('MOL', _('Molybdenum')), + ('NIC', _('Nickel')), + ('NIO', _('Niobium')), + ('PGM', _('Platinum group metals (ruthenium, rhodium, palladium, osmium, iridium, and platinum)')), + ('RHE', _('Rhenium')), + ('SIL', _('Silicon')), + ('SIV', _('Silver')), + ('TAN', _('Tantalum')), + ('TEL', _('Tellurium')), + ('THA', _('Thallium')), + ('TIN', _('Tin')), + ('TIT', _('Titanium')), + ('TUN', _('Tungsten')), + ('VAN', _('Vanadium')), + ('ZNC', _('Zinc')), + ('OTR', _('Other')) + ) + + USE_IN_ENERGY_ECONOMY_CHOICES = ( + ('WTM', _('Wind turbine manufacturing')), + ('SPM', _('Solar panel manufacturing')), + ('STM', _('Solar thermal system manufacturing')), + ('HGM', _('Hydropower generator manufacturing')), + ('GGM', _('Geothermal generator manufacturing')), + ('ESS', _('Energy storage (inc. battery systems)')), + ('OTR', _('Others')) + ) + + POSITIVE_CASE_TYPE_CHOICES = ( + ('CREP', _('Community renewable energy project')), + ('EACP', _('Energy as a commons project')), + ('PSEP', _('Public/state (federal, state, municipal) energy project')), + ('CORS', _('A case of responsible sourcing/supply chain/lifecycle management')), + ) + + NEGATIVE_CASE_REASONS_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')) + ) + # Dynamically generate a list of choices 40 years prior and after the current year. YEAR_CHOICES = [(r, r) for r in range((datetime.datetime.now().year - 40), @@ -110,11 +192,10 @@ class CaseStudy(models.Model): date_created = models.DateTimeField(auto_now_add=True, null=False) # Slug derived from entry_name, used in urls for SEO - # TODO: Change this so it's not dynamic. Slugs should never change. - slug = AutoSlugField(populate_from=['entry_name']) + slug = AutoSlugField(populate_from=['entry_name'], editable=False) ## - # First Screen + # First Screen - Basic information ## # 1.1 @@ -193,13 +274,15 @@ class CaseStudy(models.Model): help_text=_("Select the most relevant type of ecosystem."), max_length=6, choices=TYPE_OF_ECOSYSTEM_CHOICES, + default=None, + null=True, + blank=True ) # 1.5.5.3 - describe_ecosystem = models.CharField( + describe_ecosystem = models.TextField( verbose_name=_("Describe the ecosystem"), help_text=_("In your own words, add more detail about the ecosystem."), - max_length=256, ) # 1.5.6 @@ -254,8 +337,7 @@ class CaseStudy(models.Model): verbose_name=_("Synopsis"), help_text=_("Briefly describe the project. This will be displayed at\ the top of the case study page. Maximum 500 chars (about \ - 3½ tweets)"), - max_length=500 + 3½ tweets)") ) # 1.10 @@ -398,9 +480,10 @@ class CaseStudy(models.Model): ) ## - # Second Screen + # Second Screen - Technical and economic analysis ## + # 2.1 - Renewable Energy Generation # 2.1.1 generation_technology = models.CharField( verbose_name=_("Generation technology"), @@ -415,7 +498,7 @@ class CaseStudy(models.Model): # 2.1.1.12 # Should be filled in if 2.1.1 was answered as biogas or biomass. biomass_detail = models.CharField( - verbose_name=_("Generation technology detail"), + verbose_name=_("Description of feedstock"), help_text=_("If you selected biogas or biomass, please describe the feedstock (where the fuel came from e.g. \ corn, algae, anaerobic digestion, commercial waste etc)"), max_length=200, @@ -443,7 +526,15 @@ class CaseStudy(models.Model): blank=True, ) - # 2.1.3 - autocomplete_light queryset + # 2.1.3 + # TODO: Auto-completion based on previous entries so we can query case-studies with the same answer. + generation_equipment_supplier = models.TextField( + verbose_name=_("Generation equipment supplier"), + help_text=_("Enter the supplier of the generation equipment. (E.g. Siemens)"), + default=None, + null=True, + blank=True + ) # 2.1.4 total_investment = models.IntegerField( @@ -464,7 +555,7 @@ class CaseStudy(models.Model): blank=True ) - # 2.2 - Only if 1.2.2 selected + # 2.2 - Power Grids / Energy Storage # 2.2.1 power_technology = models.CharField( verbose_name=_("Power technology"), @@ -476,6 +567,7 @@ class CaseStudy(models.Model): blank=True ) + # 2.2.1.4 power_technology_other = models.CharField( verbose_name=_("Other power technology"), help_text=_("If you answered 'others', please specify the power technologies."), @@ -485,6 +577,7 @@ class CaseStudy(models.Model): blank=True ) + # 2.2.2 energy_storage_capacity = models.IntegerField( verbose_name=_("Energy storage capacity"), help_text=_("Enter the total capacity of the energy storage system."), @@ -493,12 +586,321 @@ class CaseStudy(models.Model): blank=True ) - ## - # Third Screen - ## + # 2.2.2.1 + maximum_power_output = models.BigIntegerField( + verbose_name=_('Maximum power output'), + help_text=_('Enter the maximum power output of the storage system in Watts (W). (W=J/s)'), + default=None, + null=True, + blank=True + ) + + # 2.2.2.2 + discharge_time = models.BigIntegerField( + verbose_name=_('Time for discharge from full capacity'), + help_text=_('Enter the time it takes to discharge from full capacity at maximum power output (in seconds) \ + (1h=3600s)'), + default=None, + null=True, + blank=True + ) + + # 2.2.3 + contractor_or_supplier_of_technology = models.CharField( + verbose_name=_('Contractor and/or supplier of technology'), + help_text=_('List companies that act as contractors or suppliers of technology related to energy storage.'), + max_length=256, + default=None, + null=True, + blank=None + ) + + # 2.2.4 + approximate_total_investment = models.PositiveIntegerField( + verbose_name=_('Approximate total investment'), + help_text=_('Enter the approximate total investment in USD ($).'), + default=None, + null=True, + blank=None + ) + + # 2.2.5 + additional_technical_details = models.CharField( + verbose_name=_("Additional technical or economic details"), + help_text=_("Add any additional details such as: length, from-to, voltage, substations etc"), + max_length=512, + default=None, + null=True, + blank=True + ) + + # 2.3.1.1 + minerals_or_commodities = models.CharField( + verbose_name=_("Mineral commodity/commodities"), + help_text=_("Select the mineral commodity that is primarily mined in this project"), + max_length=3, + choices=MINERAL_COMMODITY_CHOICES, + default=None, + null=True, + blank=True + ) + + # 2.3.1.2 + minerals_or_commodities_other = models.CharField( + verbose_name=_("Other mineral commodity"), + help_text=_("Enter the mineral commodity that isn't in the list."), + max_length=64, + default=None, + null=True, + blank=True + ) + + # 2.3.2.1 + use_in_energy_economy = models.CharField( + verbose_name=_("Potential user in renewable energy economy"), + help_text=_("Select the potential use of the minerals in the renewable energy economy"), + max_length=3, + choices=USE_IN_ENERGY_ECONOMY_CHOICES, + default=None, + null=True, + blank=True + ) + + # 2.3.2.9 + use_in_energy_economy_other = models.CharField( + verbose_name=_('Other use in energy economy'), + max_length=128, + default=None, + null=True, + blank=True + ) + + # 2.3.3.1 + project_life_span = models.CharField( + verbose_name=_("Project life span"), + help_text=_("e.g. 12 years of production, 15 years overall"), + max_length=200, + default=None, + null=True, + blank=None + ) + + # 2.3.3.2 + size_of_concessions = models.CharField( + verbose_name=_("Size of concessions"), + help_text=_("Describe the size of concession(s) granted to company/companies (e.g. 'one concession encompassing\ + 2,300 hectares')"), + max_length=200, + default=None, + null=True, + blank=None + ) + + # 2.3.3.3 + projected_production_of_commodities = models.CharField( + verbose_name=_("Projected production of key commodities"), + help_text=_("Describe the projected production of commodities per annum and overall (e.g. '40 million tonnes of\ + iron ore per year, 200 million tonnes over 5 year life of mine'"), + max_length=256, + default=None, + null=True, + blank=None + ) + + # 2.3.4 + type_of_extraction = models.CharField( + verbose_name=_("Type of extraction"), + max_length=2, + choices=TYPE_OF_EXTRACTION_CHOICES, + default=None, + null=True, + blank=True + ) + + # 2.3.5 + associated_infrastructure = models.CharField( + verbose_name=_("Associated infrastructure in the locality"), + help_text=_("List any associated infrastructure in the locality (e.g. tailings dams/mine waste storage and \ + treatment facilities; ore processing facilities; smelting facilities; hydroelectric dams/energy infrastructure;\ + transport infrastructure e.g. roads or rail."), + max_length=256, + default=None, + null=True, + blank=True + ) ## - # Fourth Screen + # Third Screen - Socio-economic analysis + ## + + # 3.1.1 + positive_case_type = models.CharField( + verbose_name=_('What kind of positive case is this entry about?'), + help_text=_('Select the most relevant type of positive case'), + choices=POSITIVE_CASE_TYPE_CHOICES, + max_length=4, + default=None, + null=True, + blank=True, + ) + + # 3.1.2 + socioeconomic_benefits = models.TextField( + verbose_name=_('Socio-economic benefits'), + help_text=_('Please expand on your response given in the full description on page one. We would expect \ + benefits to go beyond emissions savings, paying rent for land, or complying with environmental or social \ + legislation'), + default=None, + null=True, + blank=True + ) + + # 3.1.3 + 3.2.5 + key_actors_involved = models.CharField( + verbose_name=_('Key actors involved (individual/organisational)'), + max_length=256, + default=None, + null=True, + blank=True + ) + + # 3.1.4 + project_status_detail = models.TextField( + verbose_name=_('Current status of the project'), + help_text=_("Describe the current status of the project, expanding beyond 'existing', 'under construction' etc"), + default=None, + null=True, + blank=True + ) + + # 3.1.5 + obstacles_and_hindrances = models.CharField( + verbose_name=_('Obstacles and hindrances'), + help_text=_('List any obstacles or hindrances experienced in the course of the project'), + max_length=512, + default=None, + null=True, + blank=True + ) + + # 3.1.6 + identified_partnerships = models.CharField( + verbose_name=_('Identified partnerships'), + help_text=_('Are you looking for partnerships or have any clearly identified need? If so, please describe it \ + here.'), + max_length=256, + default=None, + null=True, + blank=True + ) + + # 3.1.7.1 + 3.2.8.1 + + # 3.1.7.2 + 3.2.8.1 + + # 3.1.7.3 + 3.2.8.1 + + # 3.1.7.4 + 3.2.8.1 + + # 3.1.7.5 + 3.2.8.1 + + # 3.1.7.6 + 3.2.8.1 + + # 3.2.1 + negative_case_reasons = MultiSelectField( + choices=NEGATIVE_CASE_REASONS_CHOICES, + default=None, + null=True, + blank=True + ) + + # 3.2.1.9 + negative_case_reasons_other = models.CharField( + verbose_name=_("Other reason for negative case"), + help_text=_("Please include other reasons, noting that we aim to focus on projects with substantive negative \ + impacts on vulnerable groups."), + max_length=512, + default=None, + null=True, + blank=True + ) + + # 3.2.2 + negative_socioenvironmental_impacts = models.TextField( + verbose_name=_("Describe the negative socio-environmental impacts"), + help_text=_("Provide a detailed description of the negative socio-environmental impacts (please provide all \ + relevant details, such as type of ecosystem and presence of any existing reserve in the area, \ + , specific communities affected by the project, total geographic footprint of the project, and \ + tenure system affected in the case of land grabs, kind of permits that were irregularly issued if \ + this is the case."), + default=None, + null=True, + blank=True + ) + + # 3.2.3 + isolated_or_widespread = models.TextField( + verbose_name=_("Describe if the project is isolated or commonplace."), + help_text=_("Is this an isolated project or are there similar projects in the same geographic area? If there \ + are more, can you describe them? Are there any significant cumulative synergistic effects?"), + default=None, + null=True, + blank=True + ) + + # 3.2.4.1 + when_did_organising_start = models.CharField( + verbose_name=_("When did local organising efforts begin?"), + help_text=_("Before the project started? During project implementation? After project implementation? \ + Describe in your own words."), + max_length=512, + default=None, + null=True, + blank=True + ) + + # 3.2.4.2 + who_has_been_involved = models.CharField( + verbose_name=_("Which communities, groups and organisations have been involved?"), + max_length=512, + default=None, + null=True, + blank=True + ) + + # 3.2.4.3 + participation_mechanisms = models.CharField( + verbose_name=_("What mechanisms of participation have been used?"), + help_text=_("e.g. direct action, local referendums, legal cases, letters or petitions etc"), + max_length=512, + default=None, + null=True, + blank=True + ) + + # 3.2.6 + potential_partnerships = models.CharField( + verbose_name=_("Describe potential partnerships"), + help_text=_("Are you looking for partnerships or do you have any clearly identified need? If so, please \ + describe it here."), + max_length=512, + default=None, + null=True, + blank=True + ) + + # 3.2.7 + wants_conversation_with_ojuso = models.NullBooleanField( + verbose_name=_("Would you like to have a conversation with the ojuso team?"), + help_text=_("This would be a conversation about challenging or engaging related developers, companies and \ + investors."), + default=None, + null=True, + blank=True + ) + + ## + # Fourth Screen - Uploads ## # 4.1 @@ -507,7 +909,7 @@ class CaseStudy(models.Model): help_text=_("Attach any legal or official documents that relate to the project."), default=None, null=True, - blank=True + blank=True, ) # 4.2 @@ -516,13 +918,33 @@ class CaseStudy(models.Model): help_text=_("Attach any other documents that relate to the project."), default=None, null=True, + blank=True, + ) + + # 4.3.1 + shapefiles = models.FileField( + verbose_name=_("Shapefiles"), + help_text=_("If you have territory that you would like to show in relation to this project - e.g. Bienes \ + Comunales de Ixtepec etc. This is a set of 3 or more (often 5-6) files with file extensions like \ + .cpg, .dbf, .prj, .qpj, .shp, .shx"), + default=None, + null=True, blank=True ) - # 4.3 - definition_of_affected_territories = models.CharField( - verbose_name=_("Definition of affected territories"), - help_text=_("In your own words, define the territories that the project will affect."), + # 4.3.2 + coordinate_reference_system = models.CharField( + verbose_name=_("Coordinate reference system"), + help_text=_("Enter the coordinate reference system of the shapefiles."), + max_length=12, + default=None, + null=True, + blank=True + ) + + # 4.3.3 + name_of_territory_or_area = models.CharField( + verbose_name=_("Name of territory or area"), max_length=512, default=None, null=True, @@ -567,3 +989,6 @@ class CaseStudy(models.Model): def get_video_id(self): """Gets the 11 character YouTube video ID from the video field.""" return parse.parse_qs(parse.urlparse(self.video).query)["v"][0] + + + diff --git a/apps/map/static/map/images/ojuso-logo-black.png b/apps/map/static/map/images/ojuso-logo-black.png deleted file mode 100644 index b4ac2556885404851fa04f03cead59682949745c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23774 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 vD-APOkAOz_2R|)nK?_>Yf)=#kKL-B>L%PD1
- {% trans "Back to Map" %} +

{{case_study.entry_name}}

{{case_study.synopsis}}

- {{case_study.get_sector_of_economy_display}} + {{case_study.get_sector_of_economy_display}} {% if case_study.positive_or_negative == "P" %} - {{case_study.get_positive_or_negative_display}} + {{case_study.get_positive_or_negative_display}} {% elif case_study.positive_or_negative == "N"%} - {{case_study.get_positive_or_negative_display}} + {{case_study.get_positive_or_negative_display}} {% endif %} - {{case_study.country.name}} + {{case_study.country.name}}
Created {{case_study.date_created|naturaltime}} by {{case_study.author}}
diff --git a/apps/map/templates/map/form.html b/apps/map/templates/map/form.html index 74268df..852b9b4 100644 --- a/apps/map/templates/map/form.html +++ b/apps/map/templates/map/form.html @@ -34,27 +34,67 @@ - + + + + {# Additional Stylesheets #} {% block stylesheets %} {% endblock %} - - + -