import datetime import json from bson.objectid import ObjectId from flasgger import Swagger from flask import Flask from pymongo import MongoClient from web.util import get_logger from web.setting import MONGO_URI log = get_logger(__name__) flask = Flask(__name__) flask.config.from_object("web.setting") # swagger configuration see web.setting, for more info: https://github.com/flasgger/flasgger # swagger yml definition: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject swagger = Swagger(flask) # pymongo dict_db = MongoClient(MONGO_URI, tz_aware=True)['dict'] class JSONEncoder(json.JSONEncoder): """ extend json-encoder class""" def default(self, o): if isinstance(o, ObjectId): return str(o) if isinstance(o, datetime.datetime): return str(o) return json.JSONEncoder.default(self, o)
import re from datetime import datetime from bson import ObjectId from bson.codec_options import CodecOptions from pymongo import ASCENDING, DESCENDING from web.flask import dict_db, redis from web.setting import AUTH_TOKEN_PREFIX from web.util import china_tz, get_logger, local_tz, random_alphanumeric, to_json, parse_json, sha256_pwd from web.util.error import Error log = get_logger(__file__) # 配置datetime时区 db = dict_db.History.with_options( codec_options=CodecOptions(tz_aware=True, tzinfo=local_tz)) # index setting db.create_index([("title", ASCENDING)], unique=True) # Default projects for history __projection = {'_id': 1, 'title': 1, 'content': 1, 'created_at': 1, 'updated_at': 1} def save_by_title(history: dict): """ Save a new history with field title as index :return: """ title = history.get('title') if not title: