diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-11-21 14:41:07 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-11-21 14:41:07 +0100 |
commit | a1176e9e6dbcd8af30fc32248fec5748dabfcbe9 (patch) | |
tree | e4d540eb7cd54ec32255c86999db6c96a956cceb /chimere | |
parent | c9d084af8ce719a07d507869d547825835d70a50 (diff) | |
download | Chimère-a1176e9e6dbcd8af30fc32248fec5748dabfcbe9.tar.bz2 Chimère-a1176e9e6dbcd8af30fc32248fec5748dabfcbe9.zip |
Admin import: filter admin fields by type
Diffstat (limited to 'chimere')
-rw-r--r-- | chimere/forms.py | 6 | ||||
-rw-r--r-- | chimere/static/chimere/js/importer_interface.js | 38 | ||||
-rw-r--r-- | chimere/utils.py | 4 | ||||
-rw-r--r-- | chimere/widgets.py | 7 |
4 files changed, 52 insertions, 3 deletions
diff --git a/chimere/forms.py b/chimere/forms.py index 49f714f..8fafaba 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -33,9 +33,9 @@ from django.core.mail import EmailMessage, BadHeaderError from chimere.models import Marker, Route, PropertyModel, Property, Area,\ News, Category, SubCategory, RouteFile, MultimediaFile, MultimediaType, \ - PictureFile, Importer + PictureFile, Importer, IMPORTER_CHOICES from chimere.widgets import AreaField, PointField, TextareaWidget, \ - TextareaAdminWidget, DatePickerWidget + TextareaAdminWidget, DatePickerWidget, ImporterChoicesWidget from datetime import timedelta, datetime, tzinfo @@ -98,6 +98,8 @@ class NewsAdminForm(forms.ModelForm): model = News class ImporterAdminForm(forms.ModelForm): + importer_type = forms.ChoiceField(widget=ImporterChoicesWidget, + choices=[('', '--')]+list(IMPORTER_CHOICES)) class Meta: model = Importer widgets = { diff --git a/chimere/static/chimere/js/importer_interface.js b/chimere/static/chimere/js/importer_interface.js new file mode 100644 index 0000000..4eaacb7 --- /dev/null +++ b/chimere/static/chimere/js/importer_interface.js @@ -0,0 +1,38 @@ +django.jQuery(function($) { + var importer_form_filter = { + OSM:new Array('field-source', 'field-default_name', 'field-categories'), + KML:new Array('field-source', 'field-source_file', 'field-default_name', + 'filed-filtr', 'field-zipped', 'field-origin', + 'field-license', 'field-categories'), + SHP:new Array('field-source', 'field-source_file', 'field-default_name', + 'field-zipped', 'field-origin', 'field-srid', + 'field-license', 'field-categories'), + RSS:new Array('field-source', 'field-default_name', 'field-origin', + 'field-srid', 'field-license', 'field-categories'), + CSV:new Array('field-source', 'field-source_file', 'field-default_name', + 'field-origin', 'field-srid', 'field-license', + 'field-categories') + } +/* + field-source + field-source_file + field-filtr + field-default_name + field-srid + field-zipped + field-origin + field-license + field-categories +*/ + function refresh_importer_form(){ + $('.form-row').not('.field-importer_type').hide(); + var importer_val = $('.field-importer_type select').val() + if (!importer_val) return; + var form_filters = importer_form_filter[importer_val]; + for (k=0; k<form_filters.length;k++){ + $('.form-row.'+form_filters[k]).show(); + } + } + refresh_importer_form(); + $('.field-importer_type select').change(refresh_importer_form); +}); diff --git a/chimere/utils.py b/chimere/utils.py index 3e85a70..41ffeaf 100644 --- a/chimere/utils.py +++ b/chimere/utils.py @@ -733,7 +733,9 @@ class OSMManager(ImportManager): get_version()}) hooks = RE_HOOK.findall(self.importer_instance.filtr) if not hooks: - return 0, _(u"Bad param") + hooks = RE_HOOK.findall(self.importer_instance.source) + if not hooks: + return 0, _(u"Bad param") tags = {} bbox = [] for hook in hooks: diff --git a/chimere/widgets.py b/chimere/widgets.py index e107237..00f5b79 100644 --- a/chimere/widgets.py +++ b/chimere/widgets.py @@ -101,6 +101,13 @@ class ChosenSelectWidget(forms.Select): u"</script>\n" % kwargs['attrs']['id'] return mark_safe(rendered) +class ImporterChoicesWidget(forms.Select): + ''' + Importer select widget. + ''' + class Media: + js = ["%schimere/js/importer_interface.js" % settings.STATIC_URL,] + class TextareaWidgetBase(forms.Textarea): """ Manage the edition of a text using TinyMCE |