mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-15 00:02:52 -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 == ','
|
assert tokens[i].src == ','
|
||||||
tokens[i] = tokens[i]._replace(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):
|
def visit_attribute(_node: ast.Attribute, _parent):
|
||||||
if isinstance(_node.value, ast.Name):
|
if isinstance(_node.value, ast.Name):
|
||||||
|
@ -161,16 +161,16 @@ def createJoinLayer():
|
|||||||
"joinlayer", "memory")
|
"joinlayer", "memory")
|
||||||
pr = joinLayer.dataProvider()
|
pr = joinLayer.dataProvider()
|
||||||
f1 = QgsFeature()
|
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)))
|
f1.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(1, 1)))
|
||||||
f2 = QgsFeature()
|
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)))
|
f2.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(2, 2)))
|
||||||
f3 = QgsFeature()
|
f3 = QgsFeature()
|
||||||
f3.setAttributes(["qar", 457, 111, None])
|
f3.setAttributes(["qar", 457, 111, None])
|
||||||
f3.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(2, 2)))
|
f3.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(2, 2)))
|
||||||
f4 = QgsFeature()
|
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)))
|
f4.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(2, 2)))
|
||||||
assert pr.addFeatures([f1, f2, f3, f4])
|
assert pr.addFeatures([f1, f2, f3, f4])
|
||||||
assert joinLayer.featureCount() == 4
|
assert joinLayer.featureCount() == 4
|
||||||
@ -2043,9 +2043,9 @@ class TestQgsVectorLayer(QgisTestCase, FeatureSourceTestCase):
|
|||||||
self.assertEqual(layer.minimumAndMaximumValue(3), (111, 321))
|
self.assertEqual(layer.minimumAndMaximumValue(3), (111, 321))
|
||||||
|
|
||||||
# dates (maximumValue also tests we properly handle null values by skipping those)
|
# 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.minimumValue(4), QDateTime(QDate(2010, 1, 1), QTime(0, 0, 0)))
|
||||||
self.assertEqual(layer.maximumValue(4), QDateTime(QDate(2010, 1, 1)))
|
self.assertEqual(layer.maximumValue(4), QDateTime(QDate(2010, 1, 1), QTime(0, 0, 0)))
|
||||||
self.assertEqual(layer.minimumAndMaximumValue(4), (QDateTime(QDate(2010, 1, 1)), QDateTime(QDate(2010, 1, 1))))
|
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})
|
self.assertEqual(set(layer.uniqueValues(3)), {111, 321})
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user