The default QuerySet Manager. Custom QuerySet Manager functions can extend this class and users can add extra queryset functionality. Any custom manager methods must accept a :class:`~mongoengine.Document` class as its first argument, and a :class:`~mongoengine.queryset.QueryS
| 6 | |
| 7 | |
| 8 | class QuerySetManager: |
| 9 | """ |
| 10 | The default QuerySet Manager. |
| 11 | |
| 12 | Custom QuerySet Manager functions can extend this class and users can |
| 13 | add extra queryset functionality. Any custom manager methods must accept a |
| 14 | :class:`~mongoengine.Document` class as its first argument, and a |
| 15 | :class:`~mongoengine.queryset.QuerySet` as its second argument. |
| 16 | |
| 17 | The method function should return a :class:`~mongoengine.queryset.QuerySet` |
| 18 | , probably the same one that was passed in, but modified in some way. |
| 19 | """ |
| 20 | |
| 21 | get_queryset = None |
| 22 | default = QuerySet |
| 23 | |
| 24 | def __init__(self, queryset_func=None): |
| 25 | if queryset_func: |
| 26 | self.get_queryset = queryset_func |
| 27 | |
| 28 | def __get__(self, instance, owner): |
| 29 | """Descriptor for instantiating a new QuerySet object when |
| 30 | Document.objects is accessed. |
| 31 | """ |
| 32 | if instance is not None: |
| 33 | # Document object being used rather than a document class |
| 34 | return self |
| 35 | |
| 36 | # owner is the document that contains the QuerySetManager |
| 37 | queryset_class = owner._meta.get("queryset_class", self.default) |
| 38 | queryset = queryset_class(owner, owner._get_collection()) |
| 39 | if self.get_queryset: |
| 40 | arg_count = self.get_queryset.__code__.co_argcount |
| 41 | if arg_count == 1: |
| 42 | queryset = self.get_queryset(queryset) |
| 43 | elif arg_count == 2: |
| 44 | queryset = self.get_queryset(owner, queryset) |
| 45 | else: |
| 46 | queryset = partial(self.get_queryset, owner, queryset) |
| 47 | return queryset |
| 48 | |
| 49 | |
| 50 | def queryset_manager(func): |
no outgoing calls
no test coverage detected
searching dependent graphs…