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
from flask_mongoengine import Document, DynamicDocument, BaseQuerySet, MongoEngine class NanoctfQuerySet(BaseQuerySet): """ A base queryset with handy extras """ pass class NanoctfDocument(Document): """ Abstract document with extra helpers in the queryset class """ meta = {'abstract': True, 'queryset_class': NanoctfQuerySet} class NanoctfDynamicDocument(DynamicDocument): """ Abstract Dynamic document with extra helpers in the queryset class """ meta = {'abstract': True, 'queryset_class': NanoctfQuerySet} DB = MongoEngine() # db.ListField = ListField DB.Document = NanoctfDocument DB.DynamicDocument = NanoctfDynamicDocument
*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
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 init_app = lambda app, *args, **kwargs: db.init_app(app, *args, **kwargs)