Пример #1
0
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'})
Пример #2
0
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'}))
Пример #3
0
            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()
Пример #4
0
            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()