Skip to content

Commit 375c1f1

Browse files
committed
[wfs] fix turning attribute value to NULL
1 parent 8d5d5f0 commit 375c1f1

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

src/providers/wfs/qgswfsprovider.cpp

+19-6
Original file line numberDiff line numberDiff line change
@@ -1027,9 +1027,16 @@ QString QgsWFSProvider::convertToXML( const QVariant& value )
10271027
if ( value.type() == QVariant::DateTime )
10281028
{
10291029
QDateTime dt = value.toDateTime().toUTC();
1030-
valueStr.sprintf( "%04d-%02d-%02dT%02d:%02d:%02d.%03dZ",
1031-
dt.date().year(), dt.date().month(), dt.date().day(),
1032-
dt.time().hour(), dt.time().minute(), dt.time().second(), dt.time().msec() );
1030+
if ( !dt.isNull() )
1031+
{
1032+
valueStr.sprintf( "%04d-%02d-%02dT%02d:%02d:%02d.%03dZ",
1033+
dt.date().year(), dt.date().month(), dt.date().day(),
1034+
dt.time().hour(), dt.time().minute(), dt.time().second(), dt.time().msec() );
1035+
}
1036+
else
1037+
{
1038+
valueStr = QString();
1039+
}
10331040
}
10341041
return valueStr;
10351042
}
@@ -1073,9 +1080,15 @@ bool QgsWFSProvider::changeAttributeValues( const QgsChangedAttributesMap &attr_
10731080
propertyElem.appendChild( nameElem );
10741081

10751082
QDomElement valueElem = transactionDoc.createElementNS( QgsWFSConstants::WFS_NAMESPACE, "Value" );
1076-
QDomText valueText = transactionDoc.createTextNode( convertToXML( attMapIt.value() ) );
1077-
valueElem.appendChild( valueText );
1078-
propertyElem.appendChild( valueElem );
1083+
1084+
if ( attMapIt.value().isValid() && !attMapIt.value().isNull() )
1085+
{
1086+
// WFS does not support :nil='true'
1087+
// if value is NULL, do not add value element
1088+
QDomText valueText = transactionDoc.createTextNode( convertToXML( attMapIt.value() ) );
1089+
valueElem.appendChild( valueText );
1090+
propertyElem.appendChild( valueElem );
1091+
}
10791092

10801093
updateElem.appendChild( propertyElem );
10811094
}

0 commit comments

Comments
 (0)