diff options
| -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  | 
