summaryrefslogtreecommitdiff
path: root/chimere/admin.py
diff options
context:
space:
mode:
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
commit9edddaf1cce657e97f3550565e446d9a91e69fce (patch)
tree53bd093c4245b221f8d4d7f578f6a021cdec3e38 /chimere/admin.py
parent1b30395108ad1d9dd42e286ca04e534fa928e679 (diff)
downloadChimè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.py43
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")