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}'
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
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")
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())
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
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())
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)
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'