226 lines
9.2 KiB
Python
226 lines
9.2 KiB
Python
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, HTML, Fieldset, Div
|
|
from crispy_forms.bootstrap import Tab, TabHolder, PrependedText, FormActions
|
|
from leaflet.forms.widgets import LeafletWidget
|
|
|
|
from .models import CaseStudy
|
|
|
|
|
|
class BaseCaseStudyForm(forms.models.ModelForm):
|
|
"""Base form class for the CaseStudy model."""
|
|
def __init__(self, *args, **kwargs):
|
|
super(BaseCaseStudyForm, self).__init__(*args, **kwargs)
|
|
self.helper = FormHelper(self)
|
|
self.helper.form_id = 'case-study-form'
|
|
self.helper.form_class = 'form-horizontal'
|
|
self.helper.form_method = 'post'
|
|
self.helper.form_action = 'add'
|
|
self.helper.label_class = 'col-lg-2'
|
|
self.helper.field_class = 'col-lg-8'
|
|
|
|
class Meta:
|
|
model = CaseStudy
|
|
fields = '__all__'
|
|
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):
|
|
"""Short version of the CaseStudy form."""
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(ShortCaseStudyForm, self).__init__(*args, **kwargs)
|
|
self.helper.form_action = reverse('short-form')
|
|
self.helper.add_input(Submit('submit', _('Submit'), css_class='btn-success center-block'))
|
|
|
|
class Meta(BaseCaseStudyForm.Meta):
|
|
fields = [
|
|
'entry_name',
|
|
'location',
|
|
'sector_of_economy',
|
|
'positive_or_negative',
|
|
'country',
|
|
'area_of_land',
|
|
'land_ownership',
|
|
'land_ownership_details',
|
|
'location_context',
|
|
'type_of_ecosystem',
|
|
'describe_ecosystem',
|
|
'affects_indigenous',
|
|
'affects_indigenous_detail',
|
|
'project_status',
|
|
'synopsis',
|
|
'full_description',
|
|
'image',
|
|
'image_caption',
|
|
'image_credit',
|
|
'video',
|
|
'media_coverage_mainstream',
|
|
'media_coverage_independent',
|
|
'community_voices'
|
|
]
|
|
|
|
class LongCaseStudyForm(BaseCaseStudyForm):
|
|
"""Long version of the CaseStudy form."""
|
|
def __init__(self, *args, **kwargs):
|
|
super(LongCaseStudyForm, self).__init__(*args, **kwargs)
|
|
self.helper.form_action = reverse('long-form')
|
|
self.helper.layout = Layout(
|
|
TabHolder(
|
|
Tab(_("Basic information"),
|
|
'entry_name',
|
|
'location',
|
|
'country',
|
|
'area_of_land',
|
|
'land_ownership',
|
|
'land_ownership_details',
|
|
'location_context',
|
|
'type_of_ecosystem',
|
|
'describe_ecosystem',
|
|
'affects_indigenous',
|
|
'affects_indigenous_detail',
|
|
'project_status',
|
|
'synopsis',
|
|
'full_description',
|
|
'image',
|
|
'image_caption',
|
|
'image_credit',
|
|
'video',
|
|
'video_caption',
|
|
'video_credit',
|
|
Fieldset(
|
|
_("Ownership and finance"),
|
|
'project_owners',
|
|
'shareholders',
|
|
'financial_institutions',
|
|
'financial_institutions_other',
|
|
'energy_customers'
|
|
),
|
|
Fieldset(
|
|
_("Media reports and other communications"),
|
|
'media_coverage_mainstream',
|
|
'media_coverage_independent',
|
|
'community_voices',
|
|
'direct_comms',
|
|
'social_media_links'
|
|
),
|
|
FormActions(
|
|
HTML("<a class='btn btn-primary btnNext pull-right'>"+_("Next")+"</a>")
|
|
)
|
|
),
|
|
Tab(
|
|
_("Technical and economic analysis"),
|
|
'sector_of_economy',
|
|
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("<a class='btn btn-primary btnPrevious'>"+_("Previous")+"</a>"),
|
|
HTML("<a class='btn btn-primary btnNext pull-right'>"+_("Next")+"</a>")
|
|
)
|
|
),
|
|
Tab(
|
|
_("Socio-environmental analysis"),
|
|
'positive_or_negative',
|
|
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"
|
|
),
|
|
Div(
|
|
'key_actors_involved',
|
|
css_id="common_questions"
|
|
),
|
|
FormActions(
|
|
HTML("<a class='btn btn-primary btnPrevious'>"+_("Previous")+"</a>"),
|
|
HTML("<a class='btn btn-primary btnNext pull-right'>"+_("Next")+"</a>")
|
|
)
|
|
),
|
|
Tab(
|
|
_("Contact details"),
|
|
'contact_email',
|
|
'contact_phone',
|
|
'contact_website',
|
|
PrependedText('contact_twitter', '@', placeholder='username'),
|
|
'contact_facebook',
|
|
'contact_other',
|
|
FormActions(
|
|
HTML("<a class='btn btn-primary btnPrevious'>"+_("Previous")+"</a>"),
|
|
HTML("<a class='btn btn-primary btnNext pull-right'>"+_("Next")+"</a>")
|
|
)
|
|
),
|
|
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("<a class='btn btn-primary btnPrevious'>"+_("Previous")+"</a>"),
|
|
Submit('submit', _('Submit'), css_class="btn-success pull-right")
|
|
)
|
|
)))
|
|
|
|
class Meta(BaseCaseStudyForm.Meta):
|
|
exclude = ('approved',)
|