File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -207,11 +207,19 @@ def make_msgid(idstring=None, domain=None):
207207
208208
209209def parsedate_to_datetime (data ):
210- * dtuple , tz = _parsedate_tz (data )
211- if tz is None :
212- return datetime .datetime (* dtuple [:6 ])
213- return datetime .datetime (* dtuple [:6 ],
214- tzinfo = datetime .timezone (datetime .timedelta (seconds = tz )))
210+ try :
211+ * dtuple , tz = _parsedate_tz (data )
212+ except TypeError :
213+ # _parsedate_tz(data) returned None due to failure to parse
214+ return None
215+ try :
216+ if tz is None :
217+ return datetime .datetime (* dtuple [:6 ])
218+ return datetime .datetime (* dtuple [:6 ],
219+ tzinfo = datetime .timezone (datetime .timedelta (seconds = tz )))
220+ except ValueError :
221+ # Date parsed ok, but one or more component values are invalid
222+ return None
215223
216224
217225def parseaddr (addr ):
Original file line number Diff line number Diff line change @@ -48,6 +48,16 @@ def test_parsedate_to_datetime_naive(self):
4848 utils .parsedate_to_datetime (self .datestring + ' -0000' ),
4949 self .naive_dt )
5050
51+ def test_parsedate_to_datetime_invalid_string (self ):
52+ self .assertIsNone (
53+ utils .parsedate_to_datetime ('' )
54+ )
55+
56+ def test_parsedate_to_datetime_invalid_date (self ):
57+ self .assertIsNone (
58+ utils .parsedate_to_datetime ('Tue, 06 Jun 2017 27:39:33 +0600' )
59+ )
60+
5161
5262class LocaltimeTests (unittest .TestCase ):
5363
You can’t perform that action at this time.
0 commit comments