summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2012-10-05 00:21:37 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2012-10-05 00:21:37 +0200
commit2eff4af4f1caa5d33f88b0d973583e55c5d22580 (patch)
treee43cae0a1df65e38aa5c6b2db6c7bc74f4a48873
parent0a5610ea01406c53e762d64b766dd7bbd792cd4c (diff)
downloadChimère-2eff4af4f1caa5d33f88b0d973583e55c5d22580.tar.bz2
Chimère-2eff4af4f1caa5d33f88b0d973583e55c5d22580.zip
Admin: sort multimedia and images by drag and drop
-rw-r--r--chimere/admin.py9
-rw-r--r--chimere/forms.py17
-rw-r--r--chimere/static/chimere/js/menu-sort.js14
3 files changed, 33 insertions, 7 deletions
diff --git a/chimere/admin.py b/chimere/admin.py
index 4c728e7..159819a 100644
--- a/chimere/admin.py
+++ b/chimere/admin.py
@@ -35,7 +35,8 @@ except ImportError:
pass
from chimere.forms import MarkerAdminForm, RouteAdminForm, AreaAdminForm,\
- NewsAdminForm, CategoryAdminForm, ImporterAdminForm
+ NewsAdminForm, CategoryAdminForm, ImporterAdminForm, \
+ PictureFileAdminForm, MultimediaFileAdminForm
from chimere.models import Category, Icon, SubCategory, Marker, \
PropertyModel, News, Route, Area, ColorTheme, Color, MultimediaType, \
MultimediaFile, PictureFile, Importer, Layer, AreaLayers
@@ -100,10 +101,16 @@ export_to_csv.short_description = _(u"Export to CSV")
class PictureInline(admin.TabularInline):
model = PictureFile
extra = 1
+ ordering = ('order',)
+ form = PictureFileAdminForm
+ readonly_fields = ('height', 'width')
+ exclude = ('thumbnailfile', 'thumbnailfile_height', 'thumbnailfile_width')
class MultimediaInline(admin.TabularInline):
model = MultimediaFile
extra = 1
+ ordering = ('order',)
+ form = MultimediaFileAdminForm
class MarkerAdmin(admin.ModelAdmin):
"""
diff --git a/chimere/forms.py b/chimere/forms.py
index a8aa824..c42e317 100644
--- a/chimere/forms.py
+++ b/chimere/forms.py
@@ -331,7 +331,6 @@ class RouteForm(RouteAdminForm):
new_marker.saveProperties(properties)
return new_route
-
class BaseFileForm(forms.ModelForm):
id = forms.IntegerField(label=u"", widget=forms.HiddenInput(),
required=False)
@@ -366,6 +365,14 @@ class BaseFileForm(forms.ModelForm):
else:
instance = self._meta.model.objects.create(**self.cleaned_data)
+class MultimediaFileAdminForm(forms.ModelForm):
+ class Meta:
+ model = MultimediaFile
+ class Media:
+ js = list(settings.JQUERY_JS_URLS) + [
+ '%schimere/js/menu-sort.js' % settings.STATIC_URL,
+ ]
+
class MultimediaFileForm(BaseFileForm):
"""
Form for a multimedia file
@@ -382,6 +389,14 @@ class MultimediaFileForm(BaseFileForm):
MultimediaFileFormSet = formset_factory(MultimediaFileForm, can_delete=True)
+class PictureFileAdminForm(forms.ModelForm):
+ class Meta:
+ model = PictureFile
+ class Media:
+ js = list(settings.JQUERY_JS_URLS) + [
+ '%schimere/js/menu-sort.js' % settings.STATIC_URL,
+ ]
+
class PictureFileForm(BaseFileForm):
"""
Form for a picture file
diff --git a/chimere/static/chimere/js/menu-sort.js b/chimere/static/chimere/js/menu-sort.js
index ad1da39..37d0ddd 100644
--- a/chimere/static/chimere/js/menu-sort.js
+++ b/chimere/static/chimere/js/menu-sort.js
@@ -11,10 +11,14 @@ jQuery(function($) {
}
});
$('div.inline-group tbody tr').css('cursor', 'move');
- $('div.inline-group tbody tr td').each(function (idx){
- if($(this).is('*.field-order')){
- $(this).hide();
- $('div.inline-group thead th:nth-child('+idx+')').hide();
- }
+ $('div.inline-group').each(function(){
+ var par = $(this);
+ par.find('tbody tr td').each(
+ function (idx){
+ if($(this).is('*.field-order')){
+ $(this).hide();
+ par.find('thead th:nth-child('+idx+')').hide();
+ }
+ });
});
});