Files
crawlab/routes/task.py
2019-02-11 22:29:35 +08:00

81 lines
2.0 KiB
Python

import json
from celery.utils.log import get_logger
from flask import jsonify
from flask_restful import reqparse, Resource
from app import api
from db.manager import db_manager
logger = get_logger('tasks')
parser = reqparse.RequestParser()
# collection name
COL_NAME = 'tasks'
class TaskApi(Resource):
col_name = COL_NAME
parser = reqparse.RequestParser()
def __init__(self):
super(TaskApi).__init__()
self.parser.add_argument('page')
self.parser.add_argument('page_size')
self.parser.add_argument('filter')
def get(self, id=None):
args = self.parser.parse_args()
# get item by id
if id is None:
# filter
cond = {}
if args.get('filter') is not None:
cond = json.loads(args.filter)
# page number
page = 0
if args.get('page') is not None:
page = int(args.page)
else:
print(args)
# page size
page_size = 10
if args.get('page_size') is not None:
page = int(args.page_size)
# total count
total_count = db_manager.count(col_name=self.col_name, cond=cond)
# items
items = db_manager.list(col_name=self.col_name,
cond=cond,
skip=page * page_size,
limit=page_size)
return jsonify({
'status': 'ok',
'total_count': total_count,
'page': page,
'page_size': page_size,
'items': items
})
# list items
else:
return jsonify(db_manager.get(col_name=self.col_name, id=id))
def update(self, id=None):
pass
def remove(self, id=None):
pass
# api.add_resource(TaskApi, '/api/task/:id')
api.add_resource(TaskApi,
'/api/tasks',
'/api/task/:id'
)