Exemplo n.º 1
0
def upload():
    # 如果是单个文件
    # file = request.files["files"]
    files: list = request.files.getlist("files")
    if len(files) == 0:
        return CommonError.get_error(40000)
    resp = []
    for file in files:
        file: FileStorage = file
        extension = file.filename.split('.')
        ext: str = extension[1]
        identifier = str(uuid.uuid4()).replace("-", "") + "." + ext.lower()
        try:
            rec = fileStorage.save(file, name=identifier)
            fileObj = FileModel(file_hash=identifier,
                                file_name=file.filename,
                                file_type=file.mimetype)
            fileObj.save()
            db.session.flush()
            fileId = fileObj.file_id
            userId = g.current_user.id
            relationObj = FileUserModel(user_id=userId, file_id=fileId)
            relationObj.save(commit=True)

            resp.append({
                "origin": file.filename,
                "fileName": fileStorage.url(rec)
            })
        except Exception as e:
            current_app.logger.error(e)
            print(e)
            return CommonError.get_error(9999)
    return response_succ(body=resp)
Exemplo n.º 2
0
def rss_record():
    """ 
    记录rss的阅读记录
    """
    params = request.values or request.get_json() or {}
    url = str(params.get('url'))
    if not url:
        return CommonError.get_error(40000)
    bind_user_id = g.current_user.id
    sql = """
    SELECT bao_rss_user.user_id, bao_rss.rss_id, bao_rss_content.content_id FROM bao_rss_content, bao_rss, bao_rss_user
    WHERE bao_rss_content.content_link='{content_link}' 
        AND bao_rss_content.content_base=bao_rss.rss_link 
        AND bao_rss.rss_id=bao_rss_user.rss_id 
        AND bao_rss_user.user_id={user_id};
    """.format(content_link=url, user_id=bind_user_id)
    data_query = db.session.execute(sql).fetchone()
    if not data_query:
        return CommonError.error_toast('no match data')
    sql = """
    INSERT INTO bao_rss_read_record(read_url_id, read_user_id, read_time) VALUES ({read_url_id}, {read_user_id}, '{read_time}');
    """.format(read_url_id=data_query['content_id'],
               read_user_id=data_query['user_id'],
               read_time=get_unix_time_tuple())
    data_query = db.session.execute(sql)
    db.session.commit()
    return response_succ(body=boolValue(True))
Exemplo n.º 3
0
def encryption(encrypt_type: str = "md5"):
    """
    指定加密方式
    :param encrypt_type: encryption type default is "md5"...
    support
    'sha1','md5', 'sha256', 'sha224', 'sha512', 'sha384', 'blake2b',
    'blake2s', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512',
    'shake_128', 'shake_256'
    :return:
    """
    params = request.values or request.get_json() or {}
    print("p = " + str(params))
    source = params.get("source")
    if not source:
        return CommonError.get_error(40000)

    code: str = source
    encrypt_func = getattr(hashlib, encrypt_type, None) or None
    if not encrypt_func:
        return CommonError.get_error(40000)
    result = encrypt_func(code.encode('utf-8')).hexdigest()
    result_map = dict()
    result_map["source"] = source
    result_map["target"] = result
    result_map["type"] = encrypt_type
    return response_succ(body=result_map)
Exemplo n.º 4
0
def query_task():
    params = request.values  or request.get_json() or {}
    key: str = params.get('key') or 'celery*'
    if not key:
        return CommonError.get_error(40000)
    result = redisClient.get('celery-task-meta-'+str(key))
    if isinstance(result, bytes):
        reuslt = str(result, encoding='utf-8')
        result = json.loads(result)
    else:
        return CommonError.error_toast('no task')
    return response_succ(body=result)
Exemplo n.º 5
0
def delete():
    file_id = request.args.get('file_id')
    item = db.session.query(FileModel).filter(file_id == file_id).first()
    if item:
        path = fileStorage.path(item.file_hash)
        try:
            os.remove(path)
        except:
            return CommonError.get_error(9999)

        item: FileModel = item
        item.delete(logic=False)
        return response_succ()
    return CommonError.get_error(40400)
Exemplo n.º 6
0
def add_rss_source():
    """ 添加一个订阅源
    try add a url to rss list
    """
    params = request.values or request.get_json() or {}
    source = params.get("source")
    if not source:
        return CommonError.get_error(40000)

    bind_user_id = g.current_user.id

    try:
        query = """
        SELECT * FROM bao_rss WHERE rss_link = '{}';
        """.format(source)
        exists = db.session.execute(query).fetchone()
        rss_id = None
        if exists:
            rss_id = exists.rss_id
        else:
            # 查看是否可用
            regex = r'(https?)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]'
            result = re.match(regex, source)
            if not result:
                return CommonError.error_toast("wrong link")
            rss = RssModel(source)
            db.session.add(rss)
            db.session.flush()  # flush预提交,等于提交到数据库内存
            rss_id = rss.rss_id

        query = """
        SELECT * FROM bao_rss_user WHERE user_id = {} and rss_id = {};
        """.format(bind_user_id, rss_id)
        relation_id = db.session.execute(query).fetchone()
        result = {}
        if relation_id:
            result["rss_id"] = rss_id
        else:
            rss_user_relationship = RssUserModel(bind_user_id, rss_id)
            db.session.add(rss_user_relationship)
            db.session.commit()
            result["rss_id"] = rss_id
        from celery_tasks.tasks import async_parser_feed
        async_parser_feed.delay(source)
        return response_succ(body=result)
    except Exception as e:
        db.session.rollback()
        print(e)
        return CommonError.get_error(9999)
Exemplo n.º 7
0
def get_user_from_request(request, isforce: bool) -> any:
    params = request.values or request.get_json() or {}
    alise: str = "token"
    token = params.get(alise)
    if not token:
        token = session.get(alise)
    if not token:
        token = request.cookies.get(alise)
    if not token:
        if isforce:
            return CommonError.get_error(43000)
        else:
            return CommonError.get_error(40000)
    user = User.get_user(token=token)
    return user
Exemplo n.º 8
0
def remove_todo():
    params = request.values or request.get_json() or {}
    todo_id = params.get("todo_id")
    result = set_todo_state(todo_id, 3)
    if not result:
        return CommonError.get_error(40000)
    return response_succ(body=result)
Exemplo n.º 9
0
def register():
    params = request.values or request.get_json() or {}
    email = params.get("email")
    password = params.get("password")
    if len(password) != 32:
        return CommonError.get_error(40000)
    exsist_user = db.session.query(User).filter_by(email=email).first()
    if exsist_user:
        return UserError.get_error(40200)
    salt = current_app.config['SECURITY_PASSWORD_SALT'] or 'token'
    token = getmd5("{}{}{}".format(salt, email, get_random_num(5)))
    user = User(email=email, password=password, status=1)
    user.token = token
    db.session.add(user)
    db.session.commit()
    payload = {}
    payload['user_id'] = user.id
    return response_succ(body=payload)
Exemplo n.º 10
0
def email_to():
    params = request.values  or request.get_json() or {}
    subject = params.get('subject')
    body = params.get('body')
    recs = params.get('recipients')
    files = params.get('fileIds')
    if not subject or not body or not recs:
        return CommonError.get_error(40000)
    from celery_tasks.tasks import async_email_to
    receivers = []
    if isinstance(recs, str):
        receivers.append(recs)
    elif isinstance(recs, list):
        receivers.extend(recs)
    fileIds = []
    if isinstance(files, str):
        fileIds.append(files)
    elif isinstance(files, list):
        fileIds.extend(files)
    result = {}
    result['recipients'] = receivers
    task = async_email_to.delay(subject=subject, body=body, recipients=receivers, attaches=fileIds)
    result['task_id'] = task.id
    return response_succ(body=result)