mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-21 17:21:09 +01:00
81 lines
2.0 KiB
Python
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'
|
|
)
|