summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chimere/admin.py2
-rw-r--r--chimere/forms.py23
-rw-r--r--chimere/static/chimere/css/styles.css40
-rw-r--r--chimere/templates/chimere/edit.html28
-rw-r--r--chimere/templates/chimere/edit_route.html24
-rw-r--r--chimere/views.py28
6 files changed, 119 insertions, 26 deletions
diff --git a/chimere/admin.py b/chimere/admin.py
index 70853d4..bafa754 100644
--- a/chimere/admin.py
+++ b/chimere/admin.py
@@ -132,7 +132,7 @@ class RouteFileAdmin(admin.ModelAdmin):
class MultimediaTypeAdmin(admin.ModelAdmin):
search_fields = ("name",)
- list_display = ('name', 'media_type', 'mime_type', 'available')
+ list_display = ('name', 'media_type', 'mime_type', 'iframe', 'available')
list_filter = ('media_type', 'available')
class MultimediaFileAdmin(admin.ModelAdmin):
diff --git a/chimere/forms.py b/chimere/forms.py
index e22c9c7..5ae8257 100644
--- a/chimere/forms.py
+++ b/chimere/forms.py
@@ -23,13 +23,14 @@ Forms
from django import forms
from django.conf import settings
from django.contrib.gis.db import models
+from django.forms.formsets import formset_factory
from django.utils.translation import ugettext as _
from django.contrib.auth.models import User, Permission, ContentType
from django.contrib.admin.widgets import AdminDateWidget
from django.core.mail import EmailMessage, BadHeaderError
from chimere.models import Marker, Route, PropertyModel, Property, Area,\
- News, Category, SubCategory, RouteFile
+ News, Category, SubCategory, RouteFile, MultimediaFile, PictureFile
from chimere.widgets import AreaField, PointField, TextareaWidget, \
DatePickerWidget
@@ -269,6 +270,26 @@ class RouteForm(RouteAdminForm):
new_marker.saveProperties(properties)
return new_route
+class MultimediaFileForm(forms.ModelForm):
+ """
+ Form for a multimedia file
+ """
+ class Meta:
+ model = MultimediaFile
+ exclude = ('order',)
+
+MultimediaFileFormSet = formset_factory(MultimediaFileForm, can_delete=True)
+
+class PictureFileForm(forms.ModelForm):
+ """
+ Form for a picture file
+ """
+ class Meta:
+ model = PictureFile
+ exclude = ('order', 'height', 'width')
+
+PictureFileFormSet = formset_factory(PictureFileForm, can_delete=True)
+
class FileForm(forms.Form):
raw_file = forms.FileField(label=_(u"File"))
diff --git a/chimere/static/chimere/css/styles.css b/chimere/static/chimere/css/styles.css
index 8239a45..d973e99 100644
--- a/chimere/static/chimere/css/styles.css
+++ b/chimere/static/chimere/css/styles.css
@@ -3,24 +3,20 @@
a, a:link, a:visited, legend,
#footer .map-footer a, #footer .map-footer a:link,
#footer .map-footer a:visited, .errorlist,
-.detail_footer a,
-#categories li#display_submited,
+.detail_footer a, caption,
+#categories li#display_submited, h4,
.simple .cloud h2{
color:#54c200;
}
-h2, h3, .action li, .action li a,
+h2, h3, th, .action li, .action li a,
.action li li a,
#footer a, #footer a:link, #footer a:visited, .ui-widget-header,
a#welcome_button, a:visited#welcome_button, a:link#welcome_button,
-.olControlPermalink a {
+.olControlPermalink a{
color:#fff;
}
-h4{
- color:#5e1e68;
-}
-
.action li.ui-state-active a,
.action li li.ui-state-active a{
color:#333;
@@ -28,7 +24,7 @@ h4{
/* backgroundcolor definition */
-body, h2, h3,
+body, h2, h3, th,
.ui-widget-header,
.action li.selected,
#welcome_button,
@@ -145,9 +141,15 @@ h3{
cursor:move;
}
-h4{
+h4, caption{
font-weight:normal;
font-style:italic;
+ margin:0;
+ text-align:left;
+}
+
+th{
+ padding:0.2em 1em;
}
hr.spacer{
@@ -291,7 +293,7 @@ ul#action-2 {
}
#detail_content img{
- width:280px;
+ max-width:280px;
}
ul#share{
@@ -474,6 +476,22 @@ a#welcome_button{
text-decoration:none;
}
+/* forms */
+
+table.multimedia td input[type=checkbox]{
+ display:block;
+ margin-left:auto;
+ margin-right:auto;
+}
+
+table.multimedia td input[type=text]{
+ width:300px;
+}
+
+#live_lonlat p{
+ display:inline-table;
+}
+
/* openlayer customisation */
.olControlPermalink {
display: block;
diff --git a/chimere/templates/chimere/edit.html b/chimere/templates/chimere/edit.html
index 0616694..a85d561 100644
--- a/chimere/templates/chimere/edit.html
+++ b/chimere/templates/chimere/edit.html
@@ -36,11 +36,6 @@
{%if form.point.errors %}<ul class="errorlist"><li>{% trans "Select a location for this new site" %}</li></ul>{%endif%}
{{point_widget}}
</div>
- <div class="fieldWrapper">
- <label for="id_picture">{% trans "Image" %}</label>
- {{ form.picture.errors }}
- {{ form.picture }}
- </div>
{% if dated %}
<div class="fieldWrapper">
<label for="id_start_date">{% trans "Start date" %}</label>
@@ -66,6 +61,29 @@
{%endifequal%}
{%endfor%}
{%endfor%}
+
+ <table class='multimedia'>
+ <caption>{% trans "Multimedia files" %}</caption>
+ {% for frm in formset_multi%}{%ifequal forloop.counter 1 %}
+ <tr>{% for field in frm%}
+ <th>{{field.label}}</th>{%endfor%}
+ </tr>{%endifequal%}
+ <tr>{% for field in frm%}
+ <td>{{field}}</td>{%endfor%}
+ </tr>{%endfor%}
+ </table>
+
+ <table class='multimedia'>
+ <caption>{% trans "Picture files" %}</caption>
+ {% for frm in formset_picture%}{%ifequal forloop.counter 1 %}
+ <tr>{% for field in frm%}
+ <th>{{field.label}}</th>{%endfor%}
+ </tr>{%endifequal%}
+ <tr>{% for field in frm%}
+ <td>{{field}}</td>{%endfor%}
+ </tr>{%endfor%}
+ </table>
+
<p><input type='submit' onclick='saveExtent();' value="{% trans 'Propose'%}"/></p>
</form>
</fieldset>
diff --git a/chimere/templates/chimere/edit_route.html b/chimere/templates/chimere/edit_route.html
index c1def64..92510d0 100644
--- a/chimere/templates/chimere/edit_route.html
+++ b/chimere/templates/chimere/edit_route.html
@@ -63,6 +63,30 @@
{{ field }}
</div>
{%endifequal%}{%endfor%}{%endfor%}
+
+ <table class='multimedia'>
+ <caption>{% trans "Multimedia files" %}</caption>
+ {% for frm in formset_multi%}{%ifequal forloop.counter 1 %}
+ <tr>{% for field in frm%}
+ <th>{{field.label}}</th>{%endfor%}
+ </tr>{%endifequal%}
+ <tr>{% for field in frm%}
+ <td>{{field}}</td>{%endfor%}
+ </tr>{%endfor%}
+ </table>
+
+ <table class='multimedia'>
+ <caption>{% trans "Picture files" %}</caption>
+ <ul class='inline-form'>{{ formset_picture.as_ul }}</ul>
+ {% for frm in formset_picture%}{%ifequal forloop.counter 1 %}
+ <tr>{% for field in frm%}
+ <th>{{field.label}}</th>{%endfor%}
+ </tr>{%endifequal%}
+ <tr>{% for field in frm%}
+ <td>{{field}}</td>{%endfor%}
+ </tr>{%endfor%}
+ </table>
+
<p><input type='submit' onclick='saveExtent();' value="{% trans 'Propose'%}"/></p>
</form>
</fieldset>
diff --git a/chimere/views.py b/chimere/views.py
index 0f662ba..c76f5b8 100644
--- a/chimere/views.py
+++ b/chimere/views.py
@@ -28,7 +28,6 @@ from django.conf import settings
from django.core import serializers
from django.core.urlresolvers import reverse
from django.db.models import Q
-from django.forms import model_to_dict
from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import redirect, render_to_response
from django.template import loader, RequestContext
@@ -42,8 +41,9 @@ from chimere.models import Category, SubCategory, PropertyModel, \
from chimere.widgets import getMapJS, PointChooserWidget, \
RouteChooserWidget
-from chimere.forms import MarkerForm, RouteForm, ContactForm, \
- FileForm, FullFileForm, notifySubmission, notifyStaff
+from chimere.forms import MarkerForm, RouteForm, ContactForm, FileForm, \
+ FullFileForm, MultimediaFileFormSet, PictureFileFormSet, notifySubmission,\
+ notifyStaff
#TODO: convert to requestcontext
def get_base_response(area_name=""):
@@ -117,12 +117,14 @@ def get_edit_page(redirect_url, item_cls, item_form):
None
ref_item = init_item
modified_item = item_cls.objects.filter(ref_item=init_item,
- submiter_session_key=request.session.session_key)
+ submiter_session_key=request.session.session_key)
if modified_item.count():
init_item = modified_item.all()[0]
# If the form has been submited
if request.method == 'POST':
+ formset_multi = MultimediaFileFormSet()
+ formset_picture = PictureFileFormSet()
inst = None
# allow to directly modify only if owner or superuser
if init_item and (request.user.is_superuser or \
@@ -158,7 +160,12 @@ def get_edit_page(redirect_url, item_cls, item_form):
None
else:
form = item_form(instance=init_item)
- return None, (item_id, init_item, response_dct, form)
+ init_multi = init_item.get_init_multi() if init_item else None
+ formset_multi = MultimediaFileFormSet(initial=init_multi)
+ init_picture = init_item.get_init_picture() if init_item else None
+ formset_picture = PictureFileFormSet(initial=init_picture)
+ return None, (item_id, init_item, response_dct, form, formset_multi,
+ formset_picture)
return func
get_edit_marker = get_edit_page('chimere:edit', Marker, MarkerForm)
@@ -170,8 +177,8 @@ def edit(request, area_name="", item_id=None, submited=False):
response, values = get_edit_marker(request, area_name, item_id)
if response:
return response
- print '1'
- item_id, init_item, response_dct, form = values
+ item_id, init_item, response_dct, form, formset_multi, formset_picture = \
+ values
# get the "manualy" declared_fields. Ie: properties
declared_fields = form.declared_fields.keys()
@@ -181,6 +188,8 @@ def edit(request, area_name="", item_id=None, submited=False):
'error_message':'',
'map_layer':settings.CHIMERE_MAP_LAYER,
'form':form,
+ 'formset_multi':formset_multi,
+ 'formset_picture':formset_picture,
'dated':settings.CHIMERE_DAYS_BEFORE_EVENT,
'extra_head':form.media,
'marker_id':item_id,
@@ -269,7 +278,8 @@ def editRoute(request, area_name="", item_id=None, submited=False):
response, values = get_edit_route(request, area_name, item_id)
if response:
return response
- item_id, init_item, response_dct, form = values
+ item_id, init_item, response_dct, form, formset_multi, formset_picture = \
+ values
# get the "manualy" declared_fields. Ie: properties
declared_fields = form.declared_fields.keys()
@@ -279,6 +289,8 @@ def editRoute(request, area_name="", item_id=None, submited=False):
'error_message':'',
'map_layer':settings.CHIMERE_MAP_LAYER,
'form':form,
+ 'formset_multi':formset_multi,
+ 'formset_picture':formset_picture,
'dated':settings.CHIMERE_DAYS_BEFORE_EVENT,
'extra_head':form.media,
'sub_categories':SubCategory.getAvailable(['R', 'B'],