예제 #1
0
파일: base.py 프로젝트: WXYwxy12390/-
 def get_or_404(self, ident):
     rv = self.get(ident)
     if rv is None:
         raise NotFound()
     elif rv.is_delete == 1:
         raise NotFound(msg='该资源已删除', error_code=10021)
     return rv
예제 #2
0
 def first_or_404(self, description=None):
     rv = self.first()
     if not rv:
         if description == None:
             raise NotFound()
         else:
             raise NotFound(msg=description)
     return rv
예제 #3
0
 def get_or_404(self, ident, description=None):
     rv = self.get(ident)
     if not rv:
         if description == None:
             raise NotFound()
         else:
             raise NotFound(msg=description)
     return rv
예제 #4
0
 def verify(email,password):
     user = User.query.filter_by(email=email).first()
     if not user:
         raise NotFound(msg='用户不存在')
     if not user.check_password(password):
         raise NotFound(msg='密码错误')
     scope= 'AdminScope' if user.auth==2 else 'UserScope'
     return {'uid':user.id,'scope':scope}
예제 #5
0
    def paginate(self,
                 page=None,
                 per_page=None,
                 error_out=True,
                 max_per_page=None):
        if request:
            if page is None:
                try:
                    page = int(request.args.get('page', 1))
                except (TypeError, ValueError):
                    if error_out:
                        raise NotFound()

                    page = 1

            if per_page is None:
                try:
                    per_page = int(request.args.get('per_page', 20))
                except (TypeError, ValueError):
                    if error_out:
                        raise NotFound()

                    per_page = 20
        else:
            if page is None:
                page = 1

            if per_page is None:
                per_page = 20

        if max_per_page is not None:
            per_page = min(per_page, max_per_page)

        if page < 1:
            if error_out:
                raise NotFound(0)
            else:
                page = 1

        if per_page < 0:
            if error_out:
                raise NotFound()
            else:
                per_page = 20

        items = self.limit(per_page).offset((page - 1) * per_page).all()

        if not items and page != 1 and error_out:
            raise NotFound()

        # No need to count if we're on the first page and there are fewer
        # items than we expected.
        if page == 1 and len(items) < per_page:
            total = len(items)
        else:
            total = self.order_by(None).count()

        return Pagination(self, page, per_page, total, items)
예제 #6
0
    def first_or_404(self):
        rv = self.first()

        if not rv:
            raise NotFound()

        return rv
예제 #7
0
 def verify(email, password):
     user = User.query.filter_by(email=email).first()
     if not user:
         raise NotFound(msg="用户不存在")
     if not user.check_password(password):
         raise AuthFailed()
     return {"uid":user.id}
예제 #8
0
def delete_competition_api(id_):
    competition = Competition.get_by_id(id_)
    if competition is None:
        raise NotFound('Competition not found')

    competition.delete()
    raise DeleteSuccess('Competition has been deleted')
예제 #9
0
def set_cart():
    form = CartForm().validate_for_api()
    # req = request.values
    # food_id = int(req['id']) if 'id' in req else 0
    # number = int(req['number']) if 'number' in req else 0
    # if food_id < 1 or number < 1:
    #     return jsonify(resp)

    member_info = g.user
    if not member_info:
        return AuthFailed('请先登录')

    food_info = Food.query.filter_by(id=form.id.data).first()
    if not food_info:
        return NotFound('添加购物车失败-1')

    if food_info.stock < form.number.data:
        return ParameterException('添加购物车失败,库存不足')

    ret = MemberCart.set_items(member_id=member_info.uid,
                               food_id=food_info.id,
                               number=form.number.data)
    if not ret:
        return ParameterException('添加购物车失败-2')
    return Success('更新购物车成功')
예제 #10
0
파일: subject.py 프로젝트: jornsky/weiapi
def get_subject_byid(id):
    re = Subject.query.get(id)

    if not re:
        return NotFound()

    return jsonify(re)
예제 #11
0
def modify_contest_api(id_):
    contest = Contest.get_by_id(id_)
    if not contest:
        raise NotFound()
    form = ContestInfoForm().validate_for_api().data_
    Contest.modify(id_, **form)
    return Success('Modify contest success')
예제 #12
0
 def get_comments(book_id):
     comments = Comment.query.filter_by(book_id=book_id).all()
     if not comments:
         raise NotFound(msg='no comment')
     c = [comment for comment in comments]
     res = {"comment": c, "book_id": book_id}
     return res
예제 #13
0
def food_info():
    form = IdForm().validate_for_api()
    id = form.id.data
    # req = request.values
    # id = int(req['id']) if 'id' in req else 0
    food_info = Food.query.filter_by(id=id).first()
    if not food_info or not food_info.status:
        return NotFound(msg='美食已下架')
    member_info = g.user
    cart_number = 0
    if member_info:
        cart_number = MemberCart.query.filter_by(member_id=member_info.uid).count()
    resp = {}
    resp['info'] = {
        "id": food_info.id,
        "name": food_info.name,
        "summary": food_info.summary,
        "total_count": food_info.total_count,
        "comment_count": food_info.comment_count,
        'main_image': UrlManager.build_image_url(food_info.main_image),
        "price": str(food_info.price),
        "stock": food_info.stock,
        "pics": [UrlManager.build_image_url(food_info.main_image)]
    }
    resp['cart_number'] = cart_number
    return jsonify(resp)
예제 #14
0
 def verify_by_email(email, password):
     user = User.query.filter_by(email=email).first()
     if not user:
         raise NotFound(message='User not found')
     if not user.check_password(password):
         raise AuthFailed()
     return {'uid': user.id, 'scope': user.auth}
예제 #15
0
def delete():
    form = ImageForm().validate_for_api()
    host = form.host.data
    image = form.image.data
    certification = get_certification(host)
    # 判断是否鉴权
    if certification:
        cert, key = cert_file_path(host)
        tls_config = docker.tls.TLSConfig(client_cert=(cert, key),
                                          verify=False)
        client = docker.DockerClient(base_url='tcp://' + host + ':2376',
                                     tls=tls_config)
    else:
        client = docker.DockerClient(base_url='tcp://' + host + ':2375')
    try:
        client.images.remove(image)
    except ImageNotFound:
        client.close()
        return NotFound()
    except APIError:
        client.close()
        return ImageUsed()
    # client.images.remove(image)
    client.close()

    return DeleteSuccess(msg='镜像删除成功')
예제 #16
0
def delete_problem_set_api(id_):
    problem_set = ProblemSet.get_by_id(id_)
    if problem_set is None:
        raise NotFound('Problem set not found')

    problem_set.delete()
    raise DeleteSuccess('Problem set has been deleted')
예제 #17
0
 def get_banner():
     result = Flbanner.query.filter_by(banner_status=1).order_by(
         Flbanner.post_date.desc()
     ).limit(5).all()
     if not result:
         raise NotFound(msg='no banner!', error_code=2001)
     return result
예제 #18
0
def api_paging(model):
    """请求格式:
    http://77.art:5000/seven/v1/park/search?page_num=xxx&page_size=xxx&sort=[{"field":"id","asc":"false"}]
    """
    form = SearchForm().validate_for_api()
    try:
        page_num = form.page_num.data
        page_size = form.page_size.data or current_app.config['PER_PAGE']
        q = form.q.data
        start = get_timestamp(
            form.start_time.data) if form.start_time.data is not "" else None
        end = get_timestamp(
            form.end_time.data) if form.end_time.data is not "" else None
        s_data = q if q is not None else ''
        _time = all([start, end])
        _data = all([s_data])
        data = model.query.filter_by()
        if not _time and _data:
            data = data.filter(model.title.contains(s_data))
        elif not _data and _time:
            data = data.filter(model.create_time.between(start, end))
        elif not _data and not _time:
            pass
        else:
            data = data.filter(
                and_(model.title.contains(s_data),
                     model.create_time.between(start, end)))
        pagination = data.order_by(build_sort(model, form)).paginate(
            page=int(page_num), per_page=int(page_size)).items

        new_list = {'error_code': 0, 'data': pagination}
        return jsonify(new_list)

    except ValueError:
        return NotFound(message="检索错误")
예제 #19
0
    def get_or_404(self, ident):
        rv = self.get(ident)

        if not rv:
            raise NotFound()

        return rv
예제 #20
0
 def get_or_404(self, ident, e=None, error_code=None, msg=None):
     rv = self.get(ident)  # 查询主键
     if not rv:
         if e:
             raise e
         raise NotFound(error_code=error_code, msg=msg)
     return rv
예제 #21
0
def verify_token(token, secret):
    ua = request.headers.get('User-Agent', '')
    if ua != WHITELIST_UA:
        timestamp = int(request.headers.get('Timestamp', 0))
        if abs(timestamp - int(time.time())) > 100:
            raise AuthFailed()

        my_secret = md5(token + str(timestamp))
        if my_secret != secret:
            raise AuthFailed()

    s = Serializer(current_app.config['SECRET_KEY'])
    try:
        data = s.loads(token)
    except BadSignature:
        raise AuthFailed(msg='token is invalid', error_code=1002)
    except SignatureExpired:
        raise AuthFailed(msg='token is expired', error_code=1003)
    uid = data['uid']
    user = User.get_by_id(uid)
    if not user:
        raise NotFound()
    allow = is_in_scope(user.scope, request.endpoint)
    if not allow:
        raise Forbidden()
    g.user = user
    return True
예제 #22
0
 def all_or_404(self, e=None, error_code=None, msg=None):
     rv = list(self)
     if not rv:
         if e:
             raise e
         raise NotFound(error_code=error_code, msg=msg)
     return rv
예제 #23
0
def modify_camp_name_api(id_):
    camp = Camp.get_by_id(id_)
    if camp is None:
        raise NotFound('Course set not found')
    form = ModifyCampNameForm().validate_for_api().data_
    camp.mofify(**form)
    raise Success('Course set has been modified')
예제 #24
0
    def first_or_404(self):
        """Like :meth:`first` but aborts with 404 if not found instead of returning ``None``."""

        rv = self.first()
        if rv is None:
            raise NotFound()
        return rv
예제 #25
0
def append_contest_api(id_):
    course = Course.get_by_id(id_)
    if course is None:
        raise NotFound('Course not found')
    form = AppendContestForm().validate_for_api().data_
    course.append_contest(**form)
    raise Success('Contest appended')
예제 #26
0
def modify_course_api(id_):
    course = Course.get_by_id(id_)
    if course is None:
        raise NotFound('Course not found')
    form = ModifyCourseForm().validate_for_api().data_
    course.modify(**form)
    raise Success('Course has been modified')
예제 #27
0
def create_course(id_):
    camp = Camp.get_by_id(id_)
    if camp is None:
        raise NotFound('Course set not found')
    form = CreateCourseForm().validate_for_api().data_
    Course.create(camp_id=camp.id, **form)
    raise Success('Course has been created')
예제 #28
0
def get_single(id):
    post = Flposts.query.filter(Flposts.post_title != '',
                                Flposts.post_content != '',
                                Flposts.post_status == 'publish',
                                Flposts.ID == id).first()
    if not post:
        raise NotFound()
    return jsonify(post)
예제 #29
0
def course_detail_api(id_):
    course = Course.get_by_id(id_)
    if course is None:
        raise NotFound('Course not found')
    return jsonify({
        'code': 0,
        'data': course
    })
예제 #30
0
 def book_search_sub_query(self, query):
     """搜索自动补充"""
     url = f"http://api.zhuishushenqi.com/book/auto-complete?query={query}"
     res = self.request_get_url(url)
     if res.get('ok') is True:
         return res.get('keywords')
     else:
         raise NotFound()