Mapa
Posicion inicial
En patio108/settins.py:
# Leaflet
LEAFLET_CONFIG = {
'DEFAULT_CENTER': (43.1703758, -2.63011487),
'DEFAULT_ZOOM' : 13,
'MIN_ZOOM' : 2,
'MAX_ZOOM' : 18,
}
Definición de zonas
En apps/map/templates/hood-search.html (plantilla):
<div class="search-hood">
<span class="search-hood__label">
Erdiratu mapa zure auzoan
</span>
<select class="search-hood__widget">
<option value="43.15659037,-2.676868334">Santa Lucia Auzoa</option>
...
</select>
</div>
Que a su vez se incluye desde patio108/templates/pages/map.html:
...
<div class="map-wrapper">
{% include 'hood-search.html' %}
<div id="map" class="full-height">
...
</div>
</div>
...
Formulario
El formulario para añadir un testimonio importa desde patio108/templates/pages/map.html dentro de un <div id="contacta>
.
La plantilla está en _patio108/templates/forms/form.html.
{% if form %}
<div class="modal swipe-left width-two-col" id="contacta">
...
<div class="modal__body half">
...
{% url 'create_testimony' as api_endpoint %}
{% include 'forms/form.html' with form=form action=api_endpoint %}
</div>
</div>
</div>
{% endif %}
Como endpoint se le pasa la url de la vista create_testimony. Definida en apps/api/views.
Tambien se pasa la variable form que es un objeto TestimonyFrom
, definido en apps/map/form.
A su vez, TestimonyForm
expone una serie de campos de Testimony
:
class TestimonyForm(forms.ModelForm):
class Meta:
model = Testimony
fields = [
'name',
'category',
...
]
Finalmente Testimony
es un Model con una serie de campos definidos en apps/map/models.py:
class Testimony(Publishable):
name = models.CharField(
_('Nombre'),
max_length = 128,
blank = False,
null = True,
help_text = _(
'Tu nombre o el nombre de tu historia.'
)
)
...