示例#1
0
def basic_auth_error():
    return error_response(401)
示例#2
0
def token_auth_error():
    '''用于在 Token Auth 认证失败的情况下返回错误响应'''
    return error_response(401)
示例#3
0
def token_auth_error():
    return error_response(401)
示例#4
0
文件: auth.py 项目: eddy0/flask-mega
def basic_auth_error(status):
    return error_response(status)
示例#5
0
def basic_auth_error():
    return error_response(401)
示例#6
0
def basic_auth_error():
    """用于在认证失败的情况下返回错误响应"""
    return error_response(401)
示例#7
0
def get_user_recived_posts_likes(id):
    '''返回该用户收到的文章喜欢'''
    user = User.query.get_or_404(id)
    if g.current_user != user:
        return error_response(403)
    page = request.args.get('page', 1, type=int)
    per_page = min(
        request.args.get('per_page',
                         current_app.config['POSTS_PER_PAGE'],
                         type=int), 100)
    # 用户哪些文章被喜欢/收藏了,分页
    posts = user.posts.join(posts_likes).paginate(page, per_page)
    # 喜欢记录
    records = {
        'items': [],
        '_meta': {
            'page': page,
            'per_page': per_page,
            'total_pages': posts.pages,
            'total_items': posts.total
        },
        '_links': {
            'self':
            url_for('api.get_user_recived_posts_likes',
                    page=page,
                    per_page=per_page,
                    id=id),
            'next':
            url_for('api.get_user_recived_posts_likes',
                    page=page + 1,
                    per_page=per_page,
                    id=id) if posts.has_next else None,
            'prev':
            url_for('api.get_user_recived_posts_likes',
                    page=page - 1,
                    per_page=per_page,
                    id=id) if posts.has_prev else None
        }
    }
    for p in posts.items:
        # 重组数据,变成: (谁) (什么时间) 喜欢了你的 (哪篇文章)
        for u in p.likers:
            if u != user:  # 用户自己喜欢自己的文章不需要被通知
                data = {}
                data['user'] = u.to_dict()
                data['post'] = p.to_dict()
                # 获取喜欢时间
                res = db.engine.execute(
                    "select * from posts_likes where user_id={} and post_id={}"
                    .format(u.id, p.id))
                data['timestamp'] = datetime.strptime(
                    list(res)[0][2], '%Y-%m-%d %H:%M:%S.%f')
                # 标记本条喜欢记录是否为新的
                last_read_time = user.last_posts_likes_read_time or datetime(
                    1900, 1, 1)
                if data['timestamp'] > last_read_time:
                    data['is_new'] = True
                records['items'].append(data)
    # 按 timestamp 排序一个字典列表(倒序,最新喜欢的人在最前面)
    records['items'] = sorted(records['items'],
                              key=itemgetter('timestamp'),
                              reverse=True)
    # 更新 last_posts_likes_read_time 属性值
    user.last_posts_likes_read_time = datetime.utcnow()
    # 将新喜欢通知的计数归零
    user.add_notification('unread_posts_likes_count', 0)
    db.session.commit()
    return jsonify(records)
示例#8
0
def basic_auth_error():
    '''when failure of auth check'''
    return error_response(401)
示例#9
0
def get_course_distributions_no_subject(campus, subject):
    result = [row.to_dict() for row in CDist.query.filter_by(campus=campus, subject=subject).all()]
    return jsonify(result) if result != [] else error_response(404, "Not Found")
示例#10
0
def token_auth_error():
    '''用于在token auth 认证失败的情况下返回错误相应'''
    return error_response(401)
示例#11
0
def get_notifications(id):
    notification = Notification.query.get_or_404(id)
    if g.current_user != notification.user:
        return error_response(403)
    data = notification.to_dict()
    return jsonify(data)
示例#12
0
文件: auth.py 项目: xuweicn1/blog_app
def token_auth_error(status):
    """错误指向"""
    return error_response(status)
示例#13
0
def delete_product(id):
    return error_response(501)
示例#14
0
def update_product(id):
    return error_response(501)
示例#15
0
def create_product():
    return error_response(501)
示例#16
0
def get_professors(campus, subject, course):
    result = [row.to_dict() for row in Educator.query.filter_by(campus=campus, subject=subject, course=g.course, detail=g.detail).all()]
    return jsonify(result) if result != [] else error_response(404, "Not Found")
示例#17
0
def token_auth_error():
    '''
    Called when token auth fails
    '''
    return error_response(401)  # Unauthorized
示例#18
0
def get_professors_no_subject(campus, subject):
    result = [row.to_dict() for row in Educator.query.filter_by(campus=campus, subject=subject).all()]
    return jsonify(result) if result != [] else error_response(404, "Not Found")
示例#19
0
def token_auth_error():
    """用于在 Token Auth 认证失败的情况下返回错误响应"""
    return error_response(401)
示例#20
0
def get_average_history(campus, subject, course):
    result = CourseAverageHistory.query.filter_by(campus=campus, subject=subject, course=g.course, detail=g.detail).one_or_none()
    return jsonify(result.to_dict()) if result is not None else error_response(404, "Not Found")
示例#21
0
 def decorated_function(*args, **kwargs):
     if not g.current_user.can(
             permission
     ):  # 用户通过了Basic Auth认证后,就会在当前会话中附带 g.current_user
         return error_response(403)
     return f(*args, **kwargs)
示例#22
0
def get_average_history_no_subject(campus, subject):
    result = [row.to_dict() for row in CourseAverageHistory.query.filter_by(campus=campus, subject=subject).all()]
    return jsonify(result) if result != [] else error_response(404, "Not Found")
示例#23
0
文件: auth.py 项目: rcuri/comparenba
def auth_error():
    """Sends authentication error back to client."""
    return error_response(401)
示例#24
0
def get_tower_settings(tower_id):
    tower = TowerDB.query.get_or_404(tower_id)
    if not current_user.check_permissions(tower_id, 'creator'):
        return error_response(403)
    return jsonify(tower.to_dict())
示例#25
0
def get_user_recived_likes(id):
    '''返回该用户收到的赞和喜欢'''
    user = User.query.get_or_404(id)
    if g.current_user != user:
        return error_response(403)
    page = request.args.get('page', 1, type=int)
    per_page = min(
        request.args.get('per_page',
                         current_app.config['COMMENTS_PER_PAGE'],
                         type=int), 100)
    # 用户哪些评论被点赞了,分页
    comments = user.comments.join(comments_likes).paginate(page, per_page)
    # 点赞记录
    records = {
        'items': [],
        '_meta': {
            'page': page,
            'per_page': per_page,
            'total_pages': comments.pages,
            'total_items': comments.total
        },
        '_links': {
            'self':
            url_for('api.get_user_recived_likes',
                    page=page,
                    per_page=per_page,
                    id=id),
            'next':
            url_for('api.get_user_recived_likes',
                    page=page + 1,
                    per_page=per_page,
                    id=id) if comments.has_next else None,
            'prev':
            url_for('api.get_user_recived_likes',
                    page=page - 1,
                    per_page=per_page,
                    id=id) if comments.has_prev else None
        }
    }
    for c in comments.items:
        # 重组数据,变成: (谁) (什么时间) 点赞了你的 (哪条评论)
        for u in c.likers:
            data = {}
            data['user'] = u.to_dict()
            data['comment'] = c.to_dict()
            # 获取点赞时间
            res = db.engine.execute(
                "select * from comments_likes where user_id={} and comment_id={}"
                .format(u.id, c.id))
            data['timestamp'] = datetime.strptime(
                list(res)[0][2], '%Y-%m-%d %H:%M:%S.%f')
            # 标记本条点赞记录是否为新的
            last_read_time = user.last_likes_read_time or datetime(1900, 1, 1)
            if data['timestamp'] > last_read_time:
                data['is_new'] = True
            records['items'].append(data)
    # 按 timestamp 排序一个字典列表(倒序,最新关注的人在最前面)
    records['items'] = sorted(records['items'],
                              key=itemgetter('timestamp'),
                              reverse=True)
    # 还需要考虑分页的问题,比如新点赞有25条,默认分页是每页10条,
    # 如果用户请求第一页时就更新 last_likes_read_time,那么后15条就被认为不是新点赞了,这是不对的
    if records['_meta']['page'] * records['_meta'][
            'per_page'] >= user.new_likes():
        # 更新 last_likes_read_time 属性值
        user.last_likes_read_time = datetime.utcnow()
        # 将新点赞通知的计数归零
        user.add_notification('unread_likes_count', 0)
    else:
        # 用户剩余未查看的新点赞数
        n = user.new_likes(
        ) - records['_meta']['page'] * records['_meta']['per_page']
        # 将新点赞通知的计数更新为未读数
        user.add_notification('unread_likes_count', n)
    db.session.commit()
    return jsonify(records)
示例#26
0
def token_auth_error(status):
    return error_response(status)
示例#27
0
def basic_auth_error():
    # 401 is HTTP Unauthorized error.
    return error_response(401)
示例#28
0
def test_dca(wellName):
    supported_modes = ["cumulative", "exponential", "harmonic", "hyperbolic"]

    try:
        options = request.get_json()
    except Exception as ex:
        print(ex)
        return error_response(400,
                              "One or more required parameters are missing")

    try:
        feedDf = pd.read_sql(
            "select readdate, oilrate, waterrate, gasrate from casedata where user='******' and well='{}'"
            .format(g.current_user.username, wellName),
            con=db.engine)
    except:
        return error_response(400, "reading from table failed")

    try:
        date_fmt = "%m/%d/%Y"
        date_arr = []

        for i in range(len(feedDf)):
            dt = datetime.datetime.strptime(feedDf['readdate'][i], date_fmt)
            date_arr.append(dt)

        feedDf['date'] = date_arr
        feedDf.sort_values(by=['date'], ascending=True, inplace=True)

        feedDf.drop(columns=['readdate'], inplace=True)
    except:
        return error_response(500, "error reading date field")

    output = []
    try:
        for idx, opt in enumerate(options):
            ref = opt.get("ref", idx)

            try:
                mode = opt.get("mode", None)
                if (mode is None):
                    raise ValueError("required parameter mode is not supplied")
                if (not (mode in supported_modes)):
                    raise ValueError("mode {} is not supported".format(mode))

                datasource = opt.get("datasource", None)
                if (datasource is not None
                        and datasource not in feedDf.columns):
                    raise ValueError(
                        "datasource {} could not be found".format(datasource))

                qiOverride = opt.get("qi", None)
                if (qiOverride is None and datasource is None):
                    raise ValueError(
                        "either qi or datasource must be supplied")

                t = opt.get("tSpan", None)
                if (t is None and datasource is None):
                    raise ValueError(
                        "tSpan cannot be empty when datasource is not supplied"
                    )

                if (t is not None and t < 1):
                    raise ValueError("value of t must be greater than 0")

                if (datasource is not None and len(feedDf) == 0):
                    raise ValueError(
                        "no data is available for the supplied criteria")

                tStep = opt.get("tStep", 1)
                if (tStep <= 0):
                    raise ValueError("value of tStep must be greater than 0")

                a = opt.get("a", None)
                n = opt.get("n", None)

                dca_result = []
                qiOverride = qiOverride if qiOverride is not None else feedDf[
                    datasource][0]

                outputDf = pd.DataFrame()
                outputDf["time"] = feedDf[
                    "date"] if datasource is not None else np.arange(
                        1, t, tStep)

                inputDf = pd.DataFrame()
                if (datasource is not None):
                    inputDf["time"] = feedDf["date"]
                    inputDf["value"] = feedDf[datasource]

                pearsonr = 0.0
                tIntervals = len(outputDf)

                if (mode == "cumulative"):
                    if (datasource is None):
                        raise ValueError(
                            "required parameter datasource is not supplied")
                    dca_result = dca.cumulative(feedDf[datasource])
                else:
                    dca_result = dca.calc(qiOverride,
                                          tIntervals,
                                          mode,
                                          a=a,
                                          n=n)
                    pearsonr = dca.r2(
                        feedDf[datasource],
                        dca_result) if datasource is not None else pearsonr

                outputDf["value"] = dca_result
                output_dict = outputDf.to_dict('records')
                input_dict = inputDf.to_dict('records')

                result = {}
                if (mode == "cumulative"):
                    result = dcaVMs.cumulative_resp_model(
                        mode=mode,
                        wellName=wellName,
                        datasource=datasource,
                        input=input_dict,
                        output=output_dict,
                        ref=ref)

                if (mode == "exponential"):
                    result = dcaVMs.exponential_resp_model(
                        mode=mode,
                        wellName=wellName,
                        datasource=datasource,
                        input=input_dict,
                        output=output_dict,
                        qi=qiOverride,
                        a=a,
                        t=t,
                        tStep=tStep,
                        pearsonr=pearsonr,
                        ref=ref)

                if (mode == "harmonic"):
                    result = dcaVMs.exponential_resp_model(
                        mode=mode,
                        wellName=wellName,
                        datasource=datasource,
                        input=input_dict,
                        output=output_dict,
                        qi=qiOverride,
                        a=a,
                        t=t,
                        tStep=tStep,
                        pearsonr=pearsonr,
                        ref=ref)

                if (mode == "hyperbolic"):
                    result = dcaVMs.exponential_resp_model(
                        mode=mode,
                        wellName=wellName,
                        datasource=datasource,
                        input=input_dict,
                        output=output_dict,
                        qi=qiOverride,
                        a=a,
                        t=t,
                        n=n,
                        tStep=tStep,
                        pearsonr=pearsonr,
                        ref=ref)

                output.append(result)

            except ValueError as ve:
                print(ve)
                result = {"ref": ref, "error": {"message": str(ve)}}
                output.append(result)

    except Exception as ex:
        print(ex)
        return error_response(500, str(ex))

    response = jsonify(output)
    response.headers.set("Content-Type", "application/json")

    return response
示例#29
0
def basic_auth_error():
    '''用于在认证失败的情况下返回错误响应'''
    return error_response(401)
示例#30
0
def basic_auth_error():
    '''
    Called when authentication fails
    '''
    return error_response(401)  # Unauthorized
示例#31
0
def token_auth_error():
    return error_response(401)
示例#32
0
def product(id):
    product = Product.query.get(id)
    if not product:
        return error_response(404)
    return product_schema.dump(product)