1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- from mongoengine.queryset import QuerySet
- from mongoengine.base import BaseDocument
- from mongoengine.errors import ValidationError
- def _get_queryset(cls):
- """Inspired by django.shortcuts.*"""
- if isinstance(cls, QuerySet):
- return cls
- else:
- return cls.objects
- def get_document_or_404(cls, *args, **kwargs):
- """
- Uses get() to return an document, or raises a Http404 exception if the document
- does not exist.
- cls may be a Document or QuerySet object. All other passed
- arguments and keyword arguments are used in the get() query.
- Note: Like with get(), an MultipleObjectsReturned will be raised if more than one
- object is found.
- Inspired by django.shortcuts.*
- """
- queryset = _get_queryset(cls)
- try:
- return queryset.get(*args, **kwargs)
- except (queryset._document.DoesNotExist, ValidationError):
- from django.http import Http404
- raise Http404('No %s matches the given query.' % queryset._document._class_name)
- def get_list_or_404(cls, *args, **kwargs):
- """
- Uses filter() to return a list of documents, or raise a Http404 exception if
- the list is empty.
- cls may be a Document or QuerySet object. All other passed
- arguments and keyword arguments are used in the filter() query.
- Inspired by django.shortcuts.*
- """
- queryset = _get_queryset(cls)
- obj_list = list(queryset.filter(*args, **kwargs))
- if not obj_list:
- from django.http import Http404
- raise Http404('No %s matches the given query.' % queryset._document._class_name)
- return obj_list
|