def planImport(request): if request.method == 'GET': messages.info(request, 'You can create a ' + settings.XGDS_PLANNER2_PLAN_MONIKER + ' by importing a kml file containing a LineString.') messages.info(request, 'Alternately you can import a csv file, which must have column headers of latitude and longitude.') form = ImportPlanForm() elif request.method == 'POST': form = ImportPlanForm(request.POST, request.FILES) if form.is_valid(): # add plan entry to database meta = dict([(f, form.cleaned_data[f]) for f in ('planNumber', 'planVersion')]) meta['creator'] = request.user.username planSchema = models.getPlanSchema(form.cleaned_data['platform']) # set the site siteID = form.cleaned_data['site'] if siteID: sites = planSchema.getLibrary().sites for site in sites: if site.id == siteID: # TODO FIX this has all sorts of formatting problems /n inserted. # meta['site'] = xpjson.dumpDocumentToString(site) hackSite = {"type": "Site", "name": site.name, "id": site.id, "notes": site.notes} if site.bbox: hackSite["bbox"] = site.bbox if site.alternateCrs: hackSite["alternateCrs"] = site.alternateCrs meta['site'] = hackSite break importer = choosePlanImporter.chooseImporter(form.cleaned_data['sourceFile'].name) f = request.FILES['sourceFile'] buf = ''.join([chunk for chunk in f.chunks()]) dbPlan = importer.importPlan('tempName', buf=buf, meta=meta, planSchema=planSchema) # bit of a hack, setting the name from the id planId = dbPlan.jsonPlan.id dbPlan.jsonPlan["name"] = planId dbPlan.jsonPlan["uuid"] = dbPlan.uuid # makeUuid() dbPlan.name = planId dbPlan.save() handleCallbacks(request, dbPlan, settings.SAVE) # redirect to plan editor on newly created plan return HttpResponseRedirect(reverse('planner2_edit', args=[dbPlan.pk])) else: return HttpResponseNotAllowed(['GET', 'POST']) return render(request, 'xgds_planner2/planCreate.html', {'form': form, 'siteLabel': 'Import'})
def planImport(request): if request.method == 'GET': messages.info(request, 'You can create a ' + settings.XGDS_PLANNER2_PLAN_MONIKER + ' by importing a kml file containing a LineString.') messages.info(request, 'Alternately you can import a csv file, which must have column headers of latitude and longitude.') form = ImportPlanForm() elif request.method == 'POST': form = ImportPlanForm(request.POST, request.FILES) if form.is_valid(): # add plan entry to database meta = dict([(f, form.cleaned_data[f]) for f in ('planNumber', 'planVersion')]) meta['creator'] = request.user.username planSchema = models.getPlanSchema(form.cleaned_data['platform']) # set the site siteID = form.cleaned_data['site'] if siteID: sites = planSchema.getLibrary().sites for site in sites: if site.id == siteID: # TODO FIX this has all sorts of formatting problems /n inserted. # meta['site'] = xpjson.dumpDocumentToString(site) hackSite = {"type": "Site", "name": site.name, "id": site.id, "notes": site.notes} if site.bbox: hackSite["bbox"] = site.bbox if site.alternateCrs: hackSite["alternateCrs"] = site.alternateCrs meta['site'] = hackSite break importer = choosePlanImporter.chooseImporter(form.cleaned_data['sourceFile'].name) f = request.FILES['sourceFile'] buf = ''.join([chunk for chunk in f.chunks()]) dbPlan = importer.importPlan('tempName', buf=buf, meta=meta, planSchema=planSchema) # bit of a hack, setting the name from the id planId = dbPlan.jsonPlan.id dbPlan.jsonPlan["name"] = planId dbPlan.jsonPlan["uuid"] = dbPlan.uuid # makeUuid() dbPlan.name = planId dbPlan.save() handleCallbacks(request, dbPlan, settings.SAVE) # redirect to plan editor on newly created plan return HttpResponseRedirect(reverse('planner2_edit', args=[dbPlan.pk])) else: return HttpResponseNotAllowed(['GET', 'POST']) return render_to_response('xgds_planner2/planCreate.html', RequestContext(request,{'form': form, 'siteLabel': 'Import'}))
parser.error('import requires exactly 1 argument (import path)') importPath = args[1] if not (opts.creator and opts.planNumber and opts.planVersion): parser.error( 'import requires: --creator, --planNumber, --planVersion') name = os.path.basename(importPath) name = os.path.splitext(name)[0] meta = { 'creator': opts.creator, 'planNumber': opts.planNumber, 'planVersion': opts.planVersion, } importerClass = choosePlanImporter.chooseImporter( name, formatCode=opts.formatCode) dbPlan = importerClass.importPlan(name, buf=open(importPath, 'r').read(), meta=meta, path=importPath) dbPlan.save() ###################################################################### else: parser.error('unknown command %s' % cmd) if __name__ == '__main__': main()
parser.error("you must specify the --schema argument to validate a document of type %s" % t) except: traceback.print_exc() print print "ERROR could not simplify %s" % docPath ###################################################################### elif cmd == "import": if len(args) != 2: parser.error("import requires exactly 1 argument (import path)") importPath = args[1] if not (opts.creator and opts.planNumber and opts.planVersion): parser.error("import requires: --creator, --planNumber, --planVersion") name = os.path.basename(importPath) name = os.path.splitext(name)[0] meta = {"creator": opts.creator, "planNumber": opts.planNumber, "planVersion": opts.planVersion} importerClass = choosePlanImporter.chooseImporter(name, formatCode=opts.formatCode) dbPlan = importerClass.importPlan(name, buf=open(importPath, "r").read(), meta=meta, path=importPath) dbPlan.save() ###################################################################### else: parser.error("unknown command %s" % cmd) if __name__ == "__main__": main()