Skip to content

Commit 9424f97

Browse files
committed
Merge branch 'master' of github.com:telerytech/piccolo
2 parents f4a23a3 + 319faea commit 9424f97

File tree

3 files changed

+42
-2
lines changed

3 files changed

+42
-2
lines changed

piccolo/columns/defaults/timestamp.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,15 @@ def __init__(
7070
month: int = 1,
7171
day: int = 1,
7272
hour: int = 0,
73+
minute: int = 0,
7374
second: int = 0,
7475
microsecond: int = 0,
7576
):
7677
self.year = year
7778
self.month = month
7879
self.day = day
7980
self.hour = hour
81+
self.minute = minute
8082
self.second = second
8183
self.microsecond = microsecond
8284

@@ -87,6 +89,7 @@ def datetime(self):
8789
month=self.month,
8890
day=self.day,
8991
hour=self.hour,
92+
minute=self.minute,
9093
second=self.second,
9194
microsecond=self.microsecond,
9295
)
@@ -113,8 +116,9 @@ def from_datetime(cls, instance: datetime.datetime): # type: ignore
113116
return cls(
114117
year=instance.year,
115118
month=instance.month,
116-
day=instance.month,
119+
day=instance.day,
117120
hour=instance.hour,
121+
minute=instance.minute,
118122
second=instance.second,
119123
microsecond=instance.microsecond,
120124
)

piccolo/columns/defaults/timestamptz.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def datetime(self):
4747
month=self.month,
4848
day=self.day,
4949
hour=self.hour,
50+
minute=self.minute,
5051
second=self.second,
5152
microsecond=self.microsecond,
5253
tzinfo=datetime.timezone.utc,
@@ -59,8 +60,9 @@ def from_datetime(cls, instance: datetime.datetime): # type: ignore
5960
return cls(
6061
year=instance.year,
6162
month=instance.month,
62-
day=instance.month,
63+
day=instance.day,
6364
hour=instance.hour,
65+
minute=instance.minute,
6466
second=instance.second,
6567
microsecond=instance.microsecond,
6668
)

tests/columns/test_defaults.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
TimestampNow,
2323
Varchar,
2424
)
25+
from piccolo.columns.defaults.timestamp import TimestampCustom
26+
from piccolo.columns.defaults.timestamptz import TimestamptzCustom
2527
from piccolo.table import Table
2628

2729

@@ -98,3 +100,35 @@ class MyTable(Table):
98100
ForeignKey(references=MyTable, default=1)
99101
with self.assertRaises(ValueError):
100102
ForeignKey(references=MyTable, default="hello world")
103+
104+
105+
class TestDatetime(TestCase):
106+
107+
def test_datetime(self):
108+
"""
109+
Make sure we can create a `TimestampCustom` / `TimestamptzCustom` from
110+
a datetime, and then convert it back into the same datetime again.
111+
112+
https://github.com/piccolo-orm/piccolo/issues/1169
113+
114+
"""
115+
datetime_obj = datetime.datetime(
116+
year=2025,
117+
month=1,
118+
day=30,
119+
hour=12,
120+
minute=10,
121+
second=15,
122+
microsecond=100,
123+
)
124+
125+
self.assertEqual(
126+
TimestampCustom.from_datetime(datetime_obj).datetime,
127+
datetime_obj,
128+
)
129+
130+
datetime_obj = datetime_obj.astimezone(tz=datetime.timezone.utc)
131+
self.assertEqual(
132+
TimestamptzCustom.from_datetime(datetime_obj).datetime,
133+
datetime_obj,
134+
)

0 commit comments

Comments
 (0)