diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-11-24 02:09:54 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-11-24 02:09:54 +0100 |
commit | 9edddaf1cce657e97f3550565e446d9a91e69fce (patch) | |
tree | 53bd093c4245b221f8d4d7f578f6a021cdec3e38 /chimere/admin.py | |
parent | 1b30395108ad1d9dd42e286ca04e534fa928e679 (diff) | |
download | Chimère-9edddaf1cce657e97f3550565e446d9a91e69fce.tar.bz2 Chimère-9edddaf1cce657e97f3550565e446d9a91e69fce.zip |
Fix rapprochement - work on OSM export interface
Diffstat (limited to 'chimere/admin.py')
-rw-r--r-- | chimere/admin.py | 43 |
1 files changed, 29 insertions, 14 deletions
diff --git a/chimere/admin.py b/chimere/admin.py index 8fe2b77..931dcf1 100644 --- a/chimere/admin.py +++ b/chimere/admin.py @@ -114,11 +114,11 @@ def managed_modified(modeladmin, request, queryset): if hasattr(item, 'associated_marker'): couple.append((item.associated_marker.all()[0], item_ref.associated_marker.all()[0])) - updated_keys = request.POST - updated_keys.pop('action') - updated_keys.pop('rapprochement') - updated_keys.pop('index') - updated_keys.pop('_selected_action') + updated_keys = dict(request.POST) + # clean + for k in ('action', 'rapprochement', 'index', '_selected_action'): + if k in updated_keys: + updated_keys.pop(k) for idx, cpl in enumerate(couple): it, it_ref = cpl # don't copy geometry of associated items @@ -320,15 +320,30 @@ def export_to_osm(modeladmin, request, queryset): if importer.importer_type != 'OSM': messages.error(request, _(u"Only OSM importer are managed for export.")) return HttpResponseRedirect(request.get_full_path()) - #for importer in queryset: - # importer.state = unicode(tasks.IMPORT_MESSAGES['export_pending'][0]) - # importer.save() - # tasks.exporting(importer.pk) - form = OSMForm() - item_nb = Marker.objects.filter(categories__in=importer.categories.all(), - not_for_osm=False).count() - msg_item = _(u"%s point(s) of interest concerned by this export") % item_nb - return render_to_response('admin/osm_export.html', {'importer':importer, + item_nb = Marker.objects.filter(status='A', + categories=importer.categories.all(), + not_for_osm=False, modified_since_import=True, + route=None).count() + if not item_nb: + messages.error(request, _(u"No point of interest are concerned by this " + u"export.")) + return HttpResponseRedirect(request.get_full_path()) + form = None + if request.method == 'POST' and ( + 'email' in request.POST or 'api' in request.POST + or 'password' in request.POST): + form = OSMForm(request.POST) + if form.is_valid(): + importer.state = unicode(tasks.IMPORT_MESSAGES['export_pending'][0]) + importer.save() + tasks.exporting(importer.pk, form.cleaned_data) + messages.success(request, _(u"Export launched.")) + return HttpResponseRedirect(request.get_full_path()) + else: + form = OSMForm() + msg_item = _(u"%s point(s) of interest concerned by this export before "\ + u"bounding box filter.") % item_nb + return render_to_response('admin/osm_export.html', {'item':importer, 'form':form, 'msg_item':msg_item}, context_instance=RequestContext(request)) export_to_osm.short_description = _(u"Export to osm") |