Beispiel #1
0
    async def get(self, _id=None, alias=None, **kwargs):
        from motorengine.query_builder.node import Q

        if _id is None and not kwargs:
            raise RuntimeError(
                'Either an id or a filter must be provided to get')

        if _id is not None:
            if not isinstance(_id, ObjectId):
                _id = ObjectId(_id)

            filters = {'_id': _id}
        else:
            filters = Q(**kwargs)
            filters = self.get_query_from_filters(filters)

        instance = await self.coll(alias).find_one(
            filters, projection=self._loaded_fields.to_query(self.__klass__))
        if instance is None:
            return
        else:
            doc = self._resolve_class(instance).from_son(
                instance,
                _is_partly_loaded=bool(self._loaded_fields),
                _reference_loaded_fields=self._reference_loaded_fields)
            if self.is_lazy:
                return doc
            else:
                await doc.load_references()
                return doc
Beispiel #2
0
    def __init__(self, aggregation, *args, **filters):
        super(Match, self).__init__(aggregation)
        if args and len(args) == 1 and isinstance(args[0],
                                                  (Q, QNot, QCombination)):
            self.filters = args[0]

        else:
            self.filters = Q(**filters)
Beispiel #3
0
 def get(self):
     query = Q(status='ACTIVE')
     if self.query:
         q = '.*%s.*' % self.query
         query = query & Q({"name": {'$regex': q}})
     qs = User.objects.filter(query).order_by('create_at',
                                              direction=DESCENDING)
     if self.page:
         skip = self.count_per_page * (self.page - 1)
         limit = self.count_per_page
         qs = qs.skip(skip).limit(limit)
     users = yield qs.find_all()
     roles = yield Role.objects.find_all()
     total = yield User.objects.filter(query).count()
     self.context['total'] = total / self.count_per_page
     self.context['users'] = users
     self.context['roles_display'] = {r.key: r.name for r in roles}
     self.render('user_list.html', **self.context)
Beispiel #4
0
    def filter_not(self, *arguments, **kwargs):
        from motorengine.query_builder.node import Q, QCombination, QNot

        if arguments and len(arguments) == 1 and isinstance(
                arguments[0], (Q, QCombination)):
            self.filter(QNot(arguments[0]))
        else:
            self.filter(QNot(Q(**kwargs)))

        return self
Beispiel #5
0
    def filter(self, *arguments, **kwargs):
        if arguments and len(arguments) == 1 and isinstance(
                arguments[0], (Q, QNot, QCombination)):
            if self._filters:
                self._filters = self._filters & arguments[0]
            else:
                self._filters = arguments[0]
        else:
            validate_fields(self.__klass__, kwargs)
            if self._filters:
                self._filters = self._filters & Q(**kwargs)
            else:
                if arguments and len(arguments) == 1 and isinstance(
                        arguments[0], dict):
                    self._filters = Q(arguments[0])
                else:
                    self._filters = Q(**kwargs)

        return self
Beispiel #6
0
 def get(self):
     query = Q(status='ACTIVE')
     if self.query:
         q = '.*%s.*' % self.query
         query = query & (
             Q({"sku": {'$regex': q}})
             | Q({"name": {'$regex': q}})
             | Q({"id_from_source": {'$regex': q}})
             | Q({"price_for_ref": {'$regex': q}})
         )
     qs = Product.objects.filter(query).order_by('create_at',
                                                 direction=DESCENDING)
     if self.page:
         skip = self.count_per_page * (self.page - 1)
         limit = self.count_per_page
         qs = qs.skip(skip).limit(limit)
     products = yield qs.find_all()
     total = yield Product.objects.filter(query).count()
     self.context['total'] = total / self.count_per_page
     self.context['products'] = products
     self.render('product_list.html', **self.context)
Beispiel #7
0
 def get(self):
     query = Q(status='ACTIVE')
     if self.query:
         q = '.*%s.*' % self.query
         query = query & (
             Q({"source": {'$regex': q}})
             | Q({"seller": {'$regex': q}})
         )
     qs = Order.objects.filter(query).order_by(
         'deliver_at', direction=DESCENDING)
     if self.page:
         skip = self.count_per_page * (self.page - 1)
         limit = self.count_per_page
         qs = qs.skip(skip).limit(limit)
     orders = yield qs.find_all()
     yards = yield Yard.objects.find_all()
     products = yield Product.objects.find_all()
     total = yield Order.objects.filter(query).count()
     self.context['total'] = total / self.count_per_page
     self.context['orders'] = orders
     self.context['yards'] = yards
     self.context['products'] = products
     self.render('order_list.html', **self.context)
Beispiel #8
0
    async def get(self, _id=None, callback=None, alias=None, **kwargs):
        from motorengine.query_builder.node import Q

        if _id is None and not kwargs:
            raise RuntimeError(
                'Either an id or a filter must be provided to get')

        if _id is not None:
            if not isinstance(_id, ObjectId):
                _id = ObjectId(_id)

            filters = {'_id': _id}
        else:
            filters = Q(**kwargs)
            filters = self.get_query_from_filters(filters)

        await self.coll(alias).find_one(
            filters,
            projection=self._loaded_fields.to_query(self.__klass__),
            callback=self.handle_get(callback))
Beispiel #9
0
    def __init__(self, klass):
        if klass.__abstract__ is True:
            raise Exception(
                'Abstract model \'{}\' could not be used for retrieving data'.
                format(klass.__name__))
        self.__klass__ = klass
        self._filters = None
        self._limit = None
        self._skip = None
        self._order_fields = []
        self._loaded_fields = QueryFieldList()
        self._reference_loaded_fields = {}

        if klass.__inherit__ is True:
            child_classes = [
                klass.__hierarchy__,
            ]
            child_classes.extend([
                child_class.__hierarchy__
                for child_class in klass.__child_classes__
            ])
            self._filters = Q({'_cls': {'$in': child_classes}})
Beispiel #10
0
 def get(self):
     query = Q(status='ACTIVE')
     if self.query:
         q = '.*%s.*' % self.query
         query = query & (
             Q({"source": {'$regex': q}})
             | Q({"name": {'$regex': q}})
             | Q({"region": {'$regex': q}})
             | Q({"phone": {'$regex': q}})
             | Q({"address": {'$regex': q}})
         )
     qs = Yard.objects.filter(query).order_by('create_at',
                                              direction=DESCENDING)
     if self.page:
         skip = self.count_per_page * (self.page - 1)
         limit = self.count_per_page
         qs = qs.skip(skip).limit(limit)
     yards = yield qs.find_all()
     total = yield Yard.objects.filter(query).count()
     self.context['total'] = total / self.count_per_page
     self.context['yards'] = yards
     self.render('yard_list.html', **self.context)