Example #1
0
    def get(self, id=None):
        user = get_current_user()
        if id == 'me':
            return util.api_response(data=self.me(user))
        elif id is not None:
            return util.api_response(data=User.get_by_id(id))
        else:
            if user.is_admin:
                parser.add_argument('page_size', type=int, default=10)
                parser.add_argument('page', type=int, default=1)
                parser.add_argument('order_by', type=str, default='-added')
                args = parser.parse_args()
                page_size = args.get('page_size')
                page = args.get('page')
                order_by = [args.get('order_by')]
                query = {}

                result = util.paging(
                    cls=User,
                    page=page,
                    query=query,
                    page_size=page_size,
                    order_by=order_by
                )
                return util.api_response(data=result)
            else:
                return util.api_response(
                    data={'msg': 'Don\'t have authority'}, status_code=403
                )
Example #2
0
    def get(self, id=None):
        """
        @api {get} /article/:id 获取原生文章列表
        @apiName articlelist
        @apiGroup articlelist
        @apiDescription 查询未编辑的文章列表
        @apiVersion 1.0.0

        @apiParam {Integer} [page_size] 每页条数
        @apiParam {Integer} [page] 页数
        """
        if id:
            articles = Article.get_by_id(id=id)
            return util.api_response(data=articles.api_response())
        else:
            parser.add_argument('page_size', type=int, default=20)
            parser.add_argument('page', type=int, default=1)
            parser.add_argument('order_by', type=str, default='-added')
            args = parser.parse_args()
            page_size = args.get('page_size')
            page = args.get('page')
            order_by = [args.get('order_by')]
            query = {}

            result = util.paging(
                cls=Article,
                page=page,
                query=query,
                page_size=page_size,
                order_by=order_by
            )

            return util.api_response(data=result)
Example #3
0
 def handle_error(self, e):
     if isinstance(e, HTTPException):
         return super(Process, self).handle_error(e)
     elif isinstance(e, JWTError):
         data = {'msg': str(e.description)}
         return self.make_response(*util.api_response(data, e.status_code))
     else:
         traceback.print_exc()
         data = {'msg': str(e)}
         return self.make_response(*util.api_response(data, 500))
Example #4
0
    def post(self):
        """
        @api {get} /article 新增文章
        @apiName articlelist
        @apiGroup articlelist
        @apiDescription 保存文章到article数据库       
        @apiVersion 1.0.0

        @apiParamExample {json} Request-Example:
        {
            "title":"hhhhh",
            "url":"fdsafdsf.net"
        }

        @apiParam {Integer} [page_size] 每页条数
        @apiParam {Integer} [page] 页数
        """
        data = request.get_json(force=True)
        data['added'] = datetime.datetime.now()

        if data.get('author'):
            user = User.get_by_id(data.get('author'))
            data['author'] = user
        else:
            data['author'] = get_current_user()
    
        articles = Article(**data).save()
        articles.author.save()

        if articles:
            return util.api_response(articles.api_response())
        else:
            raise ValueError('save failure')
Example #5
0
    def put(self, id=None):
        """
        @api {put} /v1/user 修改用户
        @apiName user
        @apiGroup user
        @apiDescription 修改用户,用户名不能修改
        @apiVersion 1.0.0

        @apiParamExample {json} Request-Example:
        {
            "username":"******",
            "password":"******",
            "email":"*****@*****.**"
        }

        @apiErrorExample {json} Error-Response:
            HTTP/1.1 500 ERROR
            {
                "msg": "File not found"
            }
        """
        if id is None:
            raise ValueError('id not found')
        data = request.get_json()
        current_user = get_current_user()
        user = User.objects.get(id=id)
        if 'username' in data and user.username != data['username']:
            return util.api_response(
                data={'msg': 'Can\'t modify username'}, status_code=403
            )         
        if str(current_user.id) == str(user.id):
            if 'level' in data:
                del data['level']
        else:
            if not current_user.is_admin:
                return util.api_response(
                    data={'msg': 'Don\'t have authority'}, status_code=403
                )
        if 'password' in data:
            data['password'] = util.md5(data['password'])
        user.update(**data)
        user.reload()
        return util.api_response(data=self.me(user))
Example #6
0
    def post(self):
        """
        @api {post} /v1/user 添加用户
        @apiName user
        @apiGroup user
        @apiDescription 添加用户
        @apiVersion 1.0.0

        @apiParamExample {json} Request-Example:
        {
            "username":"******",
            "password":"******",
            "email":"*****@*****.**",
            "level": [2,9]
        }

        @apiErrorExample {json} Error-Response:
            HTTP/1.1 500 ERROR
            {
                "msg": "File not found"
            }
        """
        data = request.get_json()
        username = data['username'].strip().lower()
        password = data['password'].strip()
        email = data['email']
        level = data['level']

        if not (username and password and email):
            raise ValueError('请把所有数据填写完整。')

        if User.get_by_username(username):
            raise ValueError('该用户已存在')

        user = User(
            username=username,
            password=util.md5(password),
            email=email,
            level=level,
            )
        user.save()
        return util.api_response(data=self.me(user))
Example #7
0
    def put(self, id=None):
        """
        @api {put} /v1/user 修改article
        @apiName user
        @apiGroup user
        @apiDescription 修改article
        @apiVersion 1.0.0

        @apiParamExample {json} Request-Example:
        {
            "title":"hhhhh",
            "url":"fdsafdsf.net"
        }

        @apiErrorExample {json} Error-Response:
            HTTP/1.1 500 ERROR
            {
                "msg": "File not found"
            }
        """
        if id is None:
            raise ValueError('id not found')
        data = request.get_json(force=True)
        print(data)
        articles = Article.objects.get(id=id)
      
        if data.get('author'):
            user = User.get_by_id(data.get('author'))
            
            data['author'] = user
        else:
            data['author'] = get_current_user()
            
        if articles:
            articles.update(**data)
            articles.reload()
            return util.api_response(data=articles.api_response())
        else:
            raise ValueError('save failure')
Example #8
0
 def delete(self, id=None):
     if id is None:
         raise ValueError('id not found')
     user = User.get_by_id(id)
     user.delete()
     return util.api_response(data={'msg': 'SUCCESS'})
Example #9
0
def auth_response_handler(access_token, identity):
    data = {'access_token': access_token.decode('utf-8')}
    return rest_api.make_response(*util.api_response(data=data))