示例#1
0
def delete_user(schema: mongoengine.Document, chat_id: str) -> str:
    try:
        if not db_utils.check_account_exist(
                schema, chat_id) or not schema.objects(chat_id=chat_id):
            raise mongoengine.DoesNotExist(f'No such account: {chat_id}')
        target = schema.objects(chat_id=chat_id)
        target.delete()
        return f'{chat_id} removed'
    except mongoengine.DoesNotExist as e:
        return f'{e}'
    except Exception as e:
        return f'{e}'
示例#2
0
def _query(doc: Document,
           filters: tuple = None,
           page: int = 0,
           per_page: int = 0,
           order_by: str = None):
    print('\nQuery params:\n')
    print('filters:%s\norder_by:%s\npage:%d per_page:%d' %
          (filters, order_by, page, per_page))
    objects = None
    if filters:
        objects = doc.objects(**filters)
    else:
        objects = doc.objects()
    if order_by is not None:
        objects = objects.order_by(*order_by)
    if per_page > 0 and per_page > 0:
        objects = objects.limit(per_page).skip((page - 1) * per_page)
    return objects
示例#3
0
 def remove_document(self, document: Document, id: Text, bot: Text,
                     user: Text):
     try:
         doc = document.objects(bot=bot).get(id=id)
         doc.update(status=False, user=user)
     except DoesNotExist as e:
         logging.info(e)
         raise AppException("Unable to remove document")
     except Exception as e:
         logging.info(e)
         raise AppException("Unable to remove document")
示例#4
0
def _delete_membership(document: Document, id: str, membership_id: str):
    if not bson.ObjectId.is_valid(id):
        flask.abort(400)

    document: Document = document.objects(id=id).first()
    if not document:
        flask.abort(404)
    document.update(pull__memberships___id=membership_id)
    document.reload()

    return flask.jsonify(document.jsonify())
示例#5
0
def _query(doc: Document,
           filters: tuple = None,
           page: int = 1,
           per_page: int = 100,
           order_by: str = None) -> str:
    """数据库查询函数

    :param doc: Document的子类型,从哪个collection 中获取数据
    :type doc: Document
    :param filters: QuerySet 的 filter 参数, defaults to None
    :type filters: tuple, optional
    :param page: 数据分页,此处表示页码, defaults to 1
    :type page: int, optional
    :param per_page: 每页文档个数, defaults to 100
    :type per_page: int, optional
    :param order_by: QuerySet 的 order_by, defaults to None
    :type order_by: str, optional
    :return: collection 的 JSON 串
    :rtype: str
    """
    print('\nQuery params:\n')
    print('filters:%s\norder_by:%s\npage:%d per_page:%d' %
          (filters, order_by, page, per_page))
    objects = None
    if filters:
        objects = doc.objects(**filters)
    else:
        objects = doc.objects()
    if per_page > 0 and per_page > 0:
        objects = objects.limit(per_page).skip((page - 1) * per_page)
    if order_by is not None:
        objects = objects.order_by(*order_by)
    if objects is not None and objects.count() > 0:
        return objects.to_json()
    print('Failed to get data from db\n')
    return None
示例#6
0
def _create_membership(document: Document, id: str):
    if not bson.ObjectId.is_valid(id):
        flask.abort(400)

    start_date = flask.request.form.get('start_date')
    end_date = flask.request.form.get('end_date')

    if start_date is None or end_date is None:
        flask.abort(400)

    document: Document = document.objects(id=id).first()
    if not document:
        flask.abort(404)

    document.memberships.create(start_date=start_date, end_date=end_date)

    document.save()

    return flask.jsonify(document.jsonify())
示例#7
0
def check_account_exist(model: mongoengine.Document, chat_id) -> bool:
    try:
        return bool(model.objects(chat_id=str(chat_id)))
    except Exception as e:
        print(e)
        return False
 def get(self, entity: Document):
     entity.objects(id=entity.id)
示例#9
0
def map_reduce(cls: mongoengine.Document, query: dict, map_f: str,
               reduce_f: str):
    if isinstance(cls(), mongoengine.Document):
        return cls.objects(**query).map_reduce(map_f, reduce_f, "inline")
    else:
        raise 'Class is not extend mongoengine.Document'