summaryrefslogtreecommitdiff
path: root/chimere
diff options
context:
space:
mode:
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
commita1176e9e6dbcd8af30fc32248fec5748dabfcbe9 (patch)
treee4d540eb7cd54ec32255c86999db6c96a956cceb /chimere
parentc9d084af8ce719a07d507869d547825835d70a50 (diff)
downloadChimère-a1176e9e6dbcd8af30fc32248fec5748dabfcbe9.tar.bz2
Chimère-a1176e9e6dbcd8af30fc32248fec5748dabfcbe9.zip
Admin import: filter admin fields by type
Diffstat (limited to 'chimere')
-rw-r--r--chimere/forms.py6
-rw-r--r--chimere/static/chimere/js/importer_interface.js38
-rw-r--r--chimere/utils.py4
-rw-r--r--chimere/widgets.py7
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