Example #1
0
    def create_series_element(self, seriesResult):
        series = WaterML.seriesType()

        #Variable
        variable = self.create_variable_element(seriesResult.Variable)
        series.set_variable(variable)

        series.valueCount = WaterML.valueCountType(
            valueOf_=str(seriesResult.ValueCount))

        beginDateTime = core._get_datavalues_datetime(
            seriesResult, "BeginDateTime", "BeginDateTimeUTC")
        endDateTime = core._get_datavalues_datetime(
            seriesResult, "EndDateTime", "EndDateTimeUTC")
        # WML1_1 wants a datetime, no zone. breaks the conversion
        try:
            beginDateTime =  dateutil.parser.parse(beginDateTime)
            endDateTime =  dateutil.parser.parse(endDateTime)
        except Exception as inst:
              logging.error('bad datetime conversion')

        #TimeInterval
        if beginDateTime is None:
            beginDateTime = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S")
        if endDateTime is None:
            endDateTime = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S")

        variableTimeInt = WaterML.TimeIntervalType(
            beginDateTime=beginDateTime,
            endDateTime=endDateTime)
        series.variableTimeInterval = variableTimeInt

        #Method
        if seriesResult.Method:
            method = self.create_method_element(seriesResult.Method)
            series.Method = method

        #Source
        if seriesResult.Source:
            source = self.create_source_element(seriesResult.Source)
            series.Source = source

        #QualityControlLevel
        qualityControlLevel = WaterML.QualityControlLevelType(
                    qualityControlLevelID=seriesResult.QualityControlLevelID,
                    qualityControlLevelCode=seriesResult.QualityControlLevelCode,
                    definition=seriesResult.Definition,
                    explanation=seriesResult.Explanation)

        series.QualityControlLevel = qualityControlLevel

        return series
Example #2
0
    def create_value_element(self, valueResult):
        adate = core._get_datavalues_datetime(
            valueResult, "LocalDateTime", "DateTimeUTC").isoformat()
        clean_censorCode =self.check_censorCode(valueResult.CensorCode)
        clean_qcl = self.check_QualityControlLevel(valueResult.QualityControlLevel)

        value = WaterML.ValueSingleVariable(
                        qualityControlLevel=clean_qcl,
                       # qualityControlLevel=valueResult.QualityControlLevel,
                        methodID=valueResult.MethodID,
                        sourceID=valueResult.SourceID,
                        #censorCode=valueResult.CensorCode,
                        censorCode=clean_censorCode,
                        sampleID=valueResult.SampleID,
                        offsetTypeID=valueResult.OffsetTypeID,
                        accuracyStdDev=valueResult.ValueAccuracy,
                        offsetValue=valueResult.OffsetValue,
                        dateTime=adate,
                        qualifiers=valueResult.QualifierID,
                        valueOf_=str(valueResult.DataValue))

        # TODO: value.offset stuff?  Why does value element have all
        # this offset stuff
        #offsetTypeResult = valueResult.OffsetType
        #if offsetTypeResult != None:
        #    value.offsetDescription = offsetTypeResult.OffsetDescription
        #    value.offsetUnitsAbbreviation = offsetTypeResult.OffsetUnits.UnitsAbbreviation
        #    value.offsetUnitsCode = offsetTypeResult.OffsetUnits.UnitsID
        return value
Example #3
0
    def create_series_element(self, seriesResult):
        series = WaterML.series()

        #Variable
        variable = self.create_variable_element(seriesResult.Variable)
        series.set_variable(variable)

        series.valueCount = WaterML.valueCount(
            valueOf_=str(seriesResult.ValueCount))

# in WML1_0, these are strings.
        beginDateTime = core._get_datavalues_datetime(
            seriesResult, "BeginDateTime", "BeginDateTimeUTC").isoformat()
        endDateTime = core._get_datavalues_datetime(
            seriesResult, "EndDateTime", "EndDateTimeUTC").isoformat()

        #TimeInterval
        if beginDateTime is None:
            beginDateTime = datetime.datetime.now().isoformat()
        if endDateTime is None:
            endDateTime = datetime.datetime.now().isoformat()
        variableTimeInt = WaterML.TimeIntervalType(
            beginDateTime=beginDateTime,
            endDateTime=endDateTime)
        series.variableTimeInterval = variableTimeInt

        #Method
        if seriesResult.Method:
            method = self.create_method_element(seriesResult.Method)
            series.Method = method

        #Source
        if seriesResult.Source:
            source = self.create_source_element(seriesResult.Source)
            series.Source = source

        #QualityControlLevel
        qualityControlLevel = WaterML.QualityControlLevelType(
                    qualityControlLevelID=seriesResult.QualityControlLevelID,
                    valueOf_=seriesResult.QualityControlLevelCode)

        series.QualityControlLevel = qualityControlLevel

        return series
Example #4
0
    def create_value_element(self, valueResult):
        #datetime_string = core._get_datavalues_datetime(
         #  valueResult, "LocalDateTime", "DateTimeUTC")
        aDate = core._get_datavalues_datetime(
           valueResult, "LocalDateTime", "DateTimeUTC")
        #aDate= dateutil.parser.parse(datetime_string)

        if not hasattr(valueResult,'MethodCode'):
            setattr(valueResult,'MethodCode',None)
        if not hasattr(valueResult,'SourceCode'):
            setattr(valueResult,'SourceCode',None)

        clean_censorCode =self.check_censorCode(valueResult.CensorCode)
        #clean_qcl = self.check_QualityControlLevel(valueResult.QualityControlLevel)

        value = WaterML.ValueSingleVariable(
                        qualityControlLevelCode=valueResult.QualityControlLevel,
                        methodCode=valueResult.MethodCode,
                        sourceCode=valueResult.SourceCode,
                        timeOffset=valueResult.UTCOffset,
                        censorCode=clean_censorCode,
                        sampleID=valueResult.SampleID,
                        offsetTypeID=valueResult.OffsetTypeID,
                        accuracyStdDev=valueResult.ValueAccuracy,
                        offsetValue=valueResult.OffsetValue,
#                        dateTime=datetime_string,
                        dateTime=aDate,
                        dateTimeUTC=valueResult.DateTimeUTC,
                        qualifiers=valueResult.QualifierID,
                        valueOf_=str(valueResult.DataValue))

        # TODO: value.offset stuff?  Why does value element have all
        # this offset stuff
        #offsetTypeResult = valueResult.OffsetType
        #if offsetTypeResult != None:
        #    value.offsetDescription = offsetTypeResult.OffsetDescription
        #    value.offsetUnitsAbbreviation = offsetTypeResult.OffsetUnits.UnitsAbbreviation
        #    value.offsetUnitsCode = offsetTypeResult.OffsetUnits.UnitsID
        return value