diff options
| -rw-r--r-- | chimere/admin.py | 2 | ||||
| -rw-r--r-- | chimere/forms.py | 23 | ||||
| -rw-r--r-- | chimere/static/chimere/css/styles.css | 40 | ||||
| -rw-r--r-- | chimere/templates/chimere/edit.html | 28 | ||||
| -rw-r--r-- | chimere/templates/chimere/edit_route.html | 24 | ||||
| -rw-r--r-- | chimere/views.py | 28 |
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'], |
