File tree Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -123,6 +123,21 @@ def from_datetime(cls, generation_time):
123
123
oid = struct .pack (">i" , int (ts )) + ZERO * 8
124
124
return cls (oid )
125
125
126
+ @classmethod
127
+ def is_valid (cls , oid ):
128
+ """Checks if a `oid` string is valid or not.
129
+
130
+ :Parameters:
131
+ - `oid`: the object id to validate
132
+
133
+ .. versionadded:: 2.2.1+
134
+ """
135
+ try :
136
+ ObjectId (oid )
137
+ return True
138
+ except (InvalidId , TypeError ):
139
+ return False
140
+
126
141
def __generate (self ):
127
142
"""Generate a new value for this ObjectId.
128
143
"""
Original file line number Diff line number Diff line change @@ -179,5 +179,17 @@ def test_pickle_backwards_compatability(self):
179
179
self .assertEqual (oid_1_9 , ObjectId ("4d9a66561376c00b88000000" ))
180
180
self .assertEqual (oid_1_9 , oid_1_10 )
181
181
182
+ def test_is_valid (self ):
183
+ self .assertFalse (ObjectId .is_valid (4 ))
184
+ self .assertFalse (ObjectId .is_valid (175.0 ))
185
+ self .assertFalse (ObjectId .is_valid ({"test" : 4 }))
186
+ self .assertFalse (ObjectId .is_valid (["something" ]))
187
+ self .assertFalse (ObjectId .is_valid ("" ))
188
+ self .assertFalse (ObjectId .is_valid ("12345678901" ))
189
+ self .assertFalse (ObjectId .is_valid ("1234567890123" ))
190
+
191
+ self .assertTrue (ObjectId .is_valid (b ("123456789012" )))
192
+ self .assertTrue (ObjectId .is_valid ("123456789012123456789012" ))
193
+
182
194
if __name__ == "__main__" :
183
195
unittest .main ()
You can’t perform that action at this time.
0 commit comments