mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-07 00:15:48 -04:00
pyqt5toqt6: Catch QDateTime(QDate) constructor and replace with
QDateTime(QDate, QTime)
This commit is contained in:
parent
6851f26fdd
commit
0acf51e8e5
@ -234,7 +234,27 @@ def fix_file(filename: str, qgis3_compat: bool) -> int:
|
||||
assert tokens[i].src == ','
|
||||
tokens[i] = tokens[i]._replace(src='),')
|
||||
|
||||
custom_updates[Offset(node.lineno, node.col_offset)] = _fix_qdatetime_construct
|
||||
custom_updates[Offset(_node.lineno, _node.col_offset)] = _fix_qdatetime_construct
|
||||
elif len(_node.args) == 1 and isinstance(_node.args[0], ast.Call) and _node.args[0].func.id == 'QDate':
|
||||
# QDateTime(QDate(..)) doesn't work anymore,
|
||||
# so port to more reliable QDateTime(QDate(...), QTime(0,0,0)) form
|
||||
extra_imports['qgis.PyQt.QtCore'].update({'QTime'})
|
||||
|
||||
def _fix_qdatetime_construct(start_index: int, tokens):
|
||||
assert tokens[start_index].src == 'QDateTime'
|
||||
assert tokens[start_index + 1].src == '('
|
||||
assert tokens[start_index + 2].src == 'QDate'
|
||||
assert tokens[start_index + 3].src == '('
|
||||
i = start_index + 4
|
||||
while tokens[i].offset < Offset(_node.args[0].end_lineno,
|
||||
_node.args[0].end_col_offset):
|
||||
i += 1
|
||||
|
||||
assert tokens[i - 1].src == ')'
|
||||
tokens[i - 1] = tokens[i - 1]._replace(src='), QTime(0, 0, 0)')
|
||||
|
||||
custom_updates[Offset(_node.lineno,
|
||||
_node.col_offset)] = _fix_qdatetime_construct
|
||||
|
||||
def visit_attribute(_node: ast.Attribute, _parent):
|
||||
if isinstance(_node.value, ast.Name):
|
||||
|
@ -161,16 +161,16 @@ def createJoinLayer():
|
||||
"joinlayer", "memory")
|
||||
pr = joinLayer.dataProvider()
|
||||
f1 = QgsFeature()
|
||||
f1.setAttributes(["foo", 123, 321, QDateTime(QDate(2010, 1, 1))])
|
||||
f1.setAttributes(["foo", 123, 321, QDateTime(QDate(2010, 1, 1), QTime(0, 0, 0))])
|
||||
f1.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(1, 1)))
|
||||
f2 = QgsFeature()
|
||||
f2.setAttributes(["bar", 456, 654, QDateTime(QDate(2020, 1, 1))])
|
||||
f2.setAttributes(["bar", 456, 654, QDateTime(QDate(2020, 1, 1), QTime(0, 0, 0))])
|
||||
f2.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(2, 2)))
|
||||
f3 = QgsFeature()
|
||||
f3.setAttributes(["qar", 457, 111, None])
|
||||
f3.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(2, 2)))
|
||||
f4 = QgsFeature()
|
||||
f4.setAttributes(["a", 458, 19, QDateTime(QDate(2012, 1, 1))])
|
||||
f4.setAttributes(["a", 458, 19, QDateTime(QDate(2012, 1, 1), QTime(0, 0, 0))])
|
||||
f4.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(2, 2)))
|
||||
assert pr.addFeatures([f1, f2, f3, f4])
|
||||
assert joinLayer.featureCount() == 4
|
||||
@ -2043,9 +2043,9 @@ class TestQgsVectorLayer(QgisTestCase, FeatureSourceTestCase):
|
||||
self.assertEqual(layer.minimumAndMaximumValue(3), (111, 321))
|
||||
|
||||
# dates (maximumValue also tests we properly handle null values by skipping those)
|
||||
self.assertEqual(layer.minimumValue(4), QDateTime(QDate(2010, 1, 1)))
|
||||
self.assertEqual(layer.maximumValue(4), QDateTime(QDate(2010, 1, 1)))
|
||||
self.assertEqual(layer.minimumAndMaximumValue(4), (QDateTime(QDate(2010, 1, 1)), QDateTime(QDate(2010, 1, 1))))
|
||||
self.assertEqual(layer.minimumValue(4), QDateTime(QDate(2010, 1, 1), QTime(0, 0, 0)))
|
||||
self.assertEqual(layer.maximumValue(4), QDateTime(QDate(2010, 1, 1), QTime(0, 0, 0)))
|
||||
self.assertEqual(layer.minimumAndMaximumValue(4), (QDateTime(QDate(2010, 1, 1), QTime(0, 0, 0)), QDateTime(QDate(2010, 1, 1), QTime(0, 0, 0))))
|
||||
|
||||
self.assertEqual(set(layer.uniqueValues(3)), {111, 321})
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user