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):
123123 oid  =  struct .pack (">i" , int (ts )) +  ZERO  *  8 
124124 return  cls (oid )
125125
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+ 
126141 def  __generate (self ):
127142 """Generate a new value for this ObjectId. 
128143 """ 
Original file line number Diff line number Diff line change @@ -179,5 +179,17 @@ def test_pickle_backwards_compatability(self):
179179 self .assertEqual (oid_1_9 , ObjectId ("4d9a66561376c00b88000000" ))
180180 self .assertEqual (oid_1_9 , oid_1_10 )
181181
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+ 
182194if  __name__  ==  "__main__" :
183195 unittest .main ()
                                 You can’t perform that action at this time. 
               
                  
0 commit comments