A field wrapper around MongoDB's ObjectIds.
| 558 | |
| 559 | |
| 560 | class ObjectIdField(BaseField): |
| 561 | """A field wrapper around MongoDB's ObjectIds.""" |
| 562 | |
| 563 | def to_python(self, value): |
| 564 | try: |
| 565 | if not isinstance(value, ObjectId): |
| 566 | value = ObjectId(value) |
| 567 | except Exception: |
| 568 | pass |
| 569 | return value |
| 570 | |
| 571 | def to_mongo(self, value): |
| 572 | if isinstance(value, ObjectId): |
| 573 | return value |
| 574 | |
| 575 | try: |
| 576 | return ObjectId(str(value)) |
| 577 | except Exception as e: |
| 578 | self.error(str(e)) |
| 579 | |
| 580 | def prepare_query_value(self, op, value): |
| 581 | if value is None: |
| 582 | return value |
| 583 | return self.to_mongo(value) |
| 584 | |
| 585 | def validate(self, value): |
| 586 | try: |
| 587 | ObjectId(str(value)) |
| 588 | except Exception: |
| 589 | self.error("Invalid ObjectID") |
| 590 | |
| 591 | |
| 592 | class GeoJsonBaseField(BaseField): |