Exemplo n.º 1
0
def saveUpdatedInstrumentData(request, instrument_name, pk):
    """
    Updates instrument data on save.
    """

    if request.method == 'POST':
        mapDict = settings.XGDS_MAP_SERVER_JS_MAP[instrument_name]
        INSTRUMENT_MODEL = LazyGetModelByName(mapDict['model'])
        dataProduct = INSTRUMENT_MODEL.get().objects.get(pk=pk)

        # get existing data.
        if 'edit_form_class' in mapDict:
            form = getFormByName(mapDict['edit_form_class'])(request.POST,
                                                             request.FILES)
        else:
            form = BasaltInstrumentDataForm(request.POST, request.FILES)

        try:
            form.is_valid()
        except:
            pass

        for key in form.changed_data:
            value = form.cleaned_data[key]
            if not hasattr(value, 'read'):
                if not isinstance(value, datetime.datetime):
                    setattr(dataProduct, key, value)
            else:
                form.handleFileUpdate(dataProduct, key)
        # save the update info into the model.


#         postDict = request.POST.dict()
#         dataProduct.name = postDict['name']
#         dataProduct.description = postDict['description']
#         dataProduct.minerals = postDict['minerals']
#         resourceId = postDict['resource']
#         if resourceId:
#             resource = BasaltResource.objects.get(id=resourceId)
#             dataProduct.resource = resource

        dataProduct.acquisition_time = form.cleaned_data['dataCollectionTime']

        if (('lat' in form.cleaned_data) and
            ('lon' in form.cleaned_data)) or ('alt' in form.cleaned_data):
            editInstrumentDataPosition(dataProduct, form.cleaned_data['lat'],
                                       form.cleaned_data['lon'],
                                       form.cleaned_data['alt'])
        dataProduct.save()

        messages.success(request, 'Instrument data successfully saved!')

        return HttpResponseRedirect(
            reverse('search_map_single_object',
                    kwargs={
                        'modelPK': pk,
                        'modelName': instrument_name
                    }))
Exemplo n.º 2
0
def pxrfDataImporter(instrument, portableDataFile, manufacturerDataFile, elementResultsCsvFile,
                     utcStamp, timezone, vehicle, name, description, minerals=None, user=None,
                     latitude=None, longitude=None, altitude=None, collector=None, object_id=None):
    try:
        instrument = ScienceInstrument.getInstrument(PXRF)
        (flight, sampleLocation) = lookupFlightInfo(utcStamp, timezone, vehicle, PXRF)
        
        if not user:
            user = User.objects.get(username='******')
        metadata = {'portable_data_file':portableDataFile,
                    'elementResultsCsvFile': elementResultsCsvFile,
                    'portable_file_format_name':"csv",
                    'portable_mime_type':"application/csv",
                    'acquisition_time':utcStamp,
                    'acquisition_timezone':timezone.zone,
                    'creation_time':datetime.datetime.now(pytz.utc),
                    'manufacturer_data_file':manufacturerDataFile,
                    'manufacturer_mime_type':"application/octet-stream",
                    'instrument':instrument,
                    'track_position':sampleLocation,
                    'flight':flight,
                    #'vehicle':vehicle,
                    'creator':user,
                    'collector': collector,
                    'name':name,
                    'description':description,
                    'elements':minerals,
                    'pk':object_id}
    
        dataProduct = PxrfDataProduct(**metadata)
        
        if manufacturerDataFile:
            dataProduct.fileNumber = extractPxrfMfgFileNumber(manufacturerDataFile)
        
        if latitude or longitude or altitude:
            editInstrumentDataPosition(dataProduct, latitude, longitude, altitude)
    
        dataProduct.save()
        
        pxrfLoadPortableSampleData(portableDataFile, dataProduct)
        pxrfParseElementResults(elementResultsCsvFile, dataProduct, timezone)
        
        return {'status': 'success', 
                'pk': dataProduct.pk,
                'modelName': 'pXRF'}
    except Exception, e:
        traceback.print_exc()
        return {'status': 'error', 'message': str(e)}
Exemplo n.º 3
0
def asdDataImporter(instrument, portableDataFile, manufacturerDataFile, utcStamp, 
                    timezone, vehicle, name, description, minerals, user=None,
                    latitude=None, longitude=None, altitude=None, collector=None, object_id=None):
    try:
        instrument = ScienceInstrument.getInstrument(ASD)
    
        (flight, sampleLocation) = lookupFlightInfo(utcStamp, timezone, vehicle, ASD)
        
        if not user:
            user = User.objects.get(username='******')

        dataProduct = AsdDataProduct(
            portable_file_format_name="SPC",
            portable_mime_type="application/octet-stream",
            acquisition_time=utcStamp,
            acquisition_timezone=timezone.zone,
            creation_time=datetime.datetime.now(pytz.utc),
            manufacturer_data_file=manufacturerDataFile,
            manufacturer_mime_type="application/octet-stream",
            instrument=instrument,
            track_position=sampleLocation,
            flight=flight,
            #vehicle=vehicle,
            creator=user,
            collector=collector,
            name=name,
            description=description,
            minerals=minerals,
            pk=object_id
        )
        
        if latitude or longitude or altitude:
            editInstrumentDataPosition(dataProduct, latitude, longitude, altitude)
        
        dataProduct.save()
        if portableDataFile:
            asdLoadPortableSampleData(portableDataFile, dataProduct)
            dataProduct.portable_data_file = portableDataFile
            dataProduct.save()

        return {'status': 'success', 
                'pk': dataProduct.pk,
                'modelName': 'ASD'}
    except Exception, e:
        traceback.print_exc()
        return {'status': 'error', 'message': str(e)}