try: doc = self.get(*q_objs, **query) return doc, False except self._document.DoesNotExist: query.update(defaults) doc = self._document(**query) if auto_save: doc.save(write_options=write_options) return doc, True class QuokkaDocument(Document): """Abstract document with extra helpers in the queryset class""" meta = {'abstract': True, 'queryset_class': QuokkaQuerySet} class QuokkaDynamicDocument(DynamicDocument): """Abstract Dynamic document with extra helpers in the queryset class""" meta = {'abstract': True, 'queryset_class': QuokkaQuerySet} db = MongoEngine() db.ListField = ListField db.Document = QuokkaDocument db.DynamicDocument = QuokkaDynamicDocument
*q_objs, **query): defaults = query.get('defaults', {}) if 'defaults' in query: del query['defaults'] try: doc = self.get(*q_objs, **query) return doc, False except self._document.DoesNotExist: query.update(defaults) doc = self._document(**query) if auto_save: doc.save(write_options=write_options) return doc, True class FlaskDocument(Document): meta = {'abstract': True, 'queryset_class': FlaskQuerySet} class FlaskDynamicDocument(DynamicDocument): meta = {'abstract': True, 'queryset_class': FlaskQuerySet} db = MongoEngine() db.ListField = ListField db.Document = FlaskDocument db.DynamicDocument = FlaskDynamicDocument